资源对话框返回-1
Resource DialogBox is returning -1
我已经使用资源编辑器(对话编辑器?)创建了我的对话框作为资源
它没有什么特别的,只是两个组框,两个按钮,一个拆分按钮,两个图片框,3个静态标签,3个编辑框,3个旋转控件,3个系统链接和一个进度条。
当我按Ctrl+T测试对话框时,它似乎工作正常,但当我按F5调试程序时,对话框从未出现,程序退出代码-1 (0xffffffff)
下面是我用来调用对话框的代码:#include <Windows.h>
#include "resource.h"
BOOL CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
switch (Msg)
{
case (WM_COMMAND):
switch (LOWORD(wParam))
{
default:
break;
}
break;
default:
return FALSE;
}
return FALSE;
}
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
int ret = DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINWINDOW), NULL, DlgProc);
int err = GetLastErro(); // This gives 0
return ret; // This gives -1
}
我在DlgProc
中还没有任何东西,因为我只想让对话框开始显示。
如果我在DlgProc
中设置了一个断点,那么这些是它接收到的消息:
48、85、297、273、273、144、2、130.
我查过了,翻译过来是:
WM_SETFONT
WM_NOTIFYFORMAT
???
WM_COMMAND
WM_COMMAND
???
WM_DESTROY
WM_NCDESTROY
有人知道我做错了什么吗?编辑:
:
我找到了解决这个问题的办法!我们最初认为这是一个损坏的RC文件,但我意识到我所做的测试RC文件具有除SysLink之外的每种类型的控制。当我添加SysLink时,同样的事情发生了。我试着包括ComCtl32。我还尝试包括公共控件头并调用InitCommonControls
,但这没有任何作用。
我把所有东西都放回原来的样子,并添加了这个预处理指令来修复它:
#pragma comment(linker,"/manifestdependency:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"")
这就是问题所在。如果没有这个指令,对话框将不会初始化,因为SysLinks!
您不需要为Dialog进程调用DefWindowProc
。它们是由操作系统为您完成的。简写return FALSE;
常用控件!进度条,作为一个例子-你需要链接commctrl dll,包括commctrl头,并调用InitCommonControlsEx。这将导致您的程序执行并立即终止。
在资源编辑器中测试对话框实际上并不执行任何其他代码——它只是绘制对话框,在适当的位置绘制子窗口,然后坐在那里盯着你看。你的dlgproc可能是非常不正确的,而资源编辑器不会呜呜叫。
默认情况下,你的对话过程应该返回0,而不是传递给默认的窗口进程。
一旦你开始滚动,你会处理(一些)你的对话框接收到的消息,像这样:
switch(msg) {
case WM_COMMAND:{
switch(LOWORD(wParam)) {
// do stuff here when a child window is manipulated
}
break;
}
- 如何在Qbutton的帮助下更改Q对话框的宽度
- 当对话框被接受时,如何用参数调用槽
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 如何多次询问来自QML对话框的输入?
- 选择文件对话框错误
- 自定义对话框(源自QDialog)不会关闭(Android)
- 如何在另一个线程中关闭 MFC 模式对话框并获取对话框返回值?
- OpenFileName对话框返回亚洲字母而不是文件路径
- 根据通过/失败返回,在MFC对话框中更改LED颜色
- 使用 firebreath 插件打开文件夹对话框并异步返回文件夹选择,这样 java 脚本就不会被阻止
- 主对话框在命令消息处理程序返回之前销毁
- Qt 5.6-从自定义Q对话框返回2 int
- MFC 对话框返回向量
- 从线程 MFC 将返回值发送到对话框
- Win32“浏览文件夹”对话框:用户创建新文件夹时返回错误的文件夹
- 资源对话框返回-1
- 什么时候对话框返回QDialog::Rejected ?
- 显示对话框后无法将焦点返回到主窗口
- Rich Edit控件更改对话框返回值行为
- 是否可以从对话框的 DoModal 函数返回自定义值?