sun lession1

DWORD 32位

*********************************************************
一类变量 每位(bit)对应某特性

加入某类特性:用或(|)操作符

去处某特性:对该量取反(~)再与原值相与(&)

*********************************************************

设计         WNDCLASS wndcls;

注册        RegisterClass(&wndcls);

创建         HWND hwnd;
             hwnd=CreateWindow(……);

显示    ShowWindow(hwnd,SW_SHOWNORMAL);
(刷新)      UpdateWindow(hwnd);

消息循环  MSG msg;
   while(GetMessage(&msg,NULL,0,0))
   {
  TranslateMessage(&msg);//转换消息 转换后产生一个新消息投到队列                      //(例如WM_KEYDOWN转换为WM_CHAR)
  DispatchMessage(&msg); //将消息给操作系统 系统调用回掉函数 
   }

******************************************************

 

////////////////////////////////////////////////////////
//基本窗口程序
#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="edward nic";
 wndcls.lpszMenuName=NULL;
 wndcls.style=CS_HREDRAW | CS_VREDRAW;

 RegisterClass(&wndcls);

 HWND hwnd;
 hwnd=CreateWindow("edward nic","wuhan edward       nic",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,"edward",MB_OK);
  break;
 case WM_LBUTTONDOWN:
        MessageBox(hwnd,"mouse clicked","edward",MB_OK);
  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,"是否结束","edward",MB_YESNO))
  {
   DestroyWindow(hwnd);
  }
  break;
      case WM_DESTROY:
        PostQuitMessage(0);
  break;
 default:
  return DefWindowProc(hwnd,uMsg,wParam,lParam);
 }
 return 0;
}

 

posted @ 2007-03-26 21:33  Edward Xie  阅读(127)  评论(0)    收藏  举报