调整下FileDialog的button位置,编译通过说明东西都在。可能换了编译环境位置不同了。
解决方案 »
- 线程WaitForSingleObject函数疑惑
- 创建DLL时遇到两个问题~ 静态数据成员string与向量vector的警告。
- 禁止dialog中listctr的水平滚动条
- 关于《windows程序设计》书中的 程序ABOUT2 的小问题(先到先得啊)
- mfc 知道odbc的数据源名称,怎么得到该数据源中配置的数据库名称?
- 在windows2000下 使用 Turboc2 编写程序时候,DOS窗口太小。如何把大变成屏幕那么大,方便写程序
- 紧急救助:com字符串转换问题和ASP调用问题?
- 请教!!!!!
- 该看哪些书?
- 工作需要: 哪里有E文的NT4.0 Server下载?
- 能够实现将一个字符串拷贝到另外一个字符串的指定位置吗?
- 为什么用extern定义一个全局变量,居然出现编译错误
是想定制CFileDialog对话框吗?可以参考一下这个?
如果有,用GetWindowsRect看一下button的位置
enum { IDD = IDD_DLG_FILESPECIAL }; 这一句是无效的代码,它并不是你所相像的如果直接DoModal窗口就会显示,而必须像创建普通窗口一样,先创建再显示
1.CSpcialDialog dlg;
if(!IsWindow(dlg.m_hWnd)){ //如果dlg没有创建成功成为一个窗口
dlg.Create(窗口ID,this);
}
dlg.ShowWindow();
m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DLG_FILESPECIAL);
这句话是把窗体当成了FileDialog的模板的。
关键是2005下很正常~
//if (m_bVistaStyle == TRUE)
//{
// ApplyOFNToShellDialog();
// HRESULT hr = (static_cast<IFileDialog*>(m_pIFileDialog))->Show(m_ofn.hwndOwner);
// nResult = (hr == S_OK) ? IDOK : IDCANCEL;
//}
/*else*/ if (m_bOpenFileDialog)
nResult = ::AfxCtxGetOpenFileName(&m_ofn);
else
nResult = ::AfxCtxGetSaveFileName(&m_ofn);
注意在vs2010里面重载时比05之前版本的多两个参数,最后一个参数就是m_bVistaStyle。
如:
CFilePreDlgEx(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,
DWORD dwSize = 0,
BOOL bVistaStyle = FALSE);
最后一个参数设为FALSE.
在自己定义的class(继承自CFileDialog)的构造函数中加入下面两句即可
m_bVistaStyle=FALSE;
m_dwRef = 1;