| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> vc >> 组件 >> 文章正文
在DLL中使用资源(一)        【字体:
在DLL中使用资源(一)
作者:-    文章来源:-    点击数:    更新时间:2006-4-20

在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_IN99vDIALOG:

       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);

[1] [2] [3] [4] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • MFC DLL向导(一)

  • 在DLL中使用资源(二)

  • 用自删除dll实现应用程序的安…

  • 例程详析动态链接库

  • 如何编写控制面板程序

  • MFC DLL向导(二)

  • 在MFC扩展DLL中输出对话框

  • 在存储过程中调用外部的动态…

  • BCB 编写 DLL 终极手册

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |