VS2008沒用過,跟你說一種在VC++6.0下的實現View添加按鈕及其訊息處理的方法吧
1、在你的工程的View類的標頭檔(***View.h)中
1.0 添加聲明
CButton * m_pBtn;
2.0 在//{{AFX_MSG(C***View) 和 //}}AFX_MSG DECLARE_MESSAGE_MAP()之間添加訊息處理函式宣告
afx_msg void OnBtnFileOpen();
2、在工程View類的實現檔案中(***View.cpp)
2.0 定義按鈕ID
#define ID_MYBUTTON1 12315
2.1 建構函式中添加代碼
m_pBtn = NULL;
2.2 解構函式中添加代碼
if (m_pBtn != NULL)
{
m_pBtn->Detach();
delete m_pBtn;
}
2.3 在OnInitialUpdate()函數中添加
if(m_pBtn == NULL)
{
m_pBtn = new CButton;
int w = 50;
int h = 20;
int x0 = 100; // 這裡是按鈕的起始x座標,以後用到再移動按鈕吧
int y0 = 100; // 這裡是按鈕的起始y座標,以後用到再移動按鈕吧
m_pBtn->Create(_T("我的Button"),
WS_CHILD|WS_VISIBLE|BS_FLAT,
CRect(x0, y0, x0 + w, y0 + h),
this,
ID_MYBUTTON1);
}
2.4 在 BEGIN_MESSAGE_MAP(C***View, CView) 和 END_MESSAGE_MAP() 之間添加訊息映射
ON_BN_CLICKED(ID_MYBUTTON1, OnBtnFileOpen)
2.5 添加訊息處理函數
void C***View::OnBtnFileOpen()
{
CFileDialog FileDlg(TRUE,
_T("jpg"),
_T("*.jpg"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
TEXT("影像檔(*.jpg)|*.jpg||"),
this);
if (FileDlg.DoModal()!=IDOK)
{
return;
}
CString strFileName = FileDlg.GetPathName();
HANDLE hFile
= CreateFile(strFileName,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
0);
// 利用hFile進行檔案操作
}