VS2008下SetDlgItemText的用法

来源:百度知道 编辑:UC知道 时间:2024/06/30 00:20:41
Sets the caption or text of a control owned by a window or dialog box.
void SetDlgItemText(
int nID,
LPCTSTR lpszString
);
请问一下,SetDlgItemText是如何改变控件的内容的。我在VS2008里面的OnCreate函数调用这个函数:
SetDlgItemTextW(IDC_INFO2, str);
结果显示的还是原来的内容,究竟为什么呢?
经过调试,str的值OK,就是没有设置成功。
另外,为什么我在构造函数里面调用这条函数的时候会出现很严重的后果呢---断言失败!
如果我设置一个变量来修改的话,就可以!
一楼回答很靠谱!不过“呼叫UpdateData()函数进行更新”还是没有用!
我在书上看到一句话“对话框数据成员的初始化工作一般在其构造函数进行,而对话框和控件的初始化则在OnInitDialog()函数中完成”。因为我有两种方法,如果为控件建立一个变量,例如m_strName,则在构造函数中设置它的值。如果要使用SetDlgItemTextW这条函数,则在OnInitDialog()函数中调用。

SetDlgItemText函数的功能:设置对话框中控件的文本和标题。
  使用方法参考如下:
  itoa(str33, str3, 10);
  SetDlgItemText ( hwnd , IDC_EDIT3 , str3) ;
  其中str33为int型的数字,str3为字符串指针。
  第一句代码作用:用itoa函数将int型的数字str33转化为字符串,并且将字符串放到str3指针指向的区域。
  str3为字符串指针,里面包含着文本内容。
  第二句代码作用就是将str3的内容显示到ID为IDC_EDIT3的控件。

SetDlgItemText()设置过后要呼叫UpdateData()函数进行更新,否则显示不出来。至于在构造函数里使用这个东西呢,要看你那个对象是否已经完全构造出来了,一般是不放在构造函数里的,构造函数一般只用于成员的初始化或者其他啥的.

依照你的补充,这样你可以在对话框的类中进行这项工作,貌似无法从其他的类中进行?如果要从其他类中进行的话就必须定义一个全局变量?