MFC自己代码实现一个按钮

fy_zhu93 2013-02-04 09:31:26
我用代码创建了一个MFC对话框工程,然后自己用代码写一个按钮,(我知道直接拖控件比较方便,但是我想自己用代码写)
我在OnInitDialog函数中写了如下一段代码
CButton m_btnadd;
m_btnadd.Create(_T("Add"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(20,20,20,10),
this,1);
m_btnadd.ShowWindow(SW_SHOW);

但是运行后按钮没有出现,这是为什么,到底该怎么写,我是初学者.
...全文
476 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小新蜡笔 2013-02-05
  • 打赏
  • 举报
回复
对象没声明出来
rxguoblp 2013-02-04
  • 打赏
  • 举报
回复
CButton *m_btnadd = new CButton; m_btnadd->Create(_T("Add"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(0,0,20,20), this,1); m_btnadd->ShowWindow(SW_SHOW); 也是可以的。
michael2988 2013-02-04
  • 打赏
  • 举报
回复
嗯,生命周期太短,退出该函数后相应按钮类对象销毁了,与其相关的窗口也销毁,所以不会显示
fy_zhu93 2013-02-04
  • 打赏
  • 举报
回复
引用
m_btnadd定义为成员变量
谢谢,原来是这个原因,问题解决啦
sumos 2013-02-04
  • 打赏
  • 举报
回复
m_btnadd定义为成员变量
jimette 2013-02-04
  • 打赏
  • 举报
回复
CButton myButton1, myButton2, myButton3, myButton4; // Create a push button. myButton1.Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(10,10,100,30), pParentWnd, 1);
hdg3707 2013-02-04
  • 打赏
  • 举报
回复
有可能是位置不对或大小不对,默认的坐标系是原点在左上解,因此从左往右X值是增加的,从左上角往下Y的值是负增长的,就是-1,-2...等 你先把数据都改大点(除了X,Y两个起始位置),等显示后再调整大小
fy_zhu93 2013-02-04
  • 打赏
  • 举报
回复
引用
CRect(20,20,20,10) 20,left 20 top 20 right 10 bottom 改写 (20,20,60,50); right,bottom需大于left,top
还是不行啊
jimette 2013-02-04
  • 打赏
  • 举报
回复
CRect(20,20,20,10) 20,left 20 top 20 right 10 bottom 改写 (20,20,60,50); right,bottom需大于left,top
rxguoblp 2013-02-04
  • 打赏
  • 举报
回复
引用 9 楼 fy_zhu93 的回复:
引用 CButton *m_btnadd = new CButton; m_btnadd->Create(_T("Add"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(0,0,20,20), this,1); m_btnadd->ShowWindow(SW_SHOW); 为什么我用同样的代码想在一个Dialog上写两个按钮,只出现一个按钮呢。求解……
重复创建多个按钮的位置时,需要调整CRect(0,0,20,20)的坐标参数,例如CRect(20,20,30,50),CRect(90,90,100,120),
  • 打赏
  • 举报
回复
析构了,呵呵 要么定义成CButton m_Button 要么定义成CButton m_pButton 然后在构造函数里new一下
bsnry 2013-02-04
  • 打赏
  • 举报
回复
构造函数进行destroywidnow了。 销毁了按钮。 所以不见了。 成员变量指针或则会类成员对象
zgl7903 2013-02-04
  • 打赏
  • 举报
回复
注意按钮的位置和ID 多个按钮需要多个按钮变量或指针
fy_zhu93 2013-02-04
  • 打赏
  • 举报
回复
引用
CButton *m_btnadd = new CButton; m_btnadd->Create(_T("Add"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,CRect(0,0,20,20), this,1); m_btnadd->ShowWindow(SW_SHOW);
为什么我用同样的代码想在一个Dialog上写两个按钮,只出现一个按钮呢。求解

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧