Windows程序设计 第十一章 模态对话框

来源:互联网 发布:2017网络婚恋诈骗 编辑:程序博客网 时间:2024/06/06 07:07

Windows程序设计 第十一章 模态对话框 

P386--393

//

// winmain.cpp

#include <windows.h>#include "resource.h"#include "mdebug.h"static TCHAR szAppName[] = TEXT ("Win32App") ; //创建的ICON资源的ID必须也是这个字符串(包括双引号).static TCHAR szAppNameMenu[] = TEXT ("Win32AppMenu");//创建的菜单资源的ID必须也是这个字符串(包括双引号).LRESULT CALLBACK WndProc      (HWND, UINT, WPARAM, LPARAM) ;BOOL    CALLBACK AboutDlgProc (HWND, UINT, WPARAM, LPARAM) ;int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,                    PSTR szCmdLine, int iCmdShow){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.hCursor       = LoadCursor (hInstance, MAKEINTRESOURCE(IDI_ICON1)) ;//wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);wndclass.hbrBackground = GetSysColorBrush(COLOR_3DFACE);wndclass.lpszMenuName  = szAppNameMenu;wndclass.lpszClassName = szAppName;if (!RegisterClass (&wndclass)){MessageBox (NULL, TEXT ("This program requires Windows NT!"),szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow (szAppName, TEXT ("Win32App 模版......"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;ShowWindow (hwnd, iCmdShow) ;UpdateWindow (hwnd) ; while (GetMessage (&msg, NULL, 0, 0)){TranslateMessage (&msg) ;DispatchMessage (&msg) ;}return msg.wParam ;}LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){static HINSTANCE hInstance ;switch (message){case WM_CREATE :debugInit();hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;return 0 ;case WM_COMMAND :{    int id = LOWORD (wParam);mPuts(" LOWORD (wParam) = %d\n",id);}switch (LOWORD (wParam)){case IDM_APP_ABOUT :// 在resource.rc资源中创建的Dialog的ID必须修改为"ABOUTBOX"// 也就是说DialogBox()的第二个参数必须是资源脚本中定义的对话框的字符串名称// 如果不是字符串,是数字标识符,那就用MAKEINTRESOURCE()宏来转换DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;break ;}return 0 ;   case WM_DESTROY :debugFree();PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;}BOOL CALLBACK AboutDlgProc (HWND hDlg, UINT message,                             WPARAM wParam, LPARAM lParam){switch (message){case WM_INITDIALOG :return TRUE ;case WM_COMMAND :switch (LOWORD (wParam)){case IDOK :case IDCANCEL :EndDialog (hDlg, 0) ;return TRUE ;}break ;}return FALSE ;}

// resource.h

// resource.h//{{NO_DEPENDENCIES}}// Microsoft Developer Studio generated include file.// Used by resource.rc//#define IDM_APP_ABOUT                   40001// Next default values for new objects// #ifdef APSTUDIO_INVOKED#ifndef APSTUDIO_READONLY_SYMBOLS#define _APS_NEXT_RESOURCE_VALUE        104#define _APS_NEXT_COMMAND_VALUE         40002#define _APS_NEXT_CONTROL_VALUE         1000#define _APS_NEXT_SYMED_VALUE           101#endif#endif

// resource.rc

// resource.rc 在VC中Insert...resource后,编译时要求保存创建的资源为*.rc文件,这个文件....可以用记事本编写//Microsoft Developer Studio generated resource script.//#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 2 resource.//#include "afxres.h"/////////////////////////////////////////////////////////////////////////////#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////// Chinese (P.R.C.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif //_WIN32///////////////////////////////////////////////////////////////////////////////// Menu//WIN32APPMENU MENU DISCARDABLE BEGIN    POPUP "Help"    BEGIN        MENUITEM "Me",                          IDM_APP_ABOUT    ENDEND#ifdef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// TEXTINCLUDE//1 TEXTINCLUDE DISCARDABLE BEGIN    "resource.h\0"END2 TEXTINCLUDE DISCARDABLE BEGIN    "#include ""afxres.h""\r\n"    "\0"END3 TEXTINCLUDE DISCARDABLE BEGIN    "\r\n"    "\0"END#endif    // APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Icon//// Icon with lowest ID value placed first to ensure application icon// remains consistent on all systems.Win32App                ICON    DISCARDABLE     "icon1.ico"///////////////////////////////////////////////////////////////////////////////// Dialog//ABOUTBOX DIALOG DISCARDABLE  0, 0, 187, 94STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENUCAPTION "Dialog"FONT 10, "System"BEGIN    DEFPUSHBUTTON   "OK",IDOK,130,7,50,14    PUSHBUTTON      "Cancel",IDCANCEL,130,24,50,14    LTEXT           "Dialog......",IDC_STATIC,30,41,112,17END///////////////////////////////////////////////////////////////////////////////// DESIGNINFO//#ifdef APSTUDIO_INVOKEDGUIDELINES DESIGNINFO DISCARDABLE BEGIN    "ABOUTBOX", DIALOG    BEGIN        LEFTMARGIN, 7        RIGHTMARGIN, 180        TOPMARGIN, 7        BOTTOMMARGIN, 87    ENDEND#endif    // APSTUDIO_INVOKED#endif    // Chinese (P.R.C.) resources/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 3 resource.///////////////////////////////////////////////////////////////////////////////#endif    // not APSTUDIO_INVOKED


// --


//---



//---