Win32画的一个不封闭图像,求高人帮小弟我填充颜色//只有WM_PAINT消息才可以用HDC
Win32画的一个不封闭图像,求高人帮我填充颜色//只有WM_PAINT消息才可以用HDC?
------解决方案--------------------
- C/C++ code
#include "stdafx.h" HINSTANCE g_hInstance; int g_x2=100; int g_y2=100; void DrawS(HDC hDC) { MoveToEx(hDC,g_x2+200,g_y2+100,NULL);//300,200 LineTo(hDC,g_x2+150,g_y2-20);//250,80 LineTo(hDC,g_x2+250,g_y2-20);//350,80 LineTo(hDC,g_x2+200,g_y2+100);//300,200 } void OnPaint(HWND hWnd) { PAINTSTRUCT obj={0}; HDC hDC=BeginPaint(hWnd,&obj); HPEN nPen=CreatePen(PS_DASH,6,RGB(192,168,026)); HGDIOBJ nOldPen = SelectObject(hDC,nPen); HBRUSH nBrush2 = CreateHatchBrush(HS_HORIZONTAL,RGB(87,11,11)); HGDIOBJ nOldBrush2 = SelectObject(hDC, nBrush2); DrawS(hDC); SelectObject(hDC,nOldBrush2); DeleteObject(nBrush2); SelectObject(hDC,nOldPen); DeleteObject(nPen); EndPaint(hWnd,&obj); } LRESULT CALLBACK Windowproc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam) { switch(uMsg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: OnPaint(hWnd); break; } return DefWindowProc(hWnd,uMsg,wParam,lParam); } void Register(LPSTR pszClassName, WNDPROC pszWndProc ) { WNDCLASSEX obj={0}; obj.cbSize = sizeof(obj); obj.cbClsExtra=0; obj.cbWndExtra=0; obj.hbrBackground=(HBRUSH)(COLOR_GRAYTEXT+2); obj.hCursor=NULL; obj.hIcon=NULL; obj.hIconSm=NULL; obj.hInstance=g_hInstance; obj.lpfnWndProc=pszWndProc; obj.lpszClassName=pszClassName; obj.lpszMenuName=NULL; obj.style=CS_HREDRAW|CS_VREDRAW|CS_OWNDC; RegisterClassEx(&obj); } HWND Create(LPSTR pszClassName,LPSTR pszWndName) { HWND hWnd= CreateWindowEx(NULL,pszClassName,pszWndName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,NULL); return hWnd; } void Display(HWND hWnd) { ShowWindow(hWnd,SW_SHOW); UpdateWindow(hWnd); } void Message(HWND hWnd) { MSG nMsg={0}; while(GetMessage(&nMsg,NULL,0,0)) { TranslateMessage(&nMsg); DispatchMessage(&nMsg); } } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. g_hInstance=hInstance; Register("Main", (WNDPROC)Windowproc); HWND hMain = Create("Main","Application"); Display(hMain); Message(hMain); return 0; }
------解决方案--------------------