在DLL中使用资源(一) 2010-11-17 16:02
来源:互联网 发布:软件编程程序培训班 编辑:程序博客网 时间:2024/06/05 19:42
在DLL中使用资源(一)
现在最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。
1.Win32 DLL
在Win32 DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义你自己的对话框回调函数处理对话框收到的消息。下面通过一个具体实例来学习如何在Win32 DLL中使用对话框,可以按照以下步骤来完成这个例子:
1)在VC菜单中File->New新建一个命名为UseDlg的Win32 Dynamic-Link Library工程,下一步选择A simple DLL project。
2)在VC菜单中Insert->Resource添加一个ID为IDD_DLG_SHOW的Dialog资源,将此Dialog上的Cancel按钮去掉,仅保留OK按钮。再添加一个ID为IDD_ABOUTBOX的对话框,其Caption为About。保存此资源,将资源文件命名为UseDlg.rc。并将resource.h和UseDlg.rc加入到工程里面。
3)在UseDlg.app中包含resource.h,并添加如下代码:
HINSTANCE hinst = NULL;
HWND hwndDLG = NULL;
BOOL CALLBACK DlgProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam);
BOOL CALLBACK AboutProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam);
extern "C" __declspec(dllexport) void ShowDlg();
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
hinst = (HINSTANCE)hModule;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
extern "C" __declspec(dllexport) void ShowDlg()
{
hwndDLG = CreateDialog(hinst,MAKEINTRESOURCE(IDD_DLG_SHOW),
NULL,(DLGPROC)DlgProc);
ShowWindow(hwndDLG, SW_SHOW);
}
BOOL CALLBACK DlgProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
if(LOWORD(wParam)==IDOK)
DialogBox(hinst,MAKEINTRESOURCE(IDD_ABOUTBOX),
hDlg,(DLGPROC)AboutProc);
return TRUE;
case WM_CLOSE:
DestroyWindow(hDlg);
hwndDLG = NULL;
return TRUE;
}
return FALSE;
}
BOOL CALLBACK AboutProc(HWND hDlg, UINT message,
WPARAM wParam, LPARAM lParam)
{
switch(message)
{
case WM_CLOSE:
EndDialog(hDlg,NULL);
hwndDLG = NULL;
return TRUE;
}
return FALSE;
}
- 在DLL中使用资源(一) 2010-11-17 16:02
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(一)
- 在DLL中使用资源(二) 2010-11-17 16:04
- 在DLL中运用资源(一)
- 在dll上使用资源(一)
- 在DLL中使用资源(二)
- 在DLL中使用资源(转)
- 在DLL中使用资源(二)
- 在DLL中使用资源(二)
- 在DLL中使用资源(二)
- 在DLL中使用资源(二)
- Hibernate+struts1整合异常:antlr.collections.AST.getLine()I
- 已有系统中采购的审批设置
- 如何使用反编译软件破解android的布局文件
- AnyChat Platform Core SDK 2010-11-16 23:09
- SQL Server 2012 Express LocalDB
- 在DLL中使用资源(一) 2010-11-17 16:02
- Flex 回调函数的应用
- C++题目
- 关于指针和指向指针的指针(C,C++)
- 在DLL中使用资源(二) 2010-11-17 16:04
- 消息模式Toast.makeText用法
- php学习笔记(三十七)smarty中的变量调节器使用
- enq: TX - row lock contention
- Cocos2d-x 结合Box2D开发Android游戏配置方法