VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 209|回复: 7
打印 上一主题 下一主题

在dll中使用DialogBox创建窗口 不能显示

[复制链接]
86_avatar_middle
最佳答案
0 
跳转到指定楼层
1#
online_vip 发表于 2020-1-21 10:45:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
老哥们帮忙看看  在dll中创建窗体 但是不会显示 是什么原因 我看到他们的教程是可以显示的 为什么我的不可以

在dll中使用DialogBox创建窗口 不能显示 hook.rar (10.92 KB, 下载次数: 1)


  1. BOOL APIENTRY DllMain( HMODULE hModule,
  2.                        DWORD  ul_reason_for_call,
  3.                        LPVOID lpReserved
  4.                                          )
  5. {
  6.         switch (ul_reason_for_call)
  7.         {
  8.         case DLL_PROCESS_ATTACH:
  9.         OutputDebugString("已经插入进程");
  10. //        cTextOutHook.HookReady((DWORD)GetProcAddress(GetModuleHandle("Gdi32.dll"), "TextOutW"), (LPVOID)myTextOutW);
  11. //        cTextOutHook.StartHook();
  12.         DialogBox(hModule, MAKEINTRESOURCE(IDD_MAIN), NULL, &Dlgproc);
  13.         //CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)thred, hModule, NULL,NULL);
  14.                 break;
  15.         case DLL_THREAD_ATTACH:
  16.         case DLL_THREAD_DETACH:
  17.         case DLL_PROCESS_DETACH:
  18.                 break;
  19.         }
  20.         return TRUE;
  21. }


  22. INT_PTR CALLBACK Dlgproc(HWND Arg1, UINT Arg2, WPARAM Arg3, LPARAM Arg4) {

  23.         switch (Arg2)
  24.         {
  25.         case WM_INITDIALOG:
  26.                 MessageBox(NULL, "开始hook", "标题", MB_OK);
  27.                 break;
  28.         case WM_CLOSE:
  29. //                EndDialog(hwndDlg, 1);
  30.                 break;
  31.         case WM_COMMAND:
  32.                 if (Arg3 == IDC_START_HOOK) {
  33.                         MessageBox(NULL, "开始hook", "标题", MB_OK);
  34.                        
  35.                 }
  36.                 break;
  37.         default:
  38.                 break;
  39.         }
  40.         return FALSE;



  41. }
复制代码




上一篇:关于编译器
下一篇:C语言打印文件出现方框
51_avatar_middle
最佳答案
33 
2#
online_admins 发表于 2020-1-21 10:49:47 | 只看该作者
DialogBox 本身是阻塞的,会卡住,所以你在 DLL_PROCESS_ATTACH 中调用是不行的,最好是再 DLL_PROCESS_ATTACH 中调用 CreateThread 新开一个线程,之后在新线程的线程函数中调用 DialogBox 去创建一个模态对话框,楼主不妨试试!
86_avatar_middle
最佳答案
0 
3#
ico_lz  楼主| 发表于 2020-1-21 10:57:47 | 只看该作者
Syc 发表于 2020-1-21 10:49
DialogBox 本身是阻塞的,会卡住,所以你在 DLL_PROCESS_ATTACH 中调用是不行的,最好是再 DLL_PROCESS_ATT ...

我尝试创建线程了  也还是不行 现在不是堵塞不堵塞的问题  是直接不显示  
51_avatar_middle
最佳答案
33 
4#
online_admins 发表于 2020-1-21 12:35:37 | 只看该作者
x635775712 发表于 2020-1-21 10:57
我尝试创建线程了  也还是不行 现在不是堵塞不堵塞的问题  是直接不显示

判断两个事儿:
1、判断下 DialogBox 的返回值,是否是创建失败了?
2、判断 WM_INITDIALOG 消息触发了吗?
20_avatar_middle
最佳答案
2 
5#
在线会员 发表于 2020-1-21 17:07:10 | 只看该作者
本帖最后由 VC6 于 2020-1-21 17:15 编辑

在调用DialogBox之前先加一句InitCommonControls();

在调用DialogBox之前先加一句InitCommonControls();

在调用DialogBox之前先加一句InitCommonControls();

重要的事情说三遍!
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       从Win95开始,Windows提供了一些新的Win32控件,称为通用控件. 如:Toolbar,Status bar,Tree view,List view,Animation,Hot-key,Image list,Tab等等.
这些控件的可执行代码都放在comctl32.dll中.要使用通用控件,必须加载comctl32.dll.
      可以调用函数InitCommonControls或InitCommonControlsEx来初始化控件.这两个函数都是动态链接库comctl32.dll中的函数,两个函数的原型如下:

void InitCommonControls(VOID);
BOOL InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls);
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
如果你的对话框没有用到上面的控件,那就当我没说吧。
如果你的对话框用到了上面说的控件,又没用调用InitCommonControls();进行初始化,后果就是无法显示对话框。




86_avatar_middle
最佳答案
0 
6#
ico_lz  楼主| 发表于 2020-1-22 10:32:57 | 只看该作者
VC6 发表于 2020-1-21 17:07
在调用DialogBox之前先加一句InitCommonControls();

在调用DialogBox之前先加一句InitCommonControls(); ...

尝试了 不行 但是已经解决了  对话框的属性style 设置为popup就可以了
86_avatar_middle
最佳答案
0 
7#
ico_lz  楼主| 发表于 2020-1-22 10:35:09 | 只看该作者
Syc 发表于 2020-1-21 12:35
判断两个事儿:
1、判断下 DialogBox 的返回值,是否是创建失败了?
2、判断 WM_INITDIALOG 消息触发了 ...

已经解决了  对话框的属性style 设置为popup就可以了
06_avatar_middle
最佳答案
0 
8#
在线会员 发表于 2020-1-22 22:34:33 | 只看该作者
学习中。。。。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-2-25 18:59

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表
时时彩平台排名 股票涨跌原理和机制 黑龙江36选7 北京快乐8 西瓜配资 黑龙江22选5 四川金7乐 配资平台排名 竞彩足球比分直播 云南时时彩 盈股在线配资 河北排列7 内蒙古快3 锦鲤配资 财人汇配资 甘肃11选5 吉林时时彩