MOOC清华《VC++面向对象与可视化程序设计》第5章:对话框资源例程(模态对话框样例)

#include <windows.h>                      
#include "001.h"
HINSTANCE hInst;
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(	HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
	HWND hwnd ;
	MSG Msg ;
	HACCEL hAccel;
	WNDCLASS wndclass ;
    char lpszMenuName[]="Menu";
    char lpszClassName[] = "模态对话框"; 
    char lpszTitle[]= "模态对话框样例";
    wndclass.style = 0;                   
    wndclass.lpfnWndProc = WndProc ;    
	wndclass.cbClsExtra	= 0 ;          
	wndclass.cbWndExtra	= 0 ;          
	wndclass.hInstance = hInstance ;       
	wndclass.hIcon = LoadIcon( NULL, IDI_APPLICATION) ;   
    wndclass.hCursor = LoadCursor( NULL, IDC_ARROW) ;   
    wndclass.hbrBackground = (HBRUSH)GetStockObject( WHITE_BRUSH) ;   	
	wndclass.lpszMenuName =  lpszMenuName ;                       
	wndclass.lpszClassName = lpszClassName ;                   
   	if( !RegisterClass( &wndclass))       
	    {
		   MessageBeep(0) ;
		   return FALSE ;
	     }
	hwnd = CreateWindow(lpszClassName,     
						    lpszTitle,     
						    WS_OVERLAPPEDWINDOW,   
						    CW_USEDEFAULT, 
         		            CW_USEDEFAULT,
                        	CW_USEDEFAULT,
                        	CW_USEDEFAULT,    
							NULL,       
							NULL,      
							hInstance,    
							NULL);      

	ShowWindow( hwnd, nCmdShow) ;
	UpdateWindow(hwnd); 
	hInst=hInstance;
	hAccel=LoadAccelerators(hInst,lpszMenuName);      
	while( GetMessage(&Msg, NULL, 0, 0))
 		{  
   		  if (!TranslateAccelerator(hwnd,hAccel,&Msg))
      		{
	   			TranslateMessage( &Msg) ;
	   			DispatchMessage( &Msg) ;
       		}
  		}
	return Msg.wParam;      
}
    
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM  wParam,LPARAM  lParam)
{
	switch(message)
	{
    	case WM_COMMAND:
			switch(LOWORD(wParam))
			  {
				case IDM_OPEN:			//打开文件操作
        			//文件打开成功则显示消息框
       				MessageBox(hwnd,"文件已经打开!","文件打开",MB_OK);
       				break;
   				case IDM_SAVE:			//存储操作
        			//文件保存成功则显示消息框
       				MessageBox(hwnd,"文件保存成功!","文件保存",MB_OK);
					break;
   				case IDM_EXIT:
      				SendMessage(hwnd,WM_DESTROY,0,0);
        			break;
   				case IDM_ABOUT:		   //创建对话框
					DialogBox(hInst,"About",hwnd,(DLGPROC)DlgProc);
					break;
			 }
             break;
		case WM_DESTROY:          
   			PostQuitMessage(0);   
   			break;   
        default:                  
     		return  DefWindowProc(hwnd,message,wParam,lParam);			
	 }
	 return 0;
}

//对话框窗口处理函数
BOOL CALLBACK DlgProc(HWND hdlg,UINT message,WPARAM wParam,LPARAM lParam)
{
 switch(message)
   {
	case WM_INITDIALOG:     		//初始化对话框 
		return 1;
 	case WM_COMMAND:	 			//处理对话框消息 
    	switch (LOWORD(wParam))
   		{	case IDOK:              //关闭对话框  
              EndDialog(hdlg,0) ;
		}
		break ;
    case WM_CLOSE:
        EndDialog(hdlg, 0) ;
	    break ;
    }
    return 0;
}
  


#define IDM_OPEN 11
#define IDM_SAVE 13
#define IDM_EXIT 15
#define IDM_ABOUT 20

    #include <windows.h>
     #include "001.h"

     Menu MENU DISCARDABLE 
      {  
       POPUP "文件(&F)"
         {   
          MENUITEM "打开(&O)\t Ctrl+O",     IDM_OPEN
          MENUITEM SEPARATOR                           
          MENUITEM "保存(&S)\t Ctrl+S",     IDM_SAVE
          MENUITEM SEPARATOR                           
          MENUITEM "退出(&X)",              IDM_EXIT
          }

      POPUP "帮助(&H)"
        {
         MENUITEM "关于(&A)...",          IDM_ABOUT
        }
      }   

    Menu ACCELERATORS  
     {
       "^O",             IDM_OPEN                  
       "^S",             IDM_SAVE                 
     }

    About DIALOG  10, 10, 100, 50
    STYLE WS_POPUP | WS_CAPTION | WS_SYSMENU
     CAPTION "关于"
     FONT 18, "楷体"  //定义对话框中的文本字体类型及大小
        {
         CTEXT           "Windows模态对话框",-1,13,10,80,10
         DEFPUSHBUTTON   "确定",IDOK,35,30,30,12
        }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值