回 帖 发 新 帖 刷新版面

主题:用CFormView出现的问题!(急!急!)

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个回复)

沙发

CFormView Dialog1;
Dialog1.m_list.SetCurSel(2);

非模态窗口需要动态建立.改成:
CFormView *pDlg  = new CFormView;
pDlg->Create(....);

pDlg->GetDlgItem(IDC_EDIT1);
...

这样试试

板凳

我不是创建的问题,我是想在菜单栏的按钮发送SetDlgItemText(IDC_EDIT1)(菜单栏按钮可以响应非VFormView类的其他消息,如:MessageBox"asdfas"都可以的),但就是响应不了CFormView控件上的消息.
另外,我用的创建控件是用http://www.wangchao.net.cn/bbsdetail_82598.html的这个例子!
谢谢!

3 楼

用ClassWizard给IDC_EDIT1建立一个成员变量m_szText,然后:

m_szText = "123456.....";

4 楼

还是不行啊!
不报错了,但是一点反应都没有!

5 楼

大家在FormView类中创建了控件后是怎么在其他类(如:MainFrm)中调用控件的了?

6 楼

哪位大大帮帮忙啊!
搞了几天了!!!

7 楼

[quote]还是不行啊!
不报错了,但是一点反应都没有![/quote]

我想你十有八九是没有加UpdateData,这是成员变量更改后更新显示的常识,所以我之前没说,看来我还得补上:

用ClassWizard给IDC_EDIT1建立一个成员变量m_szText,然后:
m_szText = "123456.....";
UpdateData(FALSE);        //将变量的值转到控件

8 楼

加了的!
主要问题是得不到控件的句柄
CWnd *wnd;
if (wnd =GetDlgItem(IDC_EDIT1))
        MessageBox("句柄有效!");
    else
        MessageBox("句柄无效!");
返回的是"句柄无效!"

9 楼

不知道你是否是用的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 楼

晕死,我又不是才学VC!你这点东西n年前就知道!不过谢谢你的热心!
我只是很少用SDI,FormView类是第一次用,我看过的书上介绍这个类只是一笔就带过了。

(请不要怀疑我的关联变量等其他基本操作出什么错,如果连那都搞不清楚的话,我读这两年研究生就白读了,谢谢)

希望这论坛的高手们帮帮忙!

我来回复

您尚未登录,请登录后再回复。点此登录或注册