自绘按钮时,DoDataExchange函数不能被自动调用的问题.

当在控件编辑器里我们手动拖动一个按钮,将其风格设置成Ower draw(自绘),如果这里想通过VC++给我们提供的向导工具将其与一变量关联,发现关联的变量值为空,最后经过单步跟踪发现,原来DoDataExchange()函数没有被调用.

解决方法:

Described as follows from MSDN.

Never call this function directly. It is called by the UpdateData member function. Call UpdateData to initialize a dialog box’s controls or retrievedata from a dialog box.

所有在这个时候我们可以显示的调用DoDataExchange()这个函数,于是可以在对话框被初始化时显示的调用UpdateData()这个函数.

即:

 

BOOL CBaDlg::OnInitDialog()
{
	//Omitted for brevity
	UpdateData(FALSE); //注意这里,参数为FALSE
	//Omitted for brevity
}

 

当对话框在被初始化时,就可以显示的调用DoDataExchange()这个函数了.

注意:UpdataData()此时的参数为FALSE,而不是TRUE,这里我们的控件根本不存在,不能从其得到数据,所以会出现一个断言..

机器于 2007-6-13  下午 于 北京.

 

此条目发表在 c/c++ 分类目录,贴了 , 标签。将固定链接加入收藏夹。

自绘按钮时,DoDataExchange函数不能被自动调用的问题.》有 2 条评论

  1. huanStephen 说:

    thank you

  2. Pingback 引用通告: 韩国最大的购物网站

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>