VS2010 重载CFileDialog问题
今天把XP VS2005工程下面的一个MFC程序弄到windows7下装的vs2010下编译,编译通过。
但是出现问题。
//.h
class CSpcialDialog : public CFileDialog
{
DECLARE_DYNAMIC(CSpcialDialog)
public:
CSpcialDialog(BOOL bOpenFileDialog,
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
virtual ~CSpcialDialog();
// 对话框数据
enum { IDD = IDD_DLG_FILESPECIAL };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
afx_msg void OnDelete();
public:
CString m_strFileName;
BOOL m_bDeleteAll;
};
// .cpp
#include "SpcialDialog.h"
// CSpcialDialog 对话框
IMPLEMENT_DYNAMIC(CSpcialDialog, CFileDialog)
CSpcialDialog::CSpcialDialog( BOOL bOpenFileDialog,
LPCTSTR lpszDefExt /*= NULL*/,
LPCTSTR lpszFileName /*= NULL*/,
DWORD dwFlags /*= OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT*/,
LPCTSTR lpszFilter /*= NULL*/,
CWnd* pParentWnd /*= NULL*/ )
: CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName,
dwFlags, lpszFilter, pParentWnd)
{
m_ofn.Flags |= OFN_ENABLETEMPLATE;
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DLG_FILESPECIAL);
m_ofn.lpstrTitle = "Delete File";
m_bDeleteAll = FALSE;
}
CSpcialDialog::~CSpcialDialog()
{
}
void CSpcialDialog::DoDataExchange(CDataExchange* pDX)
{
CFileDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CSpcialDialog, CFileDialog)
ON_BN_CLICKED(IDC_BTN_DELETE, &CSpcialDialog::OnDelete)
END_MESSAGE_MAP()
BOOL CSpcialDialog::OnInitDialog()
{
BOOL bRet = CFileDialog::OnInitDialog();
if (TRUE == bRet)
{
GetParent()->GetDlgItem(IDOK)->SetWindowText(_T("删除"));
}
return bRet;
}
// CSpcialDialog 消息处理程序
void CSpcialDialog::OnDelete()
{
m_bDeleteAll = TRUE;
GetParent()->GetDlgItem(0x47C)->GetWindowText(m_strFileName);
GetParent()->SendMessage(WM_COMMAND, IDCANCEL);
}