一个简单的CFileDialog问题,急加分!

e_Zkz 2008-08-08 11:19:14
本人想实现一个简单的功能,就是用CFileDialog打开一个目录选择窗口,当用户点OK时,弹出一个YES OR NO询问框,询问用户是否确定选中。

本人的做法是派生一个CFileDialog子类,覆盖一下CFileDialog退出时的函数就好了。但发生的怪现象是,覆盖CFileDialog的函数不被执行,连OnInitDialog()都是这样。

使用的环境是 Visual studio2008,支持MFC的win mobile程序。
本人在mobile上是初学者,在语言上不是,请各路高手指点,用其它方式实现上述功能的也给分。

...全文
154 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_Zkz 2008-08-20
  • 打赏
  • 举报
回复
没有人用vs2008吗,很容易试的,知道为什么不行的也给分。
sobug 2008-08-19
  • 打赏
  • 举报
回复
BOOL CCustomFileDialog::OnFileNameOK()
{
这里加上messagebox实现不了吗?
//LogEvent(_T("OnFileNameOK"));
return CFileDialog::OnFileNameOK();
}
e_Zkz 2008-08-19
  • 打赏
  • 举报
回复
头文件
#pragma once


// CCustomFileDialog

class CCustomFileDialog : public CFileDialog
{
DECLARE_DYNAMIC(CCustomFileDialog)

public:
CCustomFileDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
virtual ~CCustomFileDialog();

virtual BOOL OnInitDialog();
virtual void OnFileNameChange();
virtual BOOL OnFileNameOK();
virtual void OnFolderChange();
protected:
DECLARE_MESSAGE_MAP()

};

CPP文件
// CustomFileDialog.cpp : implementation file
//

#include "stdafx.h"
#include "TVPlayer.h"
#include "CustomFileDialog.h"


// CCustomFileDialog

IMPLEMENT_DYNAMIC(CCustomFileDialog, CFileDialog)

CCustomFileDialog::CCustomFileDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{

}

CCustomFileDialog::~CCustomFileDialog()
{
}


BEGIN_MESSAGE_MAP(CCustomFileDialog, CFileDialog)
END_MESSAGE_MAP()


BOOL CCustomFileDialog::OnInitDialog()
{
//LogEvent(_T("OnInitDialog"));
return CFileDialog::OnInitDialog();
}
// CCustomFileDialog message handlers
void CCustomFileDialog::OnFileNameChange()
{
//LogEvent(_T("OnFileNameChange"));
CFileDialog::OnFileNameChange();
}

BOOL CCustomFileDialog::OnFileNameOK()
{
//LogEvent(_T("OnFileNameOK"));
return CFileDialog::OnFileNameOK();
}

void CCustomFileDialog::OnFolderChange()
{
//LogEvent(_T("OnFolderChange"));
CFileDialog::OnFolderChange();
}
sobug 2008-08-19
  • 打赏
  • 举报
回复
能发代码看看吗?
e_Zkz 2008-08-19
  • 打赏
  • 举报
回复
呵呵,OnOK重写也无效,上面已经提到OnInitDialog()都无效。
sobug 2008-08-19
  • 打赏
  • 举报
回复
重写onok
onok中弹出对话框询问 要是点是 就调用基类的onok 行了
e_Zkz 2008-08-19
  • 打赏
  • 举报
回复
王俊杰的方法已经退出Dialog了,用户没有办法重新选一次。

对sobug:
调用了,如 CFileDialog::OnInitDialog();
sobug 2008-08-19
  • 打赏
  • 举报
回复
对,王俊杰的方法也不错
sobug 2008-08-19
  • 打赏
  • 举报
回复
你不是派生的吗?派生类的函数中不是有override吗?override函数中需要调用基类方法的,你调用了吗?
北方大冬瓜 2008-08-19
  • 打赏
  • 举报
回复
为什么不用 CFileDialog 后面再加个 MessageBox 的方式,觉得你的继承实现有问题,还不如这样做,只添加 3 行左右代码,简单。
e_Zkz 2008-08-19
  • 打赏
  • 举报
回复
基类的方法不是主动调用的,是由

CSubFileDialog dlg;
dlg.DoModal();
调用。
e_Zkz 2008-08-19
  • 打赏
  • 举报
回复
问题就是函数根本不被调用到!!!
sobug 2008-08-18
  • 打赏
  • 举报
回复
你调用基类方法了吗?

7,656

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧