资源描述:
《在dll中产生对话框的方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在DLL中产生对话框的方法一(Win32DLL)什么是Dll?Standsfor"DynamicLinkLibrary."ADLL(.dll)filecontainsalibraryoffunctionsandotherinformationthatcanbeaccessedbyaWindowsprogram.Whenaprogramislaunched,linkstothenecessary.dllfilesarecreated.Ifastaticlinkiscreated,the.dllfileswillbeinuseaslongastheprogramis
2、active.Ifadynamiclinkiscreated,the.dllfileswillonlybeusedwhenneeded.Dynamiclinkshelpprogramsuseresources,suchasmemoryandharddrivespace,moreefficiently.对话框:对话框可以分为modal和modeless两种。在Win32Dll中创建modal对话框。在一个Win32Dll中创建modal对话框非常简单,我们都知道,Win32函数DialogBox能够创建一个modal对话框,并且modal对话框的消息是独立于主程序
3、消息循环的,所以可以直接在Dll内部建立对话框自己的窗口过程。下面就是一个在Win32Dll中创建modal对话框的示例://name:Modal_Dialog.cpp#include#include"resource.h"BOOLCALLBACKDlgProc(HWNDhwnd,UINTMsg,WPARAMwParam,LPARAMlParam){switch(Msg){caseWM_INITDIALOG:returnTRUE;caseWM_COMMAND:switch(wParam){caseIDOK:MessageBox(NULL,"
4、这是一个modal对话框的例子","提示",MB_OK);EndDialog(hwnd,0);returnTRUE;}break;}returnFALSE;}extern"C"__declspec(dllexport)voidShowDialog(){HINSTANCEhinst;hinst=LoadLibrary("Modal_Dialog.dll");//获取库所在的实例句柄DialogBox(hinst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,DlgProc);FreeLibrary(hinst);}//name:Test.cp
5、p……typedefvoid(*fp)();HINSTANCEhDll;fpShow;hDll=LoadLibrary("Modal_Dialog.dll");Show=(fp)GetProcAddress(hDll,"ShowDialog");(*Show)();FreeLibrary(hDll);……在Win32Dll中创建modeless对话框。与modal对话框不同,modeless对话框的消息是要经过主程序消息循环的,这样一来,就必须在调用该Dll的主程序中处理对话框的消息循环,这就无法达到利用Dll来完成组件化开发的要求。其实我们可以人为的Model
6、ess对话框创建一个窗口类,我们知道窗口过程是属于窗口类的,这样一来就有了主窗口的消息循环。//name:Modeless_Dialog.cpp#include#include"resource.h"LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);BOOLCALLBACKDlgProc(HWND,UINT,WPARAM,LPARAM);extern"C"int__declspec(dllexport)ShowDialog(){staticTCHARszAppName[]=TEXT("Model
7、ess_Dialog");HWNDhwnd;MSGmsg;WNDCLASSwndclass;HINSTANCEhInstance;HWNDhDialog;hInstance=LoadLibrary("Modeless_Dialog.dll");wndclass.style=CS_HREDRAW
8、CS_VREDRAW;wndclass.lpfnWndProc=WndProc;wndclass.cbClsExtra=0;wndclass.cbWndExtra=DLGWINDOWEXTRA;//Note!wndclass.hInstance=hInstance;wnd
9、class.hIcon=