[转]孙鑫VC教程例子代码1---Windows程序内部运行原理

本文转自:http://blog.csdn.net/ljt350740378/article/details/6437113

 

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

设计一个窗口类;

注册窗口类;

创建窗口;

显示及更新窗口。

创建一个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;

}

 

posted on 2012-12-01 13:19  freeliver54  阅读(425)  评论(2)    收藏  举报

导航