GetDlgItem 的问题
在CFormView中调用
CWnd *pWnd=GetDlgItem (IDC_EDIT1);
为什么 pWnd 总为空
怎么才能使pWnd有值?
问题点数:22、回复次数:12Top
1 楼codewarrior(会思考的草)回复于 2001-08-28 20:52:54 得分 4
GetDlgItem是适合于在对话框尚未创建的时候调用的,这个时候,对话框里的控件尚未构造。因此一般都在OnInitDialog()函数里调用此函数,它返回了由ID指定的控件的临时指针,无法储存。Top
2 楼HowUCan(提前考虑风险,否则总是救火)回复于 2001-08-28 20:59:12 得分 1
是真的吗Top
3 楼ji_liu(冻土)回复于 2001-08-28 21:09:02 得分 0
我在OnCreate()中调用的
Top
4 楼codewarrior(会思考的草)回复于 2001-08-28 21:09:06 得分 0
在《Inside Visual C++》关于模式对话框和无模式对话框两章有该函数的使用范例。Top
5 楼yousen(跳蚤)回复于 2001-08-28 21:20:32 得分 1
CFormView会不会像CListView一样有一个类似CListView::GetListCtrl()的函数?用于获得DLg的对象?Top
6 楼MSVCer(家宝)回复于 2001-08-28 21:38:00 得分 11
OnCreate中调用当然不会成功Top
7 楼ji_liu(冻土)回复于 2001-08-28 21:38:24 得分 0
不知道,象是没有Top
8 楼ji_liu(冻土)回复于 2001-08-28 21:39:21 得分 0
to MSVCer(家宝)
为什么
应该在哪儿Top
9 楼jiangsheng(蒋晟.Net[MVP])回复于 2001-08-28 22:40:10 得分 4
1如果你修改了IDC_EDIT1的值,则资源的预编译机制可能会出问题,解决的办法是Rebuild All
2只有在对话框有效且IDC_EDIT1存在的时候GetDlgItem (IDC_EDIT1)才不空。
Top
10 楼MSVCer(家宝)回复于 2001-08-28 22:44:59 得分 0
//在这调用可以,在其它控件已经创建后的地方调用都是可以的
void CMyFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//IDC_STATIC_TEST是一个静态控件的ID
CWnd *pWnd = GetDlgItem( IDC_STATIC_TEST );
pWnd->SetWindowText( "你看,这不是调用成功了吗?:)" );
}
Top
11 楼aspdiyer(离不开VC)回复于 2001-08-28 23:12:38 得分 1
哦Top
12 楼ji_liu(冻土)回复于 2001-08-29 08:39:16 得分 0
问题解决了,多谢各位Top




