//帮看下错在哪,运行时整个对话框界面呈现未响应状态
#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);//释放操作系统开辟的缓冲区地址
}
#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);//释放操作系统开辟的缓冲区地址
}
void main()
{
MSG msg;
HWND hwnd;
//要设置Visible属性TRUE
hwnd = ::CreateDialog(::GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
if (hwnd == NULL)
{
ShowError();
}
while(GetMessage(&msg,NULL,NULL,NULL))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg); } system("pause");
}