求助!DialogBox的显示问题

C860 2012-12-25 01:12:33
本人菜鸟一只,刚刚入门Win32 API,在Win7环境下用VC6.0创建对话框,运行后出现如下问题,另附上资源文件代码,个人感觉代码没有问题,但是为什么就会显示成这鸟样?求大神指点
IDD_ABOUTDIALOG DIALOG DISCARDABLE  0, 0, 206, 94
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
FONT 8, "MS Sans Serif"
BEGIN
GROUPBOX "声明",IDC_STATIC,7,12,196,65
DEFPUSHBUTTON "确定",IDOK,155,28,39,15
PUSHBUTTON "取消",IDCANCEL,155,52,39,15
CTEXT "本软件所有权归XXX所有\n\n如有疑问请致电:10000\n\n或联系QQ:10000",
IDC_STATIC,20,26,117,43
END
...全文
227 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 5 楼 SXJIAKE 的回复:
是不是对话框消息处理函数返回了非零导致?
的确是这个原因!问题解决啦!谢谢你!
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 12 楼 arpnet99 的回复:
我调了一下才发现。VisualEleven一眼就看出来了,厉害啊
问题解决!非常感谢!
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 10 楼 VisualEleven 的回复:
Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the def……
万分感激!
这不是鸭头 2012-12-25
  • 打赏
  • 举报
回复
我调了一下才发现。VisualEleven一眼就看出来了,厉害啊
这不是鸭头 2012-12-25
  • 打赏
  • 举报
回复
BOOL CALLBACK AboutDialogProc(
			HWND hwnd,
			UINT message,
			WPARAM wParam,
			LPARAM lParam
			)
{
	switch(message)
	{
	case WM_INITDIALOG:
		return TRUE;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
			EndDialog(hwnd,IDOK);
		break;
		case IDCANCEL:
			EndDialog(hwnd,IDCANCEL);
		break;
		default:
			return FALSE;
		}
	break;
	}
	return TRUE;
}
26行 最后这个返回FALSE。不是TRUE
Eleven 2012-12-25
  • 打赏
  • 举报
回复
Typically, the dialog box procedure should return TRUE if it processed the message, and FALSE if it did not. If the dialog box procedure returns FALSE, the dialog manager performs the default dialog operation in response to the message.
Eleven 2012-12-25
  • 打赏
  • 举报
回复
引用 7 楼 C860_zy 的回复:
引用 4 楼 arpnet99 的回复: 贴出弹出对话框的代码和这个对话框初始化的代码 C/C++ code ? 123456789101112131415161718192021222324252627 BOOL CALLBACK AboutDialogProc( HWND hwnd, UINT message……
最后一个return改成return FALSE;
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 4 楼 arpnet99 的回复:
贴出弹出对话框的代码和这个对话框初始化的代码
case ID_MENU_ABOUTSOFTWARE:
			int dialogreturn = DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_ABOUTDIALOG),hwnd,AboutDialogProc);
			switch(dialogreturn)
			{
			case IDOK:
				MessageBox(hwnd,"OK!","Dialogreturn",MB_OK);
			break;
			case IDCANCEL:
				MessageBox(hwnd,"CANCEL!","Dialogreturn",MB_OK);
			break;
			}
		break;
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 4 楼 arpnet99 的回复:
贴出弹出对话框的代码和这个对话框初始化的代码
BOOL CALLBACK AboutDialogProc(
			HWND hwnd,
			UINT message,
			WPARAM wParam,
			LPARAM lParam
			)
{
	switch(message)
	{
	case WM_INITDIALOG:
		return TRUE;
	case WM_COMMAND:
		switch(LOWORD(wParam))
		{
		case IDOK:
			EndDialog(hwnd,IDOK);
		break;
		case IDCANCEL:
			EndDialog(hwnd,IDCANCEL);
		break;
		default:
			return FALSE;
		}
	break;
	}
	return TRUE;
}
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 3 楼 CometNet 的回复:
我用win7好几年了,也经常用VC6,没发现你说的问题.
难道是消息处理出现问题了?
「已注销」 2012-12-25
  • 打赏
  • 举报
回复
是不是对话框消息处理函数返回了非零导致?
这不是鸭头 2012-12-25
  • 打赏
  • 举报
回复
贴出弹出对话框的代码和这个对话框初始化的代码
邓学彬 2012-12-25
  • 打赏
  • 举报
回复
我用win7好几年了,也经常用VC6,没发现你说的问题.
C860 2012-12-25
  • 打赏
  • 举报
回复
引用 1 楼 CometNet 的回复:
你把样式改成下面这样试试,多一个WS_SYSMENU: STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 如果还是有问题,那很可能是你的代码里改了风格、颜色什么的.
谢谢你,不过我按你的说法改了之后还是不行,我在想是不是win7环境下运行的原因,毕竟VC6.0太久远了。。。
邓学彬 2012-12-25
  • 打赏
  • 举报
回复
你把样式改成下面这样试试,多一个WS_SYSMENU: STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 如果还是有问题,那很可能是你的代码里改了风格、颜色什么的.

15,980

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧