VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 374|回复: 7

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

[复制链接]
86_avatar_middle
最佳答案
0 
online_vip 发表于 2020-1-21 10:45:54 | 显示全部楼层 |阅读模式
老哥们帮忙看看  在dll中创建窗体 但是不会显示 是什么原因 我看到他们的教程是可以显示的 为什么我的不可以

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




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

我尝试创建线程了  也还是不行 现在不是堵塞不堵塞的问题  是直接不显示  
51_avatar_middle
最佳答案
82 
online_admins 发表于 2020-1-21 12:35:37 | 显示全部楼层
x635775712 发表于 2020-1-21 10:57
我尝试创建线程了  也还是不行 现在不是堵塞不堵塞的问题  是直接不显示

判断两个事儿:
1、判断下 DialogBox 的返回值,是否是创建失败了?
2、判断 WM_INITDIALOG 消息触发了吗?
20_avatar_middle
最佳答案
4 
在线会员 发表于 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 
ico_lz  楼主| 发表于 2020-1-22 10:32:57 | 显示全部楼层
VC6 发表于 2020-1-21 17:07
在调用DialogBox之前先加一句InitCommonControls();

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

尝试了 不行 但是已经解决了  对话框的属性style 设置为popup就可以了
86_avatar_middle
最佳答案
0 
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 
在线会员 发表于 2020-1-22 22:34:33 | 显示全部楼层
学习中。。。。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2020-10-21 01:59

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表