wince sdk(1) 窗体创建

wince sdk WinMain为函数的入口函数

 

#define dim(i) (sizeof(i))/sizeof(i[0])

struct MsgUnit
{
   UINT message;
   long (*fun)(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
};

 

int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow)
{
 g_hInstance=hInstance;
    WNDCLASS ws;//1创建窗体类
 ws.cbClsExtra=0;
 ws.cbWndExtra=0;
 ws.hbrBackground=(HBRUSH)::GetStockObject(WHITE_BRUSH);
 ws.hCursor=NULL;
 ws.hIcon=NULL;
 ws.hInstance=hInstance;
 ws.lpfnWndProc=WndProcAA;
 ws.lpszClassName=TEXT("Hello");
 ws.lpszMenuName=NULL;
 ws.style=CS_VREDRAW|CS_HREDRAW;

 if(!RegisterClass(&ws)) return -1;//2注册窗体类

 HWND hWnd =CreateWindow(TEXT("Hello"),TEXT("myfirst"),WS_VISIBLE | WS_BORDER|WS_CAPTION| WS_MINIMIZEBOX|WS_SYSMENU|WS_MAXIMIZEBOX,20,
  30,200,200,NULL,NULL,hInstance,NULL);//创建窗体
 
 UpdateWindow(hWnd);//更新窗体
 ShowWindow(hWnd,SW_SHOWNORMAL);//显示窗体
    
 MSG msg;

 //获取消息并发送
 while(::GetMessage(&msg,hWnd,0,0))//WM_CLOSE为假
 {
  ::TranslateMessage(&msg);//翻译消息
  ::DispatchMessage(&msg);//传递消息
 }
   return 1;
}

 

在Windows下,return  的实际执行过程是:

先析构main函数内的局部对象。
返回至调用main的函数。
调用exit函数,由exit函数调用doexit函数,在doexit函数中完成对全局对象的析构。
最后调用ExitProcess结束进程。

回调函数:

LRESULT CALLBACK WndProcAA(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 for(int i=0;i<dim(MsgProcs);i++)
 {
  if(uMsg==MsgProcs[i].message)
  {
   MsgProcs[i].fun(hwnd,uMsg,wParam,lParam);
  }
 }
 return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
}

 

 

posted @ 2012-10-26 21:51  广拓小程序  阅读(366)  评论(0编辑  收藏  举报