现在的位置: 首页 > 综合 > 正文

Win32编程—实现点,线,面的绘制

2013年07月17日 ⁄ 综合 ⁄ 共 3866字 ⁄ 字号 评论关闭

源自:http://blog.csdn.net/chenqiai0/article/details/8045123

Win32编程---实现点,线,面的绘制

  1. #include <windows.h>  
  2. #include   <string>     
  3. using   namespace   std;  
  4.   
  5. //----------函数声明---------------  
  6. void init(HWND hWnd,HINSTANCE hInstance);  
  7. void pix(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,PAINTSTRUCT &Ps);//画点,也就是像素输出  
  8. void rect(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,PAINTSTRUCT &Ps);//----画矩形----  
  9. void fillrect(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,RECT &r,PAINTSTRUCT &Ps);//填充矩形  
  10. void linerect(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,RECT &r,PAINTSTRUCT &Ps);//线框矩形  
  11. void triangle(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,POINT Pt[3],PAINTSTRUCT &Ps);//三角形  
  12. void ellipse(HWND &hWnd,HDC &hDC,HBRUSH &NewBrush,RECT &r,PAINTSTRUCT &Ps);//椭圆  
  13. void DrawContent(HWND hWnd);  
  14.   
  15. //-----回调函数-----------------  
  16. LRESULT CALLBACK WindProcedure(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);  
  17.   
  18. INT WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,  
  19.                    LPSTR lpCmdLine, int nCmdShow)  
  20. {  
  21.       
  22.     WNDCLASSEX  WndCls;  
  23.   
  24.     MSG         Msg;  
  25.     WndCls.cbSize        = sizeof(WndCls);  
  26.     WndCls.style         = CS_OWNDC | CS_VREDRAW | CS_HREDRAW;  
  27.     WndCls.lpfnWndProc   = WindProcedure;  
  28.     WndCls.cbClsExtra    = 0;  
  29.     WndCls.cbWndExtra    = 0;  
  30.     WndCls.hInstance     = hInstance;  
  31.     WndCls.hIcon         = LoadIcon(NULL, IDI_APPLICATION);  
  32.     WndCls.hCursor       = LoadCursor(NULL, IDC_ARROW);  
  33.     WndCls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);  
  34.     WndCls.lpszMenuName  = NULL;  
  35.     WndCls.lpszClassName = TEXT("MAIN");  
  36.     WndCls.hIconSm       = LoadIcon(hInstance, IDI_APPLICATION);  
  37.     RegisterClassEx(&WndCls);  
  38.   
  39.    HWND  hWnd=CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,  
  40.                    TEXT("MAIN"),TEXT( "陈琦"),  
  41.                    WS_OVERLAPPEDWINDOW | WS_VISIBLE,  
  42.                    CW_USEDEFAULT, CW_USEDEFAULT, 820, 820,  
  43.                    NULL, NULL, hInstance, NULL);  
  44.     init(hWnd,hInstance);  
  45.     UpdateWindow(hWnd);  
  46.     while( GetMessage(&Msg, NULL, 0, 0) )  
  47.     {  
  48.         TranslateMessage(&Msg);  
  49.         DispatchMessage( &Msg);  
  50.     }  
  51.   
  52.     return static_cast<int>(Msg.wParam);  
  53. }  
  54.        
  55. void init(HWND hWnd,HINSTANCE hInstance)  
  56. {   
  57.     CreateWindow(  TEXT("BUTTON"),  TEXT("画点"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 0, 150,80, hWnd,NULL, hInstance, NULL);  
  58.     CreateWindow(   TEXT("BUTTON"),  TEXT("矩形"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 90, 150,80, hWnd,NULL, hInstance, NULL);    
  59.     CreateWindow(   TEXT("BUTTON"),  TEXT("填充矩形"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 180, 150,80, hWnd,NULL, hInstance, NULL);  
  60.     CreateWindow(   TEXT("BUTTON"),  TEXT("线框矩形"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 270, 150,80, hWnd,NULL, hInstance, NULL);  
  61.     CreateWindow(   TEXT("BUTTON"),  TEXT("三角形"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 360, 150,80, hWnd,NULL, hInstance, NULL);  
  62.     CreateWindow(   TEXT("BUTTON"),  TEXT("椭圆"),  WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON, 0, 450, 150,80, hWnd,NULL, hInstance, NULL);  
  63. }  
  64.   
  65. LRESULT CALLBACK WindProcedure(HWND hWnd, UINT Msg,WPARAM wParam, LPARAM lParam)  
  66. {  
  67.       
  68.     HDC         hDC;  
  69.     PAINTSTRUCT Ps;  
  70.     HBRUSH      NewBrush;  
  71.     RECT    r;  
  72.     POINT Pt[3];  
  73.   
  74.     switch(Msg)  
  75.     {  
  76.     case WM_COMMAND:  
  77.     HWND h;  
  78.     h=FindWindowEx(hWnd ,NULL,TEXT("BUTTON"),TEXT("画点"));  
  79.     if(DWORD(lParam)==int(h))  
  80.     {  
  81.         pix(hWnd,hDC,NewBrush,Ps);  
  82.         break;  
  83.     }  
  84.   
  85.     h=FindWindowEx(hWnd ,NULL,TEXT("BUTTON"),TEXT("矩形"));  
  86.     if(DWORD(lParam)==int(h))  
  87.     {  
  88.         rect(hWnd,hDC,NewBrush,Ps);  
  89.         break;  
  90.     }  
  91.   
  92.     h=FindWindowEx(hWnd ,NULL,TEXT("BUTTON"),TEXT("填充矩形"));  
  93.     if(DWORD(lParam)==int(h))  
  94.     {  
  95.         fillrect(hWnd,hDC,NewBrush,r,Ps);  
  96.         break;  
  97.     }  
  98.   
  99.     h=FindWindowEx(hWnd ,NULL,TEXT("BUTTON"),TEXT("线框矩形"));  
  100.     if(DWORD(lParam)==int(h))  
  101.     {  

抱歉!评论已关闭.