E
emildy
Unregistered / Unconfirmed
GUEST, unregistred user!
我想重绘窗口标题栏,也包括了系统按钮,
其中,我想改变一下"X"按钮(关闭窗口的按钮)的位置:
case WM_NCHITTEST:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
if(...){ //x,y在一个RECT内
return (LRESULT)HTCLOSE;
}
}
以上还没有什么问题,
调试中,当我按下我画的"X"按钮时候,也没有问题,
但是麻烦的是,当松开鼠标的时候,却没有关闭窗口,也就是说只做了一个没有用的"X"按钮,
我查了好多资料,也看了些别人的代码,别人的实现方法有两种:
第一种直接在鼠标按下时就发送关闭消息,
case WM_NCLBUTTONDOWN:
{
if(wParam == HTCLOSE) SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
}
但是,这种做法太粗糙了点...
另一种好像是在WM_NCLBUTTONDOWN中加入了钩子,来判断是否松开鼠标,
我看别人实现的好复杂,都看晕了...
不知道这里的高手还有别的什么方法呢?
其中,我想改变一下"X"按钮(关闭窗口的按钮)的位置:
case WM_NCHITTEST:
{
int x = LOWORD(lParam);
int y = HIWORD(lParam);
if(...){ //x,y在一个RECT内
return (LRESULT)HTCLOSE;
}
}
以上还没有什么问题,
调试中,当我按下我画的"X"按钮时候,也没有问题,
但是麻烦的是,当松开鼠标的时候,却没有关闭窗口,也就是说只做了一个没有用的"X"按钮,
我查了好多资料,也看了些别人的代码,别人的实现方法有两种:
第一种直接在鼠标按下时就发送关闭消息,
case WM_NCLBUTTONDOWN:
{
if(wParam == HTCLOSE) SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
}
但是,这种做法太粗糙了点...
另一种好像是在WM_NCLBUTTONDOWN中加入了钩子,来判断是否松开鼠标,
我看别人实现的好复杂,都看晕了...
不知道这里的高手还有别的什么方法呢?