我现在有一个对话框如图, 点击左边的按钮,在中间大的矩形框(就叫页面吧)里显示不同的内容(包含各种控件)。
需求:当点击“应用”按钮后要让其变灰,然后点击大的矩形框里面任意一个控件的时候又让其变为可用状态,其实就类似如输入法的配置界面。
问题:我需要让每个控件都响应一个鼠标点击事件,当事件发生的时候就让“应用按钮”变为可用状态,但是这显然不太好,因为我的页面有很多个,并且页面里的控件也比较多, 请教各位有没有简单一点的方法。
解决方案 »
- vc++中的average函数怎么用啊
- 我的代码为什么会出错?
- 通过注册表更改IP为自动获取方式,DhcpNotifyConfigChange怎么传参数?
- EVC的treectrl控件的成员函数setbkcolor不能用吗(分数不多了 多谢大家帮忙看看)
- 请问为何我写的ISAPI的DLL在IIS5.1下运行提示“HTTP 错误 405 - 禁止访问资源”?
- 关于进度条的问题
- 加载图片
- 如何将DC中的数据转存为bmp??
- 鼠标移进对话框伸 移出对话框缩的问题 为什么我用setcapture以后我的对话框里的的控件单击不了?
- 求高手解释几行代码?
- CEdit SetSel问题
- BCB2009和VC2010目录冲突
应该是在对话框的消息中处理这个PreTranslateMessage
然后选择你感兴趣的消息提前处理
ON_COMMAND_RANGE
ON_UPDATE_COMMAND_UI_RANGE
ON_CONTROL_RANGE你可以使用消息映射范围宏, 怎么使用可以百度
方法如下: 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);
}