读书人

用SDK自绘按钮有经验的来帮帮偶~解决

发布时间: 2012-04-06 12:22:24 作者: rapoo

用SDK自绘按钮,有经验的来帮帮偶~~~~!!!!!!
我用sdk自绘按钮 自己封装了个类(很简单的个类)。

要实现鼠标移动到按钮之上时,按钮变高亮
TRACKMOUSEEVENT 不陌生吧。

C/C++ code
    TRACKMOUSEEVENT tme;    tme.hwndTrack = 按钮句柄;
这就不好使。换成主窗口句柄,对主窗口好使。
自绘按钮的句柄是CreateWindow返回的,断点监视发现这个句柄从赋值之后没什么变化。
会是什么原因呢?各位大虾帮我分析一下可能的原因

[解决办法]
SetWindowLong()子类化,重写该按钮的窗口回调函数
[解决办法]
探讨

引用:
SetWindowLong()子类化,重写该按钮的窗口回调函数

为什么要重写按钮的窗口回调函数?
WM_MOUSEHOVER,WM_MOUSELEAVE 是发给按钮的?主窗口就是收不到吗?

对了,我说的不好使就是说主窗口的WndProc收不到WM_MOUSEHOVER/WM_MOUSELEAVE ,刚才没说清楚,现在补充一下

[解决办法]
本身就是收不到WM_MOUSEHOVER的,你可以用WM_MOUSEMOVE时判断RECT来判断。
[解决办法]
试下,主窗口和按钮同时响应鼠标移动消息,在自绘按钮加一个状态值,然后在按钮的DRAWITEM()里判断
[解决办法]
C/C++ code
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);} 

读书人网 >VC/MFC

热点推荐