谁能帮我解决这个问题(关于HTCLOSE)

emildy 2003-05-11 05:10:59
我想重绘窗口标题栏,也包括了系统按钮,
其中,我想改变一下"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中加入了钩子,来判断是否松开鼠标,
我看别人实现的好复杂,都看晕了...

不知道这里的高手还有别的什么方法呢?
...全文
82 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
emildy 2003-05-11
  • 打赏
  • 举报
回复
to zhujianping_es(zhujianping) :
你没看我写的第一种方法么?一模一样啊...请不要摸鱼啊...
zhujianping_es 2003-05-11
  • 打赏
  • 举报
回复
case WM_NCLBUTTONDOWN:
{
if(m_rectClose.PtInRect(pt))
//use a CRect varible to store the client coorinaton of the Close button.
SendMessage(hwnd, WM_SYSCOMMAND, SC_CLOSE, 0);
}
emildy 2003-05-11
  • 打赏
  • 举报
回复
难道还真没有人知道啊...

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧