在网上搜了好多资料,发现能在单文档上显示按钮,但就是不能响应事件,
弄了好久,发现m_pButton->Create()要放在C***View类的OnCreate()里。
但用VS2008新建的单文档程序里C***View类没有重载OnCreate()函数,要
自己重载该函数,可以利用向导生成的。下面说一下具体步骤:
一、新建SDI(单文档)程序button,向导会生成CbuttonView类,还有其他类
还有buttonView.h,buttonView.cpp两个文件,当然还有其他文件。
二、在CbuttonView类中添加CButton指针变量m_pButton
三、在CbuttonView类添加OnCreate函数,通过类向导生成WM_CREATE消息函数即可
四、在resoure.h文件中添加
#define IDC_TEST 1000
五、在CbuttonView类的OnCreate函数中添加按钮生成函数
int CbuttonView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: 在此添加您专用的创建代码
m_pButton = new CButton;
m_pButton->Create( "请点击",WS_CHILD|WS_VISIBLE, CRect(100,100,200,140),this,IDC_TEST);
return 0;
}
六、在CbuttonView类添加test函数,可通过向导生成
buttonView.h中
class CbuttonView : public CView
{
..............
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
void test(void);
}
buttonView.cpp中
void CbuttonView::test(void)
{
AfxMessageBox("你点击了我");
}
七、在CbuttonView类中添加消息映射,buttonView.cpp文件
BEGIN_MESSAGE_MAP(CbuttonView, CView)
..........
//添加的点击消息
ON_BN_CLICKED(IDC_TEST, &CbuttonView::test)
ON_WM_CREATE()
END_MESSAGE_MAP()
八、运行程序,在SDI的客户区有个"请点击"按钮,点击后,弹出“你点击了我”消息框