#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;
}
任何位置都可以通过GetDC获取dc
只不过OnPaint里要通过BeginPaint和EndPaint来操作dc
BOOL FillRgn(
HDC hdc, // handle to device context
HRGN hrgn, // handle to region to be filled//这个参数穿啥啊?
HBRUSH hbr // handle to brush used to fill the region
);
可通过GetDC获取hrgn是你要填充的区域的句柄
详见http://msdn.microsoft.com/en-us/library/dd162717(v=vs.85).aspx