请教如何响应鼠标点击任务栏图标时,能使应用程序最小化

netexpert 2006-05-19 11:29:28
请教如何响应鼠标点击任务栏图标时,能使应用程序最小化,

应用程序的条件是没有标题栏和边框,我尝试了下WS_OVERLAPPED,可是程序会存在标题栏和边框,如果再用
Modifystyle把窗体风格的标题栏去掉时,鼠标单击任务栏图标的效果又失去了?

请高手帮帮忙,谢谢了
...全文
293 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
netexpert 2006-05-19
  • 打赏
  • 举报
回复
谢谢了,
用有WS_OVERLAPPED的时候,去掉WS_CAPTION、 WS_SYSMENU 和 WS_THICKFRAME但是加上WS_MINIMIZEBOX。这样不会有标题栏,同时也能响应。

我试了下,能实现这种效果
Snow_Ice11111 2006-05-19
  • 打赏
  • 举报
回复
保留窗口的Title bar和Minimize box风格就行了。
pomelowu 2006-05-19
  • 打赏
  • 举报
回复
另外,有WS_OVERLAPPED的时候,去掉WS_CAPTION、 WS_SYSMENU 和 WS_THICKFRAME但是加上WS_MINIMIZEBOX。这样不会有标题栏,同时也能响应。
Snow_Ice11111 2006-05-19
  • 打赏
  • 举报
回复
有个变通的方法,在窗体的WM_NCCALCSIZE消息响应函数OnNcCalcSize中用下面代码把标题栏的高度设为0,这样就两不误了:

void CMmDlg::OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS FAR* lpncsp)
{
// TODO: Add your message handler code here and/or call default

lpncsp->rgrc[0].top -= 18; //这个高度是我试出来的,实际用的时候自己用GetSystemMetrics函数得到

CDialog::OnNcCalcSize(bCalcValidRects, lpncsp);
}
wjj888888 2006-05-19
  • 打赏
  • 举报
回复
去掉标题栏和边框,自己绘制实现你想要的功能!
pomelowu 2006-05-19
  • 打赏
  • 举报
回复
可以自己绘制非客户区,或者SetWindowRegion之类把非客户区去掉

15,976

社区成员

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

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