在Windows应用程序中,是否可以在打开SaveAs对话框后在SaveAs对话框前显示弹出消息?所有我设法得到的是关闭对话框后弹出窗口显示。
我需要编辑用C ++编写的旧应用程序(我不是作者),但无法管理此任务。这是代码的一部分:
/ * ----调用以显示保存文件对话框---- * /
ofn.hwndOwner = hwnd;
ofn.lpstrFile = lpstrFileName;
ofn.lpstrTitle = lpstrTitleName;
res = GetSaveFileNameW( &ofn );
/* ---- fix file extension ---- */
MessageBox(NULL, "Test", "Testing", MB_OK);
谢谢,
伊利亚·
答案 0 :(得分:3)
如果我理解你是正确的,你需要在关闭对话框之前检查一些东西(例如,文件扩展名)并在关闭时显示消息。如果是这样,请查看OPENFILENAME Structure中的OFN_ENABLEHOOK标志。在这种情况下,您的代码看起来像
ofn.hwndOwner = hwnd;
ofn.lpstrFile = lpstrFileName;
ofn.lpstrTitle = lpstrTitleName;
/* enables the hook function */
ofn.Flags |= OFN_ENABLEHOOK;
ofn.ofn.lpfnHook = (LPOFNHOOKPROC) MyHookProc;
/* some code here */
res = GetSaveFileNameW( &ofn );
MyHookProc
的代码如下所示:
static UINT CALLBACK MyHookProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_NOTIFY) {
OFNOTIFYW *notify = (OFNOTIFYW *) lParam;
if (notify->hdr.code == CDN_FILEOK) {
/* your code here */
}
}
}
希望它对你有所帮助。
答案 1 :(得分:0)
你可以,但这将是一个非常黑客。你必须创建FileDialog并打开它无模式而不是模态,并隐藏。所以窗户在那里,但你看不到它。当您单击“弹出窗口”时,您可以取消隐藏窗口对话框。
答案 2 :(得分:0)
听起来您想要扩展保存文件对话框的GUI。您可以使用自己的对话框资源模板扩展GUI,并指定OFN_ENABLETEMPLATE
。这是有多少应用程序显示文档的预览/元数据。