C语言这里哪出错了,对话框出不来,加printf调试也输出不了?

感谢大佬

这是一个windows的GUI程序,关键的问题是运行环境不知道是不是对的。

如果是visual C++里面的GUI程序,入口函数并不是main(),这个是windows框架帮你做掉了。

windows的GUI入口函数是WinMain()

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow)
{
//创建模态对话框
/* 需要把整型转换成字符串类型 */
/* 没有父窗口 值为 NULL */
DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN_DLG), NULL, MainDlgProc);

return 0;
}
然后调试的方法也不要用printf。

switch (uMsg)
{
// 对话框初始化消息
case WM_INITDIALOG:
// 此时对话框还没有显示 但是对话框已经创建好了
MessageBox(hWnd, L"初始化", L"提示", MB_OK);
// 设置对话框标题 [如果对话框没有设置好 不能给对话框设置标题]
SetWindowText(hWnd,L"这是一个对话框程序");
break;
}
可以直接用MessageBox可以弹出消息框。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-20
关于对话框和printf的问题,由于Windows GUI程序和控制台程序的工作方式不同,printf函数不能直接在GUI程序中使用。但是,您可以使用OutputDebugString函数来将调试信息输出到调试器:
这样,当您运行程序并附加调试器时,调试器中将显示1111111。如果您使用的是Visual Studio,输出将显示在“输出”窗口的“调试”选项卡中。
第2个回答  2023-04-20
只有“windows”程序才能弹出对话框。你这个以main开头的是console的,不会有对话框支持的
windows编程是复杂的,需要系统学,不要随便看个函数就写代码
第3个回答  2023-04-20
这个代码无论如何出不来对话框呀,你都没有没有初始化主窗口的句柄。
相似回答