vc++实现点击Cbutton类的按钮弹出一个MessageBox对话框(MFC)

不用那个扭曲的多添加一个对话然后修改名称的方法,我的做法如下

例子:让点击CButton 以后弹出一个对话框

1、在VIEW视类添加一个CButton类型的成员变量m_btn

2、添加视类的ON_CREATE消息

   里面添加 

m_btn.Create("Click Me!!",WS_CHILD|WS_VISIBLE,CRect(0,0,100,100),this,ID_CMD1);

ID_CMD1是我在资源列表预定的ID,以后统一使用这个ID

3、在视类的.h文件中添加消息映射,找到如下

// Generated message map functions
protected:
 //{{AFX_MSG(CWinformView)
 afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
 afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnCMD1();
 afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
 //}}AFX_MSG
 DECLARE_MESSAGE_MAP()
private:
 CPoint m_pt_o;
 CButton m_btn;

有颜色的一行是自己添加的,这里是影射一个函数

4、然后进入视类的.CPP文件

添加

BEGIN_MESSAGE_MAP(CWinformView, CView)
 //{{AFX_MSG_MAP(CWinformView)
 ON_WM_CREATE()
 ON_WM_LBUTTONDOWN()
 ON_COMMAND(ID_CMD1, OnCMD1)
 ON_WM_LBUTTONUP()
 //}}AFX_MSG_MAP
 // Standard printing commands
 ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
 ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

兰色一行为添加的!

5、在视类的.CPP的尾部写函数描述

void CWinformView::OnLButtonUp(UINT nFlags, CPoint point)
{
 // TODO: Add your message handler code here and/or call default
 CBitmap bitmap;
 bitmap.LoadBitmap(IDB_BITMAP1);
 CClientDC dc(this);
 dc.FillRect(CRect(m_pt_o,point),&CBrush(&bitmap));
 CView::OnLButtonUp(nFlags, point);
}

CWinformView为我的视类名称

好了,可以运行,点击看下!

Leave a Reply

Your email address will not be published.