主题:用CFormView出现的问题!(急!急!)
cwnd
[专家分:0] 发布于 2007-12-26 17:50:00
sdi工程,View的基类是CFormView,在FormView中放了一个控件,例如IDC_EDIT1,用GetDlgItem()似乎不行,每次都返回null(如果是基于对话框的工程,可以编译运行),
如:
CFormView Dialog1;
Dialog1.m_list.SetCurSel(2);
和
CButton * p = (CButton *)this->GetDlgItem(IDC_BUTTON1);
p->SetWindowText("123");
和
CWnd *Edit = GetDlgItem(IDC_EDIT1);
Edit->SetWindowText("dfasf");
都不行
不知道该怎么做了~~请指教~~
回复列表 (共13个回复)
沙发
iaags [专家分:2890] 发布于 2007-12-27 02:41:00
CFormView Dialog1;
Dialog1.m_list.SetCurSel(2);
非模态窗口需要动态建立.改成:
CFormView *pDlg = new CFormView;
pDlg->Create(....);
pDlg->GetDlgItem(IDC_EDIT1);
...
这样试试
板凳
cwnd [专家分:0] 发布于 2007-12-27 09:19:00
我不是创建的问题,我是想在菜单栏的按钮发送SetDlgItemText(IDC_EDIT1)(菜单栏按钮可以响应非VFormView类的其他消息,如:MessageBox"asdfas"都可以的),但就是响应不了CFormView控件上的消息.
另外,我用的创建控件是用http://www.wangchao.net.cn/bbsdetail_82598.html的这个例子!
谢谢!
3 楼
华山论剑 [专家分:5310] 发布于 2007-12-27 10:44:00
用ClassWizard给IDC_EDIT1建立一个成员变量m_szText,然后:
m_szText = "123456.....";
4 楼
cwnd [专家分:0] 发布于 2007-12-27 12:33:00
还是不行啊!
不报错了,但是一点反应都没有!
5 楼
cwnd [专家分:0] 发布于 2007-12-27 12:42:00
大家在FormView类中创建了控件后是怎么在其他类(如:MainFrm)中调用控件的了?
6 楼
cwnd [专家分:0] 发布于 2007-12-27 22:37:00
哪位大大帮帮忙啊!
搞了几天了!!!
7 楼
华山论剑 [专家分:5310] 发布于 2007-12-28 10:20:00
[quote]还是不行啊!
不报错了,但是一点反应都没有![/quote]
我想你十有八九是没有加UpdateData,这是成员变量更改后更新显示的常识,所以我之前没说,看来我还得补上:
用ClassWizard给IDC_EDIT1建立一个成员变量m_szText,然后:
m_szText = "123456.....";
UpdateData(FALSE); //将变量的值转到控件
8 楼
cwnd [专家分:0] 发布于 2007-12-28 12:32:00
加了的!
主要问题是得不到控件的句柄
CWnd *wnd;
if (wnd =GetDlgItem(IDC_EDIT1))
MessageBox("句柄有效!");
else
MessageBox("句柄无效!");
返回的是"句柄无效!"
9 楼
华山论剑 [专家分:5310] 发布于 2007-12-28 17:21:00
不知道你是否是用的VC6.0,如果是请按下面做。
你上面用的方法不是我介绍给你的!
1、在你Resource View中的界面上用鼠标选择IDC_EDIT1,然后按"ctrl + w",这时会出现ClassWizard对话框;
2、选第2个属性页"Member Variables",在"Control IDs"列表框中选中IDC_EDIT1;
3、再点"Add Variable..."按钮,名称中输入m_szText,Category默认是Value,Variable Type默认是CString;
4、再点击OK就增加了成员变量m_szText。
再按我上面7楼所说的去做。
10 楼
cwnd [专家分:0] 发布于 2007-12-28 19:13:00
晕死,我又不是才学VC!你这点东西n年前就知道!不过谢谢你的热心!
我只是很少用SDI,FormView类是第一次用,我看过的书上介绍这个类只是一笔就带过了。
(请不要怀疑我的关联变量等其他基本操作出什么错,如果连那都搞不清楚的话,我读这两年研究生就白读了,谢谢)
希望这论坛的高手们帮帮忙!
我来回复