在sdi或者mdi中菜单中都有文件打开的选项,可是我在基于对话框的mfc程序如何用一个按扭的响应来实现这个功能呢!?!?·
一开始我想用AfxGetApp()->OnFileOpen();实现,可是这个函数是保护声明所以不能使用,所以希望高手可以指点一下,最好给个源程序!!!谢谢了!
一开始我想用AfxGetApp()->OnFileOpen();实现,可是这个函数是保护声明所以不能使用,所以希望高手可以指点一下,最好给个源程序!!!谢谢了!
调试欢乐多
因为我删了一些东西,可能括号有问题,你调试一下
void CDlg::OnOpen()
{
LPTSTR d_lpTextBuffer = 0;
DWORD d_dwFileLength = 0;
CString m_Filename; CString szFilter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*||";
CFileDialog dlg(TRUE,"txt",NULL,OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal() == IDOK)
{
CString str,temp;
CFile cfData;
if(!cfData.Open (m_Filename,CFile::modeReadWrite))
{
str = "读取文件 "+m_Filename+"失败!";
MessageBox(str,"警告", MB_ICONWARNING | MB_OK);
// return;
} if(d_lpTextBuffer)
{
free(d_lpTextBuffer);
d_lpTextBuffer = 0;
}
d_dwFileLength = cfData.GetLength()+sizeof(char);
d_lpTextBuffer = (LPTSTR)malloc(d_dwFileLength-1);
if(!d_lpTextBuffer)
{
MessageBox("不能为文件分配内存!","警告", MB_ICONWARNING | MB_OK);
// return ;
}
cfData.Read((LPVOID)d_lpTextBuffer,d_dwFileLength);
d_lpTextBuffer[d_dwFileLength] = '\0';
}
}