用SDK自绘按钮,有经验的来帮帮偶~~~~!!!!!!
我用sdk自绘按钮 自己封装了个类(很简单的个类)。
要实现鼠标移动到按钮之上时,按钮变高亮
TRACKMOUSEEVENT 不陌生吧。
TRACKMOUSEEVENT tme; tme.hwndTrack = 按钮句柄;
WNDPROC BToldProc;LRESULT CALLBACK BTProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { char prompt[80]; DWORD hit; switch(Msg) { case WM_SIZE: OutputDebugString("WM_SIZE\n"); break; case WM_NCHITTEST://HTCLIENT=1 HTBORDER=18 hit=CallWindowProc(BToldProc, hWnd, Msg, wParam, lParam); if(hit >= 1) { sprintf(prompt,"%d\n",hit); OutputDebugString(prompt); } return hit; break; case WM_MOUSEMOVE: { TRACKMOUSEEVENT tme; tme.cbSize = sizeof(tme); tme.dwFlags = TME_HOVER|TME_LEAVE; tme.dwHoverTime = 1; tme.hwndTrack = hWnd; BOOL boRet = _TrackMouseEvent(&tme); }break; case WM_MOUSELEAVE: OutputDebugString("Leave\n"); break; case WM_MOUSEHOVER: OutputDebugString("Over\n"); break; case WM_LBUTTONDOWN: OutputDebugString("LBUTTONDOWN\n");//MessageBox(hWnd, "Over", "Msg",MB_YESNO);// focus on 'yes'. //MessageBox(hWnd, "Over", "Msg", MB_YESNO+MB_DEFBUTTON2);// focus on 'no'. MessageBox(hWnd, "Over", "Msg", MB_OK);// use CR to close box !// must after MessageBox() PostMessage(hWnd, WM_CANCELMODE, 0, 0); break; case WM_CANCELMODE: OutputDebugString("WM_CANCELMODE\n"); break; }// return CallWindowProc(BToldProc, hWnd, Msg, wParam, lParam);}