对话框的应用按钮怎么设计

ningto.com 2011-08-26 11:11:58

我现在有一个对话框如图, 点击左边的按钮,在中间大的矩形框(就叫页面吧)里显示不同的内容(包含各种控件)。
需求:当点击“应用”按钮后要让其变灰,然后点击大的矩形框里面任意一个控件的时候又让其变为可用状态,其实就类似如输入法的配置界面。
问题:我需要让每个控件都响应一个鼠标点击事件,当事件发生的时候就让“应用按钮”变为可用状态,但是这显然不太好,因为我的页面有很多个,并且页面里的控件也比较多, 请教各位有没有简单一点的方法。
...全文
132 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
怎么截获对话框上所有控件的消息啊, 有没有详细点的
zch82624392 2011-08-26
  • 打赏
  • 举报
回复
乖乖的再每个按钮的地方写一个通知吧,通知哪个应用按钮
hnzlk 2011-08-26
  • 打赏
  • 举报
回复
通过截获消息呢
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
有没有获取所有控件鼠标单击事件的方法
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
我用的不是CTabCtrl啊, 而且这个程序已经写好了, 不可能再进行大的改动了, 有没有比较有建设性的建议啊
ttktw 2011-08-26
  • 打赏
  • 举报
回复
其实你这个办法也可以,只是代码多一点

可以试下在对话框中截取消息来整体处理
因为消息是先由父窗口处理,然后是控件处理的
  • 打赏
  • 举报
回复
你可以让所有空间继承一个父控件 在父控件中处理应用按钮的状态
Eleven 2011-08-26
  • 打赏
  • 举报
回复
可以用CTabCtrl控件
alangsos 2011-08-26
  • 打赏
  • 举报
回复
那不是像用 CTabCtrl一样咯
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
已解决,多谢各位了!
方法如下:

virtual BOOL PreTranslateMessage(MSG* pMsg)
{
// 恢复应用按钮处于可用状态
if (pMsg->message == WM_LBUTTONDOWN)
{
HWND pageWnd = WindowFromPoint(pMsg->pt);
int ctrlID = ::GetDlgCtrlID(pageWnd);
if ((::GetParent(pageWnd) != m_hWnd) && ctrlID)
{
SendMessage(m_hWnd, WM_COOLING_APPLY_TRUE, 0, 0);
}
}
return CWindow::IsDialogMessage(pMsg);
}
lanneret1234 2011-08-26
  • 打赏
  • 举报
回复
ON_CONTROL_RANGE(BN_CLICKED, Cuser::BUTTONID + 1, Cuser::BUTTONID + 4 , CHRMSDlg::OnButtonClicked)

消息映射范围宏:
ON_COMMAND_RANGE
ON_UPDATE_COMMAND_UI_RANGE
ON_CONTROL_RANGE

你可以使用消息映射范围宏, 怎么使用可以百度
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lanneret1234 的回复:]

你是想所有的按钮的单击消息都由一个函数处理吗??
[/Quote]
对啊
lanneret1234 2011-08-26
  • 打赏
  • 举报
回复
你是想所有的按钮的单击消息都由一个函数处理吗??
ningto.com 2011-08-26
  • 打赏
  • 举报
回复
有没有人知道WTL里面PreTranslateMessage怎么处理
ttktw 2011-08-26
  • 打赏
  • 举报
回复
额,好久没用MFC了,我只知道这样可以实现,
应该是在对话框的消息中处理这个PreTranslateMessage
然后选择你感兴趣的消息提前处理

15,979

社区成员

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

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