Windows窗口框架(API入門一)

#include <windows.h> #include <stdlib.h> #include <string.h>

//聲明函數 ////////////////////////////////////////////////////////////////// long WINAPI WndProc                                //消息處理函數             (             HWND hWnd,             UINT iMessage,             UINT wParam,             LONG lParam             ); BOOL InitWindowsClass(HINSTANCE hInstance);         //初始化窗口類 BOOL InitWindows(HINSTANCE hInstance, int nCmdShow);//初始化窗口 /////////////////////////////////////////////////////////////////// HWND hWndMain;

int WINAPI WinMain (                            //主函數                     HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR lpCmdLine,                     int nCmdShow                     )

{     MSG Message;     if(!InitWindowsClass(hInstance))        return FALSE;     if(!InitWindows(hInstance, nCmdShow))        return FALSE;     while(GetMessage(&Message,0,0,0))//消息循環     {         TranslateMessage(&Message);         DispatchMessage(&Message);     }     return Message.wParam; }

//定義函數 /////////////////////////////////////////////////////////////////// long WINAPI WndProc(                     HWND hWnd,                     UINT iMessage,                     UINT wParam,                     LONG lParam                     ) {     HDC hDC;     HBRUSH hBrush;     HPEN hPen;     PAINTSTRUCT PtStr;     POINT points[6]={{100,212},{70,227},{70,250},{130,250},{130,227},{100,212}};         switch(iMessage)     {         case WM_PAINT:             hDC=BeginPaint(hWnd,&PtStr);             hPen=(HPEN)GetStockObject(NULL_PEN);             SelectObject(hDC,hPen);             hBrush=(HBRUSH)GetStockObject(BLACK_BRUSH);             SelectObject(hDC,hBrush);             LineTo(hDC,50,50);             DeleteObject(hPen);             hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));             SelectObject(hDC,hPen);                         LineTo(hDC,150,50);             LineTo(hDC,100,137);             LineTo(hDC,50,50);             Polyline(hDC,points,6);             Arc(hDC,63,137,138,212,100,137,100,137);             Pie(hDC,213,137,288,212,240,137,260,137);             Rectangle(hDC,213,212,287,250);             RoundRect(hDC,213,100,287,137,20,20);             DeleteObject(hPen);             DeleteObject(hBrush);             EndPaint(hWnd,&PtStr);             return 0;         case WM_DESTROY:             PostQuitMessage(0);                  return 0;             default:                  return(DefWindowProc(hWnd,iMessage,wParam,lParam));                                  } }

BOOL InitWindows(HINSTANCE hInstance,int nCmdShow) {     HWND hWnd;     hWnd=CreateWindow("WinFill",    //窗口類名                      "填充示例",    //窗口實例的標題名                      WS_OVERLAPPEDWINDOW, //窗口風格                      CW_USEDEFAULT, //窗口左上角座標爲默認值                      0,                      CW_USEDEFAULT, //窗口的高爲默認值                      0,             //寬                      NULL,          //無父窗口                      NULL,          //無主菜單                      hInstance,     //創建此窗口的應用程序的當前句柄                      NULL           //不使用該值                       );     if(!hWnd)        return FALSE;    // hWndMain=hWnd;         ShowWindow(hWnd,nCmdShow); //顯示窗口     UpdateWindow(hWnd); //繪製用戶區     return TRUE;                      }

BOOL InitWindowsClass(HINSTANCE hInstance) {     WNDCLASS WndClass;     WndClass.cbClsExtra=0;     WndClass.cbWndExtra=0;     WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);     WndClass.hIcon=LoadIcon(NULL,"END");     WndClass.hInstance=hInstance;     WndClass.lpfnWndProc=WndProc;     WndClass.lpszClassName="WinFill";     WndClass.lpszMenuName=NULL;     WndClass.style=CS_HREDRAW|CS_VREDRAW;     return RegisterClass(&WndClass);     }

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