在对话框程序动态创建FormView,Button控件不能自绘(DrawItem没有被调用)(我会另开贴加分共300)

lxrlxr20021 2004-11-10 02:32:53
工程:是基于Dialog的应用程序,在对话框中动态创建了一个CFormView,

我在CMainContainer(从CDialog派生)
CMainDlg(从CFormView派生),CMainDlg上放有若干CButtonST控件(派生自CButton)

BOOL CMainContainer::OnInitDialog()
{
CDialog::OnInitDialog();

// TODO: Add extra initialization here
CCreateContext pContext;
CWnd* pFrameWnd = this;
pContext.m_pCurrentDoc = NULL;
pContext.m_pNewViewClass = RUNTIME_CLASS(CMainDlg);
m_pMainDlg = (CMainDlg *) ((CFrameWnd*)pFrameWnd)->CreateView(&pContext);
ASSERT(m_pMainDlg);
m_pMainDlg->InitDlg();
//初始化FormView上的控件状态;OnInitialUpdate失效我才自己初始化的

m_pMainDlg->ShowWindow(SW_SHOW);
return TRUE;

// return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}

小弟遇到头痛的问题是,button控件使用系统默认时,可以正常显示
但将风格改为owner draw时,发现CButtonST的DrawItem()函数没有被调用,
CMainDlg的OnInitialUpdate(),添加了也不会被调用,
1.在文档视图结构应用程序中,在CFormView中使用自绘控件正常,但在基于对话框
应用程序中,动态创建的CFormView,上面的控件不能自绘,不知为何?

2.而且上述程序片断,在Release版才不出错,在debug版遇调试宏出错,不知如何解决?

我用的嵌入式Evc++4.0,我代码移到vc6下,他们所有的函数完全一样,
evc4下视图能显示,只是视图上控件不能自绘了,好像被父窗口捕获了,
而vc6下连视图都显不出来
虽然是两个不同的版本,但小弟的难题应与语言无关,就是自绘Button的DrawItem()不知为什么没有被调用
...全文
122 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxrlxr20021 2004-11-28
  • 打赏
  • 举报
回复
没办法只好结帖了
无聊客 2004-11-10
  • 打赏
  • 举报
回复
yzx0023@sina.com
可以的话发过来,我帮你看下
lxrlxr20021 2004-11-10
  • 打赏
  • 举报
回复
我没有应啊,我可以给源码啊
lxrlxr20021 2004-11-10
  • 打赏
  • 举报
回复
有没有人应啊

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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