CFileDialog派生类的问题。

clickme 2001-09-03 10:48:57
从CFileDialog派生子类。
我用Dialog Editor创建了对话框模板IDD_DIALOG1,模板中仅包括我希望添加到通用文件对话框上的控件,模板具有一个不带框架的子窗口风格。然后使用ClassWizard从CFileDialog中派生新的类CConvertDocDlg。
在使用时语句如下:
DWORD dw = OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_EXPLORER | OFN_ENABLETEMPLATE;
CConvertDocDlg FileDlg(TRUE,NULL,NULL,dw,
"WORD Documents(*.DOC)|*.DOC|PDF Documents|*.PDF|All Files(*.*)|*.*||",NULL);
FileDlg.m_ofn.lpTemplateName=MAKEINTRESOURCE(IDD_DIALOG1);
派生类的文件打开对话框可以成功构造和操作,但是显示有问题,可以看到,后加入的对话框总是挡住标准文件对话框上的下拉框和文件列表。在Win2k和98下都是如此,请问是mfc的bug还是我的使用有问题?怎么解决?
另外,如何访问自动加上的标准文件对话框的控件?
...全文
228 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
clickme 2001-09-05
  • 打赏
  • 举报
回复
解决了,原来除了设置模板为无边界子窗体外,还需要设置几个风格,其中最重要的是
WS_CLIPSIBLINGS,这样才能使后加入的模板重绘时不挡住自动加入的控件。
MSDN:
You can create your child dialog box template as you do any other template, except that you must specify the WS_CHILD and WS_CLIPSIBLINGS styles and should specify the DS_3DLOOK and DS_CONTROL styles. The system requires the WS_CHILD style because your template defines a child dialog of the default Open or Save As dialog box. The WS_CLIPSIBLINGS style ensures that the child dialog box does not paint over any of the controls in the default dialog box. The DS_3DLOOK style makes sure that the appearance of the controls in the child dialog box is consistent with the controls in the default dialog box. The DS_CONTROL style makes sure that the user can use the TAB and other navigation keys to move between all controls, default or custom, in the customized dialog box.
至于访问自动加入的控件,MSDN上有例子,我正在看。thanks
蒋晟 2001-09-04
  • 打赏
  • 举报
回复
现在硬盘坏了,MSDN不能用。
你自己在MSDN里面搜stc32吧。
clickme 2001-09-04
  • 打赏
  • 举报
回复
to jiangsheng(蒋晟)
多谢,我试了用MoveWindow(),还是不行。另外,我找不到有这个函数GetDlgCtrl(),使用
GetDlgItem和GetDlgCtrlID都告诉我list1和stc32是未定义的标识符。到底是怎么回事呀?

有兴趣的可以试一下,如果在自己派生的CWinApp类的InitInstance()中加上一条语句
SetDialogBkColor(RGB(000,204,255), RGB(100, 200,0));
的话,会更明显,后加上的对话框模板(IDD_DIALOG1),象一块膏药似的贴在CFileDialog
窗口上,难看极了。高手们帮帮忙吧。thanks
蒋晟 2001-09-04
  • 打赏
  • 举报
回复
>如何访问自动加上的标准文件对话框的控件
GetDlgCtrl(stc32)
GetDlgCtrl(list1)
蒋晟 2001-09-03
  • 打赏
  • 举报
回复
好像对你放置的控件位置有一定要求。实在不行你就直接把里面的窗口来个乾坤大挪移,自己一个个MoveWindow。
jaguarcts 2001-09-03
  • 打赏
  • 举报
回复
gz

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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