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(上面的语句),可以显示 展开
首先新建工程选对话框,然后用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(上面的语句),可以显示 展开
3个回答
展开全部
哥们 我的直觉是生命周期的原因或者 create的WS_CHAILD|WS_VISABLE,能不能把CData类的两个文件上传一下
追问
文件没看到在哪传,我把他大概写了下在上面,很简单的几句,麻烦你在看看为什么不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在oncreate中调用create 函数,然后调showwindow(sw_show)
更多追问追答
追问
CData类基于CEdit类,没有oncreate这个消息
追答
this必须是父窗口的指针,你这里明显不对
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询