万物归宗--win32窗体

下面是一个最简单的win32的窗体。

#include "stdafx.h"

LRESULT CALLBACK MainWndProc(HWND,UINT,WPARAM,LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 char szClassName[]="MainWClass";
 WNDCLASSEX wndClass;

 wndClass.cbSize=sizeof(wndClass);
 wndClass.style=CS_HREDRAW|CS_VREDRAW;
 wndClass.lpfnWndProc=MainWndProc;
 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=NULL;
 wndClass.lpszClassName=szClassName;
 wndClass.hIconSm=NULL;
 //注册这个窗口类
 ::RegisterClassEx(&wndClass);
 //创建主窗口
 HWND hwnd=::CreateWindowEx(
  0,
  szClassName,
  "My frist Wndiows",
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  NULL,
  NULL,
  hInstance,
  NULL);
 if(hwnd==NULL)
 {
  ::MessageBox(NULL,"创建窗口失败!","error",MB_OK);
  return -1;
 } 
 //显示窗口,刷新窗口客户区
 ::ShowWindow(hwnd,nCmdShow);
 ::UpdateWindow(hwnd);
 //从消息队列中取出消息,交给窗口函数处理,直到GetMessage返回False,结束消息循环
 MSG msg;
 while(::GetMessage(&msg,NULL,0,0))
 {
  //转化键盘消息
  ::TranslateMessage(&msg);
  //将消息发送到相应的窗口函数
  ::DispatchMessage(&msg);
 }
 //当GetMessage返回False时程序结束
 return msg.wParam;
}
LRESULT CALLBACK MainWndProc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
 char szText[]="最简单的窗口程序!";
 switch(uMsg)
 {
 case WM_PAINT:
   HDC hdc;
   PAINTSTRUCT ps;
   //使无效的客户区变的有效,并取得设备环境句柄
   hdc=::BeginPaint(hwnd,&ps);
   //显示文字
   ::TextOut(hdc,10,10,szText,strlen(szText));
   ::EndPaint(hwnd,&ps);
   return 0;
 case WM_DESTROY:
   //向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环
   ::PostQuitMessage(0);
   return 0;
 }
 return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
}
 从上面的代码中,我们不然看出在桌面上显示一个窗体的步骤:

1.注册窗口类

2.创建窗口

3.在桌面上显示窗口

4.更新窗口客户区

5.进入windows消息循环 


 

posted @ 2009-02-08 21:06  十二号的国王  阅读(235)  评论(0编辑  收藏  举报