15,979
社区成员
发帖
与我相关
我的任务
分享
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
HWND hbtn;
LPDRAWITEMSTRUCT btn;
static int i = 0;
static POINT x;
RECT rt = {10,10,120,120}; //按钮坐标 右和下都加了20
// RECT rt = {10,10,100,100}; //按钮坐标
switch(uMsg)
{
case WM_CREATE:
hbtn = CreateWindow(_T("button"),_T("OK"),WS_CHILD|WS_VISIBLE|BS_OWNERDRAW,10,10,100,100,hwnd,(HMENU)id_btn,hInst, NULL);
break;
case WM_MOUSEMOVE:
x.x = LOWORD(lParam);
x.y = HIWORD(lParam);
if(PtInRect(&rt, x))
{
i = 1;
InvalidateRect(hwnd,NULL,TRUE);
}
else
{
i = 0;
InvalidateRect(hwnd,NULL,TRUE);
}
break;
case WM_DRAWITEM:
btn = (LPDRAWITEMSTRUCT)lParam;
if(i == 1)
{
FillRect(btn->hDC, &btn->rcItem, (HBRUSH)CreateSolidBrush(RGB(0,255,255)));
FrameRect(btn->hDC, &btn->rcItem, (HBRUSH)GetStockObject(BLACK_BRUSH));
}
else
{
FillRect(btn->hDC, &btn->rcItem, (HBRUSH)CreateSolidBrush(RGB(255,0,0)));
FrameRect(btn->hDC, &btn->rcItem, (HBRUSH)GetStockObject(BLACK_BRUSH));
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}