孙鑫VC学习(第1课--Windows程序内部运行原理)

来源:互联网 发布:柯震东微博照片软件 编辑:程序博客网 时间:2024/06/05 20:12

创建一个完整的窗口需要经过下面四个操作步骤:

设计一个窗口类;

注册窗口类;

创建窗口;

显示及更新窗口。

 

创建一个WIN32 Application的程序,代码如下:

#include <windows.h>

#include <stdio.h>

 

LRESULT CALLBACK WinSunProc(

 HWND hwnd,      // handle to window

 UINT uMsg,      // message identifier

 WPARAM wParam,  // first message parameter

 LPARAM lParam   // second message parameter

);

 

int WINAPI WinMain(

 HINSTANCE hInstance,      // handle to current instance

 HINSTANCE hPrevInstance,  // handle to previous instance

 LPSTR lpCmdLine,          // command line

 int nCmdShow              // show state

)

{

WNDCLASS wndcls;

wndcls.cbClsExtra=0;

wndcls.cbWndExtra=0;

wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);

wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);

wndcls.hInstance=hInstance;

wndcls.lpfnWndProc=WinSunProc;

wndcls.lpszClassName="Weixin2003";

wndcls.lpszMenuName=NULL;

wndcls.style=CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wndcls);

 

HWND hwnd;

hwnd=CreateWindow("Weixin2003","北京维新科学技术培训中心",WS_OVERLAPPEDWINDOW,

       0,0,600,400,NULL,NULL,hInstance,NULL);

 

ShowWindow(hwnd,SW_SHOWNORMAL);

UpdateWindow(hwnd);

 

MSG msg;

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

{

       TranslateMessage(&msg);

       DispatchMessage(&msg);

}

return 0;

}

 

LRESULT CALLBACK WinSunProc(

 HWND hwnd,      // handle to window

 UINT uMsg,      // message identifier

 WPARAM wParam,  // first message parameter

 LPARAM lParam   // second message parameter

)

{

switch(uMsg)

{

case WM_CHAR:

       char szChar[20];

       sprintf(szChar,"char is %d",wParam);

       MessageBox(hwnd,szChar,"weixin",0);

       break;

case WM_LBUTTONDOWN:

       MessageBox(hwnd,"mouse clicked","weixin",0);

       HDC hdc;

       hdc=GetDC(hwnd);

       TextOut(hdc,0,50,"计算机编程语言培训",strlen("计算机编程语言培训"));

       ReleaseDC(hwnd,hdc);

       break;

case WM_PAINT:

       HDC hDC;

       PAINTSTRUCT ps;

       hDC=BeginPaint(hwnd,&ps);

       TextOut(hDC,0,0,"维新培训",strlen("维新培训"));

       EndPaint(hwnd,&ps);

       break;

case WM_CLOSE:

       if(IDYES==MessageBox(hwnd,"是否真的结束?","weixin",MB_YESNO))

       {

              DestroyWindow(hwnd);

       }

       break;

case WM_DESTROY:

       PostQuitMessage(0);

       break;

default:

       return DefWindowProc(hwnd,uMsg,wParam,lParam);

}

return 0;

}

 

原创粉丝点击