Win32窗口程序实例(转)

作者在 2014-01-28 00:42:41 发布以下内容
  1. #include <windows.h>  

  2. //Win32窗口程序实例  

  3. //声明消息处理函数  

  4. LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);  

  5. char szClassName[]="windowsclass";  

  6. char szAppTitle[]="WinApi窗口实例";  

  7. int PASCAL WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )  

  8. {  

  9.       

  10.     HWND hMainWnd;//窗口句柄  

  11.     MSG msg;//消息  

  12.     WNDCLASS winclass;//窗口结构体  

  13.     if(!hPrevInstance)  

  14.     {  

  15.         winclass.style=CS_HREDRAW|CS_VREDRAW;//窗口风格  

  16.         winclass.lpfnWndProc=WndProc;//注册消息处理函数  

  17.         winclass.cbWndExtra=0;//附加参数  

  18.         winclass.cbClsExtra=0;//附加参数  

  19.         winclass.hInstance=hInstance;//当前应用程序句柄  

  20.         winclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载窗口图标  

  21.         winclass.hCursor=LoadCursor(NULL,IDC_ARROW);//窗口光标  

  22.         winclass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);//设置窗口背景为浅灰色  

  23.         winclass.lpszMenuName=NULL;//窗口菜单为空  

  24.         winclass.lpszClassName=szClassName;//给窗体结构体命名  

  25.         RegisterClass(&winclass);//注册窗口  

  26.     }  

  27.     hMainWnd=CreateWindow(szClassName,//窗口结构体名称  

  28.         szAppTitle,//窗口标题  

  29.         WS_OVERLAPPEDWINDOW,//窗口风格为可重叠窗口  

  30.         CW_USEDEFAULT,CW_USEDEFAULT,//x,y坐标  

  31.         CW_USEDEFAULT,CW_USEDEFAULT,//窗口的宽度,高度  

  32.         NULL,NULL,hInstance,NULL);  

  33.     ShowWindow(hMainWnd,SW_SHOWNORMAL);//显示窗口  

  34.     UpdateWindow(hMainWnd);//更新窗口,最大化  

  35.     //建立消息循环  

  36.     while(GetMessage(&msg,NULL,0,0))  

  37.     {  

  38.           

  39.         TranslateMessage(&msg);  

  40.         DispatchMessage(&msg);  

  41.           

  42.     }  

  43.     return msg.wParam;  

  44. }  

  45. LRESULT CALLBACK WndProc(HWND hMainwnd,UINT message,WPARAM wParam,LPARAM lParam)  

  46. {  

  47.     switch(message)  

  48.     {  

  49.           

  50.     case WM_KEYDOWN://键盘按下  

  51.         {  

  52.               

  53.             MessageBox(hMainwnd,"键盘按下了","提示",MB_OK);  

  54.             break;  

  55.         }  

  56.     case WM_LBUTTONDOWN://鼠标按下  

  57.         {  

  58.               

  59.             MessageBox(hMainwnd,"鼠标按下了","提示",MB_OK);  

  60.             break;  

  61.         }  

  62.     case WM_RBUTTONDOWN://鼠标右键按下  

  63.         {  

  64.               

  65.             MessageBox(hMainwnd,"鼠标右键按下了","提示",MB_OK);  

  66.             break;  

  67.         }  

  68.     case WM_DESTROY://关闭窗口  

  69.         {  

  70.               

  71.             MessageBox(hMainwnd,"关闭窗口了","提示",MB_OK);  

  72.             PostQuitMessage(0);  

  73.             //exit(0);  

  74.             //ExitProcess(0);  

  75.             break;  

  76.         }  

  77.     default:  

  78.         break;  

  79.     }  

  80.     return DefWindowProc(hMainwnd,message,wParam,lParam);  

  81.       

  82. }  





[cpp] view plaincopy


  1. // 内容:一个基本的Win32程序框架  

  2. #include <windows.h>  

  3. //#include <windowsx.h>  

  4. //函数声明  

  5. BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );  

  6. LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam );  

  7.   

  8. //函数:WinMain() 功能:Win32应用程序入口函数。创建主窗口,处理消息循环  

  9. int PASCAL WinMain( HINSTANCE hInstance, //当前实例句柄  

  10.                    HINSTANCE hPrevInstance, //前一个实例句柄  

  11.                    LPSTR lpCmdLine, //命令行字符  

  12.                    int nCmdShow) //窗口显示方式  

  13. {  

  14.     MSG msg;  

  15.     //创建主窗口  

  16.     if ( !InitWindow( hInstance, nCmdShow ) )  

  17.         return FALSE;  

  18.     //进入消息循环:     

  19.     //从该应用程序的消息队列中检取消息,送到消息处理过程,      

  20.     //当检取到WM_QUIT消息时,退出消息循环。      

  21.     while (GetMessage(&msg, NULL, 0, 0))          

  22.     {                 

  23.         TranslateMessage(&msg);       

  24.         DispatchMessage(&msg);        

  25.     }  

  26.     //程序结束  

  27.     return msg.wParam;  

  28. }  

  29. //函数:InitWindow()  

  30. //功能:创建窗口。  

  31. static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )  

  32. {  

  33.     HWND hwnd; //窗口句柄     

  34.     WNDCLASS wc; //窗口类结构      

  35.     //填充窗口类结构     

  36.     wc.style = CS_VREDRAW | CS_HREDRAW;   

  37.     wc.lpfnWndProc = (WNDPROC)WinProc;    

  38.     wc.cbClsExtra = 0;    

  39.     wc.cbWndExtra = 0;    

  40.     wc.hInstance = hInstance;     

  41.     wc.hIcon = LoadIcon( hInstance, IDI_APPLICATION );    

  42.     wc.hCursor = LoadCursor( NULL, IDC_ARROW );   

  43.     wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);    

  44.     wc.lpszMenuName = NULL;   

  45.     wc.lpszClassName = "EasyWin";     

  46.     RegisterClass( &wc );          //注册窗口类    

  47.     hwnd = CreateWindow(        //创建主窗口       

  48.         "EasyWin"//窗口类名称        

  49.         "一个基本的Win32程序"//窗口标题        

  50.         WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型        

  51.         100, //窗口位置的x坐标       

  52.         100, //窗口位置的y坐标       

  53.         400, //窗口的宽度          

  54.         300, //窗口的高度      

  55.         NULL, //父窗口句柄         

  56.         NULL, //菜单句柄      

  57.         hInstance, //应用程序实例句柄         

  58.         NULL ); //窗口创建数据指针    

  59.     if( !hwnd )  

  60.         return FALSE;     

  61.     //显示并更新窗口     

  62.     ShowWindow( hwnd, nCmdShow );     

  63.     UpdateWindow( hwnd );  

  64.     return TRUE;      

  65. }  

  66. //函数:WinProc()  

  67. //功能:处理主窗口消息  

  68. LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam,LPARAM lParam )  

  69. {  

  70.     switch( message )  

  71.     {         

  72.     case WM_KEYDOWN://击键消息        

  73.         switch( wParam )              

  74.         {             

  75.         case VK_ESCAPE:           

  76.             MessageBox(hWnd,"ESC键按下了!","Keyboard",MB_OK);             

  77.             break;            

  78.         }         

  79.         break;        

  80.         case WM_RBUTTONDOWN://鼠标消息            

  81.             {                 

  82.                 MessageBox(hWnd,"鼠标右键按下了!","Mouse",MB_OK);                

  83.                 break;                

  84.             }             

  85.         case WM_PAINT://窗口重画消息            

  86.             {                 

  87.                 char hello[]="你好,我是EasyWin !";                

  88.                 HDC hdc;                  

  89.                 PAINTSTRUCT ps;           

  90.                 hdc=BeginPaint( hWnd,&ps ); //取得设备环境句柄            

  91.                 SetTextColor(hdc, RGB(0,0,255)); //设置文字颜色             

  92.                 TextOut( hdc, 20, 10, hello, strlen(hello) );//输出文字           

  93.                 EndPaint( hWnd, &ps ); //释放资源             

  94.                 break;            

  95.             }         

  96.         case WM_DESTROY://退出消息            

  97.             PostQuitMessage( 0 );//调用退出函数             

  98.             break;            

  99.     }  

  100.     //调用缺省消息处理过程      

  101.     return DefWindowProc(hWnd, message, wParam, lParam);      

  102. }  

MFC | 阅读 3118 次
文章评论,共0条
游客请输入验证码