关于非模态对话框

VirtualRookit VirtualRookit 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
//帮看下错在哪,运行时整个对话框界面呈现未响应状态
#include <windows.h>
#include <iostream>
#include "resource.h"
using namespace std;
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
void ShowError();
void main()
{
HWND hwnd;
//要设置Visible属性TRUE
hwnd = ::CreateDialog(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
if (hwnd == NULL)
{
ShowError();
}
system("pause");
}

void Dlg_OnCommand(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
cout << "WM_COMMAND" << endl;
}

INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
//对话框整个创建及显示过程都没有产生该消息
case WM_CREATE: cout << "WM_CREATE" << endl; break;

//对话框初始化时发送一个该消息
case WM_INITDIALOG: cout << "WM_INITDIALOG" << endl; break;

//关闭按钮发送一个,任务栏"关闭窗口"时发送一个,任务管理器结束窗口发送两个该消息
case WM_CLOSE:
cout << "WM_CLOSE" << endl;
EndDialog(hwndDlg, 0xff);//用于结构模态对话框,并设置DialogBox()返回值
break;

//此消息在对话框摧毁时发送,例如调用EndDialog()后发送
case WM_DESTROY: cout << "WM_DESTROY" << endl; break;

//控件消息,包括右上角的最大,最小,关闭三个按钮,当按关闭按钮调用EndDialog()有时就没再发送WM_COMMAND
case WM_COMMAND: Dlg_OnCommand(hwndDlg, uMsg, wParam, lParam); break;

//其它WM_KEYDOWN/UP, WM_LBUTTONDOWN/UP....
default: break;
}

return FALSE; //这里肯定要返回 FALSE
}

void ShowError()
{
LPTSTR lpMsgBuf;
::FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
::GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0,
NULL);
::MessageBox(NULL, lpMsgBuf, NULL, MB_OK | MB_ICONSTOP);
::LocalFree(lpMsgBuf);//释放操作系统开辟的缓冲区地址
}
...全文

相关推荐

VC MFC非模态对话框的实现方法

众所周知的,MFC中非模态对话框在显示后,程序其他窗口仍能正常运行,可以响应用户输入,还可以相互切换。本文就来给大家讲解一下非模态对话框的实现方法: 一、非模态对话框的对话框资源和对话框类 实际上,模态对话框和非模态对话框在创建对话框资源和生成对话框类上是没有区别的,因此,在创建模态对话框时所创建的IDD_TIP_DIALOG对话框资源和CTipDlg类都不需要修改。 二、创建及显示非模态对话框的步骤 需要修改的是,对话框类实例的创建和显示,也就是之前在CAdditionDlg::OnBnClickedAddButton()函数体中添加的对话框显示代码。下面是具体步骤: 1. 在Additio

weixin_38567813

MFC单文档弹出非模态对话框绘图

利用MFC实现单文档菜单响应,生成并显示非模态对话框,并对其进行实时地销毁,对话框还实现了绘图的功能(画直线),一例多用,自己花了一上午搞出来的

shulinwindy

MFC 非模态对话框教程

对非模式对话框常常感到困惑的新手程序员,如果您记住几个漂亮的小动作,然后编程非模式对话框,将非常简单。

reibatman

vc++制作非模态对话框

VC非模式对话框

lj_70596

MFC学习之模态对话框和非模态对话框

基于MFC向导实现的模态对话框和非模态对话框的代码,程序是基于vs2013写的,可以完美运行,适合新手学习,大佬请忽略!

qq_34544416
评论 6
收藏 已收藏
分享
返回顶部
VirtualRookit
VC/MFC 16,550 成员 421,606 内容