我开始没有重新继承这个类,而是直接创建了这个类
CDialogBar m_dlg;
m_dlg.Create(...);
但是在其父窗口Framewnd中无法接收到OnCtlColor的消息
后来我创建了一个新类,继承了CDialogBar。
class CMyDialogBar : public CDialogBar
{};
在这里添加OnCtlColor函数,还是无法处理
说CDialogBar把消息都是送完父类
那么我该去哪里接收消息,在哪里设置处理函数呢..在深入浅出MFC中说,一般消息都是自子类往父类不断地搜索
那么子控件的绘制消息怎么会跑到父窗口去呢?
只有10分,不好意思,希望高手给我解惑
CDialogBar m_dlg;
m_dlg.Create(...);
但是在其父窗口Framewnd中无法接收到OnCtlColor的消息
后来我创建了一个新类,继承了CDialogBar。
class CMyDialogBar : public CDialogBar
{};
在这里添加OnCtlColor函数,还是无法处理
说CDialogBar把消息都是送完父类
那么我该去哪里接收消息,在哪里设置处理函数呢..在深入浅出MFC中说,一般消息都是自子类往父类不断地搜索
那么子控件的绘制消息怎么会跑到父窗口去呢?
只有10分,不好意思,希望高手给我解惑
解决方案 »
- 求一段线程时钟的代码
- 关于AddIPAddress的使用
- 会者不难的问题!请进!
- 一个简单问题:system32目录下面的cmd.exe是干什么的?
- 如何在button中加入图片
- WebBrowser控件导致软件不能打开
- how can I hide the iconic in the task bar?
- vc的论坛好象除了CSDN就没有其他了,好象有个VCKBASE也不太多人回答
- 恭喜江湖无赖发福!(1)
- 为什么好多的网络库都是用的mbcs而不是unicode
- 请教一个问题,两个线程同时访问一个全局变量,一个只给它赋值,一个只取值,要不要加锁?
- 怎么用OpenGL实现类似CS游戏中人物在3D世界中的游走?
我在主框架中这么弄,但是没效果。
HBRUSH CMainFrame::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CFrameWnd::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
return CBrush(RGB(255,0,0));
// TODO: Return a different brush if the default is not desired
//return hbr;
}
{
your code;}//CDialogBar 变量为bar
我是看看这个消息有没有响应。因为只要我返回一个红色的画刷
背景色应该是被画成红色的了。
我加上了判断也不行
而且GetDlgItem这个函数返回的是一个CWND指针类型,和右边的句柄不匹配。前辈,能回答下我上面说的那个消息循环过程是不是正确的么?
{
HBRUSH hbr = CFrameWnd::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Change any attributes of the DC here
return m_brush;
// TODO: Return a different brush if the default is not desired
//return hbr;
}
应该可以吧。
至于fanqing说的 应该是这样吧:
if(pWnd->GetDlgCtrlID()==IDC_XXXXX)
{
your code;
}
在这个类中处理OnCtlColor
有以下迷惑
说cdialogbar会把消息送往父类。但是这里它为什么自己处理了呢