动态创建控件没有反应

qjgdftxmu 2010-07-19 08:18:56
真的尝试动态创建控件时,创建完成之后点击完全没有动作,设定函数之后也没有响应。


CButton *btn3=new CButton();
if(btn3->Create("按钮3",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,CRect(60,70,110,90),this,101)==0)
{
MessageBox("wrong");
}


还试用了加入全局变量的方面去创建,同样是没有反应。实在是语。

后面在论坛找一个和我情况一下帖。http://topic.csdn.net/u/20091221/15/FF69FE6C-6430-490D-A97D-52D284BAB1B4.html
不过方面我却没看懂。
[Quote=引用 14 楼 mysuli312 的回复:]
ON_UPDATE_COMMAND_UI(控件ID,响应函数地址)
响应函数
例:
void
OnUpdateBtn(CCmdUI* pCmdUI)
{
pCmdUI->Enable(你决定是否可用);
}
[/Quote]

求解。
...全文
118 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wltg2001 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qjgdftxmu 的回复:]
我有加响应函数的。也没有反应。

按理说,就算没有消息响应函数,点击按钮之后也会有动画的。可是我这里点击之后地完全没有反应。

另外关于视图类会覆盖框架类的说法,虽然我没有试,但我想问的是,如果真的有覆盖的话,那按钮应该连显示都不能显示才对啊。

showwindow()我也有加,还是没有反应,至少哪儿是适合的地方,还望请教
[/Quote]
应该还是覆盖的问题,你将父窗口设在视图类试试,另外处理函数也加在视图类
m_tornado 2010-07-20
  • 打赏
  • 举报
回复
自己感觉哈:在mainFrame里创建的控件跟View是同一层的,View的OnDraw更新把按钮覆盖
如果是view里创建的,就处于顶层,不会冲突,显示正常~
qjgdftxmu 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 m_tornado 的回复:]

应该是覆盖了
把代码贴到View的OnCreate里看看~
[/Quote]

呵呵,去试了一下,是可以的。
只是不明白为什么没有被覆盖
m_tornado 2010-07-20
  • 打赏
  • 举报
回复
应该是覆盖了
把代码贴到View的OnCreate里看看~
qjgdftxmu 2010-07-20
  • 打赏
  • 举报
回复
我有加响应函数的。也没有反应。

按理说,就算没有消息响应函数,点击按钮之后也会有动画的。可是我这里点击之后地完全没有反应。

另外关于视图类会覆盖框架类的说法,虽然我没有试,但我想问的是,如果真的有覆盖的话,那按钮应该连显示都不能显示才对啊。

showwindow()我也有加,还是没有反应,至少哪儿是适合的地方,还望请教
dvlinker 2010-07-20
  • 打赏
  • 举报
回复

CButton *btn3=new CButton();
if(btn3->Create("按钮3",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,CRect(60,70,110,90),this,101)==0)
{
MessageBox("wrong");
}
delete btn3; // 如果创建后立即delete掉肯定是不会显示的
Eleven 2010-07-20
  • 打赏
  • 举报
回复
你要添加按钮的事件响应函数BN_CLICKED消息
BlueMap 2010-07-20
  • 打赏
  • 举报
回复
创建后还要在合适的地方showwindow()!!
wltg2001 2010-07-19
  • 打赏
  • 举报
回复
看错了,你创建好了,但是你没有加响应函数,点击当然没反应了。
Chinse_Liu 2010-07-19
  • 打赏
  • 举报
回复
帮顶一下
duke56 2010-07-19
  • 打赏
  • 举报
回复
在OnInitDialog创建看看...
wltg2001 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qjgdftxmu 的回复:]
引用 1 楼 m_tornado 的回复:

在哪里创建的?

MainFrame的OnCreate()里。
[/Quote]
MainFrame类被CXXView类盖住了,所以应该在视图类中创建
洗洗睡去 2010-07-19
  • 打赏
  • 举报
回复
应该在你的视图类里的oninitupdate里创建吧
qjgdftxmu 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 m_tornado 的回复:]

在哪里创建的?
[/Quote]
MainFrame的OnCreate()里。
m_tornado 2010-07-19
  • 打赏
  • 举报
回复
在哪里创建的?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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