非模式对话框上 点击按钮,弹出模式对话框
结果模式对话框关闭不了
主窗口---------------非模式
子窗口--------------模式
结果模式对话框上的 按钮不响应,且也关闭不了
郁闷
/*------------------------------------------ ABOUT1.C -- About Box Demo Program No. 1 (c) Charles Petzold, 1998 ------------------------------------------*/#include <windows.h>#include "resource.h"static HINSTANCE g_hInst=NULL;LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;BOOL CALLBACK MainDlgProc (HWND, UINT, WPARAM, LPARAM) ; //主对话框BOOL CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ; //关于对话框int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){// static TCHAR szAppName[] = TEXT ("About1") ;// MSG msg ;// HWND hwnd ;// WNDCLASS wndclass ;// // wndclass.style = CS_HREDRAW | CS_VREDRAW ;// wndclass.lpfnWndProc = WndProc ;// wndclass.cbClsExtra = 0 ;// wndclass.cbWndExtra = 0 ;// wndclass.hInstance = hInstance ;// wndclass.hIcon = LoadIcon (hInstance, szAppName) ;// wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;// wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;// wndclass.lpszMenuName = szAppName ;// wndclass.lpszClassName = szAppName ;// // if (!RegisterClass (&wndclass))// {// MessageBox (NULL, TEXT ("This program requires Windows NT!"),// szAppName, MB_ICONERROR) ;// return 0 ;// }// // hwnd = CreateWindow (szAppName, TEXT ("About Box Demo Program"),// WS_OVERLAPPEDWINDOW,// CW_USEDEFAULT, CW_USEDEFAULT,// CW_USEDEFAULT, CW_USEDEFAULT,// NULL, NULL, hInstance, NULL) ;// // ShowWindow (hwnd, iCmdShow) ;// UpdateWindow (hwnd) ; HWND g_Dlghwnd; MSG msg; g_hInst=hInstance; g_Dlghwnd=CreateDialog(g_hInst,MAKEINTRESOURCE(IDD_MAIN_DIALOG),NULL,MainDlgProc); while (GetMessage (&msg, NULL, 0, 0)) { if(g_Dlghwnd==NULL || IsDialogMessage(g_Dlghwnd,&msg)) TranslateMessage (&msg) ; DispatchMessage (&msg) ; } return msg.wParam ; //DialogBox(g_hInst,MAKEINTRESOURCE(IDD_MAIN_DIALOG),NULL,MainDlgProc);}BOOL CALLBACK MainDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_COMMAND : switch (LOWORD (wParam)) { case IDOK : case IDCANCEL : // EndDialog (hDlg, 0) ; DestroyWindow(hDlg); return TRUE ; case IDC_BUTTON1: //关于对话框的id DialogBox (g_hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hDlg, AboutDlgProc) ; } break ; case WM_CLOSE: DestroyWindow(hDlg); break; default: return DefWindowProc(hDlg,message,wParam,lParam); } return FALSE ;}BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam){ switch (message) { case WM_COMMAND : switch (LOWORD (wParam)) { case IDOK : case IDCANCEL : EndDialog (hDlg, 0) ; return TRUE ; } break ; case WM_CLOSE: EndDialog(hDlg,0); default: return DefWindowProc(hDlg,message, wParam,lParam); } return FALSE ;}