關於DestroyWindow()和PostQuitMessage()的少許疑問

 #include <windows.h>
#include <stdio.h>
LRESULT CALLBACK proc(
  HWND hwnd,      // handle to window
  UINT uMsg,      // message identifier
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
)
{
 HDC hdc;
 PAINTSTRUCT ps;
 switch(uMsg)
 {

 case WM_CHAR:
  char sz[20];
        sprintf(sz,"char is %d!",wParam);
  MessageBox(hwnd,sz,NULL,MB_OK);
  break;
 case WM_LBUTTONDOWN:
        MessageBox(hwnd,"You hava clicked the left of mouse!",NULL,MB_OK|MB_ICONEXCLAMATION);
  hdc = ::GetDC(hwnd);
  ::TextOut(hdc,0,50,"sdfsdf",sizeof("sdfsdf"));
  ::ReleaseDC(hwnd,hdc);
  break;
 case WM_PAINT:
  hdc = ::BeginPaint(hwnd,&ps);
  ::TextOut(hdc,0,0,"sdfsdfsdf",sizeof("sdfsdfsdf"));
  ::EndPaint(hwnd,&ps);
  break;
    case WM_CLOSE:
  
  if(IDYES == MessageBox(hwnd,"你確定要退出嗎?","退出",MB_YESNOCANCEL|MB_ICONEXCLAMATION))
  {
   DestroyWindow(hwnd);
  }
  break;
 case WM_DESTROY:
  ::PostQuitMessage(0);
  break;
 
 default:
  return DefWindowProc(hwnd,uMsg,wParam,lParam);
 }
 return 0;
}


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(GRAY_BRUSH);
 wndcls.hCursor = ::LoadCursor(hInstance,IDC_ARROW);
 wndcls.hIcon = ::LoadIcon(hInstance,IDI_APPLICATION);
 wndcls.hInstance = hInstance;
 wndcls.lpfnWndProc = proc;
 wndcls.lpszClassName = "zhu";
 wndcls.lpszMenuName = NULL;
 wndcls.style = CS_HREDRAW|CS_VREDRAW;
   
 ::RegisterClass(&wndcls);

 HWND hwnd;
 //RECT rect;
 //::GetClientRect(hwnd,&rect);
 hwnd = ::CreateWindow("zhu","window",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;
}

 

DestroyWindow(),PostquitMessage()這兩個函數,我知道他們都是進行清理工作的,可不知道具體是幹什麼的,清高手指教!還有就是如果在MFC中編程,如果要調用WIN32API函數,需不需要和API一樣要包含
頭文件了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章