在COM中显示对话框(转)

    技术2022-05-19  20

     

    其实在COM中显示对话框和在DLL中是一样的,只不过在DLL中我们调用的是一个外导的函数,而在COM中,我们则通过接口来调用。下面是在COM中创建对话框的基本步骤: 1、利用ATL创建一个标准的COM程序。取名为AtlDiaolg;     2、在这个COM程序中插入一个对话框资源,对话框ID为IDD_ATLDIALOG.打资源的头文件(Resource.h)加 入到工程当中 3、创建一个接口,用于外部的访问。接口名为IAtlDlg 4、在这个接口中添加一个方法:ShowDlg(HWND hWndParent).     HRESULT ShowDlg(HWND hWndParent)     {         HWND hWnd =           CreateDialog(_Module.m_hIns, MAKEINTRESOURCE(IDD_ATLDIALOG), hWndParent, DlgProc);         ShowWindow(hWnd, SW_SHOW);     }     5、定义一个对话框的消息响应过程:     BOOL __stdcall DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)     {         switch (uMsg)         {         case WM_CLOSE:             DestroyWindow(hWnd);             break;         default:             break;         }         return FALSE;     } 这样,在客户程序中,我们就可以通过COM接口来调用COM中的对话框了: // 包含COM里面的两个文件 #include "AtlDialog.h"         // 接口定义文件 #include "AtlDialog_i.c"       // GUID定义文件 // 初始化COM库 CoInitialize(NULL); // 使用CComPtr,让其在作用域过后自动释放接口 CComPtr pAtlDlg = NULL; // 取得相应的COM接口 HRESULT hr = CoCreateInstance(CLSID_AtlDialog, NULL, CLSCTX_INPROC_SERVER,                  IID_IAtlDlg, (void**)&pAtlDlg); if (SUCCEEDED(hr)) {     pAtlDlg->ShowDlg(NULL);      // 参数为对话框所在的父窗口的句柄 } // 使用完成之后要记得反初始化COM库 CoUninitialize();


    最新回复(0)