怎样动态生成BUTTON??? 如题! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CButton *btn = new CButton;btn->Create(); create()里面的参数是怎样的啊? 我刚才做了,代码如下: CRect rect(0,0,100,100); //rect为button的位置区域 bn.Create("aa",WS_VISIBLE,rect,this,IDB_B1);//第一个为caption,第二个为 //style,可以是ws_和bs_,可查msdn,第三个是放button的区域,第四个是parent,第五个是//标识.在dlg.h中加入: #define IDB_B1 2000因为以后你用这个button的时候,就可以: ((CButton*)GetDlgItem(IDB_B1))->....//设置button. 补充一下,在h文件里的类中申明CButton bn; CWnd* pParentWnd这个参数怎样取得啊,我的程序是基于对话框的. 可以发个源代码给我吗[email protected] 先在Resource.h文件中加入一个资源号#define IDC_BUTTON1 2000在窗体类的头文件中加如一个按钮对象CButton m_button1;在窗体的初始化函数中加入:m_button1.Create(_T("1"),WS_CHILD,CRect(10,10,60,60),this,IDC_BUTTON1);m_button1.ShowWindow(TRUE);其中Create函数中的第一个参数是按钮上显示的文本,2是按钮的类型,3是按钮在窗体是上的位置4是父窗体,5就是你的按钮ID号了然后再有第二个语句把按钮显示出来。当然你也可以不用的在Ressour.h中声明资源号,你可以在窗体上加入一个按钮,再把它删去就行了。 可以通过GetMainWnd()函数取得你的主窗体句柄 但是怎样应用啊??例如怎样响应Button的单击事件?? 但是我怎样使用控件的事件啊?例如我想响应Button的单击事件,应该怎样办? 建立一个类Cmybutton,从CButton类继承,然后再里面加入消息处理.在DLG中, cmybotton bn;bn.create(...); //参数的含义前面说的很明白了~ 要自定义一个消息WM_MYBUTTON_CLICK。在按钮create时,create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );将你的UINT nID 参数指定为WM_MYBUTTON_CLICK .在按钮的父窗口中,添加WM_MYBUTTON_CLICK消息的处理方法。这个方法就是你的添加的按钮的点击事件的处理函数。 你可以看看enoloo(行者无疆) 说的!然后你自己想加什么都可以了,在自己定的类里添加WM_LBUTTONDBLCLK然后在函数里修改就可以了!CMYBUTTON.hclass CMYBUTTON : public CButton{ public: CMYBUTTON(); virtual ~CMYBUTTON(); protected: //{{AFX_MSG(CMYBUTTON) afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); //}}AFX_MSG DECLARE_MESSAGE_MAP()};CMYBUTTON.CPPCCMYBUTTON::CCMYBUTTON(){}CCMYBUTTON::~CCMYBUTTON(){}void CCMYBUTTON::OnLButtonDblClk(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call defaultMessageBox("fdsfsdf","fsdfdsf",MB_OK); CButton::OnLButtonDblClk(nFlags, point);}代码没有调试,自己试试,反正是这个意思了! 其实很简单啊动态生成可以参照--回复人: gudulyn(冰楠) ( ) 信誉:100 2003-11-24 23:44:00 得分:0 --提供的方法产生单击或双击事件的话,没有必要重新定义一个新的消息,直接在BEGIN_MESSAGE_MAP()下自己输入 ON_BN_CLICKED(IDC_BUTTON1,OnButton1)或ON_BN_DOUBLECLICKED(IDC_BUTTON1,OnDbButton1)然后在头文件中定义该函数如: afx_msg void OnButton1();或 afx_msg void OnDbButton1();最后在实现文件中输入完整函数体以及函数内容如void CXXXView::OnButton1(){ // TODO: Add your control notification handler code here}或void CXXXView::OnDbButton1(){ // TODO: Add your control notification handler code here}这样的方法应该算是最简单的,当你产生一个可见按钮IDC_BUTTON1后,只需在点击就会调用OnButton1(),双击则会调用OnDbButton1() 直接应用MFC都可以解决,去看看MFC的书一切OK! 求个时间控件的自绘代码 如何截取图像中的指定部分 介绍本书 关于文件操作的速度问题 急需一个简单的邮件发送的源码 简单的类型转换,string和数组 强烈抗议carbon107斑竹的独断专行行为 怎样创建象MessageBox这样的窗口??????? 用程序怎么打印一个Word或者RTF文档啊? OnTimer问题 让顶层菜单响应消息,急,问题解决马上解贴 如何使用一个DLL文件中的函数?
btn->Create();
CRect rect(0,0,100,100);
//rect为button的位置区域
bn.Create("aa",WS_VISIBLE,rect,this,IDB_B1);//第一个为caption,第二个为
//style,可以是ws_和bs_,可查msdn,第三个是放button的区域,第四个是parent,第五个是
//标识.
在dlg.h中加入:
#define IDB_B1 2000
因为以后你用这个button的时候,就可以:
((CButton*)GetDlgItem(IDB_B1))->....//设置button.
在窗体类的头文件中加如一个按钮对象CButton m_button1;
在窗体的初始化函数中加入:
m_button1.Create(_T("1"),WS_CHILD,CRect(10,10,60,60),this,IDC_BUTTON1);
m_button1.ShowWindow(TRUE);
其中Create函数中的第一个参数是按钮上显示的文本,2是按钮的类型,3是按钮在窗体是上的位置
4是父窗体,5就是你的按钮ID号了
然后再有第二个语句把按钮显示出来。
当然你也可以不用的在Ressour.h中声明资源号,你可以在窗体上加入一个按钮,再把它删去就行了。
例如我想响应Button的单击事件,应该怎样办?
在DLG中, cmybotton bn;
bn.create(...); //参数的含义前面说的很明白了~
在按钮create时,create( LPCTSTR lpszCaption, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID );
将你的UINT nID 参数指定为WM_MYBUTTON_CLICK .
在按钮的父窗口中,添加WM_MYBUTTON_CLICK消息的处理方法。
这个方法就是你的添加的按钮的点击事件的处理函数。
CMYBUTTON.h
class CMYBUTTON : public CButton
{
public:
CMYBUTTON();
virtual ~CMYBUTTON();
protected:
//{{AFX_MSG(CMYBUTTON)
afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};CMYBUTTON.CPP
CCMYBUTTON::CCMYBUTTON()
{}CCMYBUTTON::~CCMYBUTTON()
{
}void CCMYBUTTON::OnLButtonDblClk(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call defaultMessageBox("fdsfsdf","fsdfdsf",MB_OK);
CButton::OnLButtonDblClk(nFlags, point);
}
代码没有调试,自己试试,反正是这个意思了!
动态生成可以参照--回复人: gudulyn(冰楠) ( ) 信誉:100 2003-11-24 23:44:00 得分:0 --提供的方法
产生单击或双击事件的话,没有必要重新定义一个新的消息,直接在BEGIN_MESSAGE_MAP()
下自己输入
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
或ON_BN_DOUBLECLICKED(IDC_BUTTON1,OnDbButton1)
然后在头文件中定义该函数如:
afx_msg void OnButton1();或 afx_msg void OnDbButton1();
最后在实现文件中输入完整函数体以及函数内容
如
void CXXXView::OnButton1()
{
// TODO: Add your control notification handler code here
}
或void CXXXView::OnDbButton1()
{
// TODO: Add your control notification handler code here
}
这样的方法应该算是最简单的,当你产生一个可见按钮IDC_BUTTON1后,只需在点击就会调用OnButton1(),双击则会调用OnDbButton1()