case WM_NCHITTEST:
if (DefWindowProc(hWnd,uMsg,wParam,lParam) == HTCLIENT)
{
l_OMouse.x=LOWORD(lParam);
l_OMouse.y=HIWORD(lParam);
if(l_OMouse.x>l_OClose.x&&l_OMouse.y<l_OClose.y)
{
return HTCLOSE;
}
else return HTCAPTION;
} return 0;想让鼠标到达某个区域时候,可以进行关闭,可是不成功。但是如果里面的 HTCLOSE换成HTTOPRIGHT 会成功变成斜箭头。
我尝试过其它的HT消息,某些能成功,某些不成功,是为什么?然后我在前面的语句后加了
case WM_NCLBUTTONDOWN:
switch(wParam)
{
case HTCLOSE:
PostQuitMessage(0); //when the cursor in over the close button
return 0;
}
return 0;窗口能在所设定区域点击关闭,可是拖动功能又没有了。
该如何保证拖动的同时,能执行其它功能?
switch(wParam)
{
case HTCLOSE:
PostQuitMessage(0); //when the cursor in over the close button
return 0;
}
return 0;
====================================
鼠标一按下去就程序就退出了,还怎么能拖动啊,还有你的WM_NCHITTEST处理好像有点不当
case WM_NCHITTEST:
if (DefWindowProc(hWnd,uMsg,wParam,lParam) == HTCLIENT)
............
如果条件不成立就返回0了,0表示的是HTNOWHERE
把你的要求说清楚了
switch(wParam)
{
case HTCLOSE:
PostQuitMessage(0); //when the cursor in over the close button
return 0;
}
return DefWindowProc(hWnd,uMsg,wParam,lParam); //如果你这里返回了0就不处理WM_NCLBUTTONDOWN
如果鼠标点在不感兴趣的位置不是返回,而是应该交给窗口默认处理过程。
if (DefWindowProc(hWnd,uMsg,wParam,lParam) == HTCLIENT)
{
//return HTCAPTION;
l_OMouse.x=LOWORD(lParam);
l_OMouse.y=HIWORD(lParam);
if(l_OMouse.x>l_OClose.x&&l_OMouse.y<l_OClose.y)
{
return HTCLOSE;
}
else return HTCAPTION;
}
return 0; case WM_NCLBUTTONDOWN:
switch(wParam)
{
case HTCLOSE:
PostQuitMessage(0);
return 0;
}
break;就行了