VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 655|回复: 3

DialogBoxIndirectParamA()函数嗲用失败问题,0xx5

[复制链接]
69_avatar_middle
最佳答案
1 
在线会员 发表于 2019-5-30 16:57:27 | 显示全部楼层 |阅读模式
3驿站币
不知道哪里的错误,头痛了好几天了,同样的代码,在qt中编译通过
QQ截图20190530165553.png

最佳答案

查看完整内容

MSDN描述 INT_PTR DialogBoxIndirectParamA( HINSTANCE hInstance, LPCDLGTEMPLATEA hDialogTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam ); If the function fails because the hWndParent parameter is invalid, the return value is zero. The function returns zero in this case for compatibility with previous versions of Windows. If ...




上一篇:咨询关于VC的重画问题
下一篇:WinHTTP连接https网站,出现无法连接到服务器的问题,这要怎么解决??
75_avatar_middle
最佳答案
0 
在线会员 发表于 2019-5-30 16:57:28 | 显示全部楼层
MSDN描述
INT_PTR DialogBoxIndirectParamA(
  HINSTANCE       hInstance,
  LPCDLGTEMPLATEA hDialogTemplate,
  HWND            hWndParent,
  DLGPROC         lpDialogFunc,
  LPARAM          dwInitParam
);
If the function fails because the hWndParent parameter is invalid, the return value is zero.
The function returns zero in this case for compatibility with previous versions of Windows.
If the function fails for any other reason, the return value is –1.
To get extended error information, call GetLastError.
如果函数失败,因为hWndParent 参数不合法,返回值为 0,这时兼容先前windows版本。
如果其它原因,返回值为-1,要获取更多的错误信息,调用GetLastError()
你应该用GetLastError()确认具体错误。


还有这些关于对话框模板的要求。
In a standard dialog box template, the DLGTEMPLATE structure and each of the DLGITEMTEMPLATE structures must be aligned on DWORD boundaries. The creation data array that follows a DLGITEMTEMPLATE structure must also be aligned on a DWORD boundary. All of the other variable-length arrays in the template must be aligned on WORD boundaries.
In an extended dialog box template, the DLGTEMPLATEEX header and each of the DLGITEMTEMPLATEEX control definitions must be aligned on DWORD boundaries. The creation data array, if any, that follows a DLGITEMTEMPLATEEX structure must also be aligned on a DWORD boundary. All of the other variable-length arrays in the template must be aligned on WORD boundaries.
All character strings in the dialog box template, such as titles for the dialog box and buttons, must be Unicode strings.

你那temp->cx=0.temp->cx=0,宽高都为0,即使正确窗口也没法显示。

再看
void DialogBoxA(
   HINSTANCE hInstance,
   LPCTSTR lpTemplate,
   HWND hWndParent,
   DLGPROC lpDialogFunc
);
参数:
HINSTANCE
A handle to the module which contains the dialog box template. If this parameter is NULL, then the current executable is used.
包含对话框模板模块的句柄。如果为NULL,用当前执行地。
你执行在线程里,而资源在APP里,线程里,它怎么能找到。把app里的HINSTANCE 弄过来吧,不能为NULL。
也可用GetModuleHandle(NULL)试试吧。只是不知道在你那行不行。它必须是包含资源的句柄。








51_avatar_middle
最佳答案
82 
online_admins 发表于 2019-5-30 23:18:41 | 显示全部楼层
放到一个 UI 线程中试试,普通的工作线程恐怕不行,详见:
https://microsoft.public.vc.mfc. ... ithout-message-loop
69_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2019-5-31 10:38:00 | 显示全部楼层
Syc 发表于 2019-5-30 23:18
放到一个 UI 线程中试试,普通的工作线程恐怕不行,详见:
https://microsoft.public.vc.mfc.narkive.com/ ...

老大,我基础不太好,添加ui线程,不太懂,可是我换一个函数,也是调用失败
8EJVP]V_D}_[FH8[3{QKCFM.png
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

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

关闭

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

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

GMT+8, 2020-10-21 21:06

Powered by CcTry.CoM

© 2009-2020 cctry.com

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