MFC 中,对话框调用自建新类(基于CEdit)中的自定函数show,包括edit.create,显示无效,如何解决?

首先定义一个CData类基于CEdit,中包含静态文本,编辑框的对象(CEditedit1....)若干,还有一个显示函数show(自己添加的成员函数),其中包含edit... 首先定义一个CData类基于CEdit,中包含静态文本,编辑框的对象(CEdit edit1....)若干,还有一个显示函数show(自己添加的成员函数),其中包含edit.Create(......),强调下其中的父窗口指针为this,断点查看是跟对话框一致的;然后在对话框中定义CData类对象,在OnCreate中调用show,可是显示不出来,请问是什么问题?
首先新建工程选对话框,然后用classwizard添加CData类:
class CData : public CEdit

CData中添加如下:
public:
void Show();//成员函数
CEdit edit1;//CEdit对象

CData源文件实现

void CData::Show()
{
edit1.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(170,10,310,50), this,200); //显示编辑框,语句是对的,断点this也是跟对话框一致
}

再在dialog中添加:
private:
CData data1;
源文件包含include "Data.h"
最后在OnInitDialog()中
data1.Show(); //在这试过直接用data1.edit1.Create(上面的语句),可以显示
展开
 我来答
bai404844226
2014-03-19 · TA获得超过282个赞
知道小有建树答主
回答量:235
采纳率:0%
帮助的人:125万
展开全部
哥们 我的直觉是生命周期的原因或者 create的WS_CHAILD|WS_VISABLE,能不能把CData类的两个文件上传一下
追问
文件没看到在哪传,我把他大概写了下在上面,很简单的几句,麻烦你在看看为什么不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序员王淼
2014-03-20 · 超过11用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:31.1万
展开全部
在oncreate中调用create 函数,然后调showwindow(sw_show)
更多追问追答
追问
CData类基于CEdit类,没有oncreate这个消息
追答
this必须是父窗口的指针,你这里明显不对
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2014-03-19 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1335万
展开全部
CData类对象在哪里声明?是全局(或类作用域)吗?还是函数局部变量?
更多追问追答
追问
在对话框源文件中申明包含CData类,具体过程已经补充在上面
追答
Show()函数里面的create函数里面的this指针不对,不能用this指针,而是应该传入对话框指针,比如
void Show(CWnd* pParent);//成员函数

{
edit1.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,
CRect(170,10,310,50), pParent,200);
}

最后在OnInitDialog()中
data1.Show(this);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式