我现在自己创建了CStatic控件,想在CStatic中再创建一个CButton的控件,并且还要响应CButton事件,能做到吗,怎么做??
解决方案 »
- 求MFC源程序
- VC界面优化问题
- 请问这句话是什么意思?怎么显示出来和其他语句不同,而是灰色的。
- 自己做了一个绘图工具,但是不知道界面大于屏幕显示时,用CScrollView怎样才能实现滚动界面的效果?
- 我这样做的多国语言界面可不可以?
- 时间精度问题,我想让线程隔固定的时间做一件事,这个时间间隔可信吗?
- 求书,关于画流程图、数据流图等软件设计方法的
- 关于UI线程一问
- ATL中添加一个string属性
- 求ymodem通信协议的详细资料,要中文的,特别是关于头数据包格式的定义,一定给分
- 不用findwindow 和CreateMutex,还有什么办法不让一个实例连续运行2次
- 关于保存位图的问题,急求
然后定义一个CButton变量
这样创建button和响应button事件都发生在这个类里
try~~~good luck,success
1、你定义从CStatic派生的新类 CStaticEx
2、在一个窗口中创建这个CStaticEx对象
2.1 创建CStaticEx的对象
CStaticEx m_cMyStatic;
2.2 在窗口类的OnCreate函数中创建。
m_cMyStatic.Create("test",WS_CHILD |WS_VISIBLE,CRect(0,0,100,200),this);
3、在CStaticEx类中创建CButton对象
3.1 创建CButton对象
CButton m_cMyBtn;
3.2 在CStaticEx::OnCreate函数中创建
m_cMyBtn.Create("test",WS_CHILDWINDOW|WS_VISIBLE,CRect(20,20,80,180),this,0x400);
1、定义的时候,一定要将子控件定义成类成员变量,不然他会在函数执行结束的时候析构。
2、设置属性为WS_VISIBLE 不然他会隐藏。
在BEGIN_MESSAGE_MAP后添加ON_BN_CLICKED事件
然后在DECLARE_MESSAGE_MAP上面添加消息响应函数原型
可以的啊?
一个新类~~~CStaticEX
//Head file
#pragma once
class CStaticEX : public CStatic
{
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClicked();
CButton *button;
void AddButton();
};
//CPP file
#include "stdafx.h"
#include "StaticEX.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
BEGIN_MESSAGE_MAP(CStaticEX, CStatic)
ON_BN_CLICKED(123, OnBnClicked)
END_MESSAGE_MAP()void CStaticEX::AddButton()
{
button = new CButton();
button->Create(_T("My button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect(10,10,100,30), this, 123);
}void CStaticEX::OnBnClicked()
{
AfxMessageBox(_T("Button in Static"));
}
//调用
CStaticEX *a = new CStaticEX();
a->Create(_T("CStatic"), WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(0,100,200,300), this);
a->ShowWindow(SW_SHOW);
a->AddButton();