CFileDialog 的 DoModal执行时候,提示“文件已存在,是否覆盖”的对话框,选择“是”,如何获取用户的选择? if(IDOK == dlg.Domodal()) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个 ”确认另存为“小对话框,是属于 CFileDialog 内部封装的对话框了如何知道这个 用户在 小对话框 做了何种选择? 比较复杂, 大概是:要用到 钩子:CFileDialog fd(FALSE);...fd.m_ofn.Flags |= OFN_EXPLORER;fd.m_ofn.lpfnHook = YourHookProc;//////////////////UINT CALLBACK YourHookProc(HWND hDlg,UINT uMsg,WPARAM wPar,LPARAM lPar){switch (uMsg){case WM_NOTIFY:{LPOFNOTIFY pofn=(LPOFNOTIFY)lPar;switch(pofn->hdr.Code){case CDN_FILEOK:// 这是 “文件已存在对话框”出现后 ,用户 点了 ‘OK’,如果 没有 这个消息 就是 cancel// do what you wantbreak;}}}} 钩子是一个方法。有没有什么办法,比如设置某个成员标记什么的,能让 CFileDialog 不弹出那个小对话框,全部由我在代码中来判断:if(IDOK==dlg.DoModal()){ // Do my want if(/*Do my want falied*/) { switch(GetLastError()) { case ERROR_FILE_EXISTING: // 文件已经存在,要覆盖吗? break; default: break; } }} “fd.m_ofn.lpfnHook = YourHookProc”这个 hook 就 这些 CDN_FILEOK 要不 你 自己 做个 save 对话框 试试:”CDN_SELCHANGE“ 里 做些什么 。 不要OFN_OVERWRITEPROMPT标志 是否覆盖的对话框就不会弹出 其实没必要知道了,CFileDialog自己就能判断,如果你选择否,直到你输入不同的文件名后,才能关闭文件对话框 循序渐进实现仿QQ界面(五):半透明窗体与不透明控件 如何删除vc中某个自定义的头文件和源文件 Socket接收字节问题 三个问题,100分 请问哪里可以下载vc6.0 SendMessage(msg,WPARAM,LPARAM)中要传递一个CString的类型怎么办? 计算机重启的控制问题? 请教怎样实现远程关机。 老问题了 关于绘图程序的问题(欢迎有绘图软件及CAD编程经验的大侠指点) 采集卡采集到的视频格式是YUY2,可以显示在预览窗口吗? 任务管理器里面查看进程中线程的数量比实际的多
CFileDialog fd(FALSE);
...
fd.m_ofn.Flags |= OFN_EXPLORER;
fd.m_ofn.lpfnHook = YourHookProc;//////////////////
UINT CALLBACK YourHookProc(HWND hDlg,UINT uMsg,WPARAM wPar,LPARAM lPar)
{
switch (uMsg)
{
case WM_NOTIFY:
{
LPOFNOTIFY pofn=(LPOFNOTIFY)lPar;
switch(pofn->hdr.Code)
{
case CDN_FILEOK:// 这是 “文件已存在对话框”出现后 ,用户 点了 ‘OK’,如果 没有 这个消息 就是 cancel
// do what you want
break;
}
}}
}
{
// Do my want
if(/*Do my want falied*/)
{
switch(GetLastError())
{
case ERROR_FILE_EXISTING:
// 文件已经存在,要覆盖吗?
break;
default:
break;
}
}
}
这个 hook 就 这些 CDN_FILEOK
要不 你 自己 做个 save 对话框
”CDN_SELCHANGE“ 里 做些什么 。