在網上搜了好多資料,發現能在單文檔上顯示按鈕,但就是不能響應事件,
弄了好久,發現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的客戶區有個"請點擊"按鈕,點擊後,彈出“你點擊了我”訊息框