16,472
社区成员
发帖
与我相关
我的任务
分享
BOOL CExpFileOpen::OnInitDialog()
{
CFileDialog::OnInitDialog();
// TODO: Add extra initialization here
GetDlgItem(IDC_STATIC_TXT)->SetWindowText("Show you how to put it in !");
//
CFileDialog *Parent=(CFileDialog*)GetParent();// not GWL_WNDPROC
WNDPROC OldDlgProc = (WNDPROC)SetWindowLong(Parent->m_hWnd, DWL_DLGPROC, (LONG)NewDlgProc);
// save it in window
::SetProp(Parent->m_hWnd,"ExpFileOpen",(HANDLE)OldDlgProc);
//
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
LRESULT CALLBACK NewDlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) //子类化过程
{
LPHELPINFO lphi;
switch(Msg)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
afxDump << " OK\n";
break;
case IDCANCEL:
afxDump << " CANCEL\n";
break;
default:
afxDump << LOWORD(wParam) << " =ID\n";
}
break;
case WM_SYSCOMMAND:
wParam &= 0xFFFF;
switch (wParam)
{
case SC_CLOSE:
afxDump << "Close\n";
break;
case SC_CONTEXTHELP:
afxDump << "Help\n";
break;//return 1;//
}
break;
case WM_HELP:
lphi = (LPHELPINFO) lParam;
afxDump << lphi->iCtrlId << " Help\n";
break;
}
return CallWindowProc((WNDPROC)::GetProp(hWnd,"ExpFileOpen"), hWnd, Msg, wParam, lParam);
}
//#define NO_TEMP
void CMyFileOpenDlg::OnButtonNew()
{
// TODO: Add your control notification handler code here
char fileName[MAX_PATH]="";
#ifndef NO_TEMP
CExpFileOpen dlgFile(TRUE);
#else
CFileDialog dlgFile(TRUE);
#endif
//if use new style!
OSVERSIONINFO VersionInformation;
GetVersionEx(&VersionInformation);
if(VersionInformation.dwMajorVersion >= 5)
dlgFile.m_ofn.lStructSize=88;// new =88
else
dlgFile.m_ofn.lStructSize=76;// old =76
#ifndef NO_TEMP
dlgFile.m_ofn.Flags |= OFN_ENABLETEMPLATE;// add our temp !
dlgFile.m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_EX_OPEN); //=1547!
dlgFile.m_ofn.hInstance=AfxGetInstanceHandle();
#endif
dlgFile.m_ofn.lpstrTitle = "Explorer Style Open File";
dlgFile.m_ofn.lpstrFile = fileName;
dlgFile.m_ofn.Flags |= OFN_EXPLORER;
//'Clip siblings' 'Child' 'None' '3Dlook' 'Control' 'Visible'
dlgFile.m_ofn.lpstrFilter="Any file(*.*)\0*.*\0";
dlgFile.m_ofn.lpstrDefExt = "txt";
// show
dlgFile.DoModal();
#ifdef _DEBUG
afxDump << fileName << " \n";
#endif
}
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
if (hr == S_OK) {
DWORD fdlgopts;
hr = pfd->GetOptions(&fdlgopts);
if (hr == S_OK) {
// 强制开启预览面板
hr = pfd->SetOptions(fdlgopts | FOS_FORCEPREVIEWPANEON);
}
if (hr == S_OK) {
hr = pfd->Show(NULL);
if (hr == S_OK) {
IShellItem *pshi;
hr = pfd->GetResult(&pshi);
if (hr == S_OK) {
PWSTR pszFilePath = NULL;
hr = pshi->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
if (hr == S_OK) {
////
CoTaskMemFree(pszFilePath);
}
pshi->Release();
}
}
}
pfd->Release();
} else {
OPENFILENAME ofn = { 0 };
////
if (GetOpenFileName(&ofn)) {
////
}
}
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
if (hr == S_OK) {
DWORD fdlgopts;
hr = lpFileDlg->GetOptions(&fdlgopts);
if (hr == S_OK) {
// 强制开启预览面板
lpFileDlg->SetOptions(fdlgopts | FOS_FORCEPREVIEWPANEON);
}
hr = pfd->Show(NULL);
if (hr == S_OK) {
IShellItem *pshi;
hr = pfd->GetResult(&pshi);
if (hr == S_OK) {
PWSTR pszFilePath = NULL;
hr = pshi->GetDisplayName(SIGDN_FILESYSPATH, &pszFilePath);
if (hr == S_OK) {
////
CoTaskMemFree(pszFilePath);
}
pshi->Release();
}
pfde->Release();
}
pfd->Release();
} else {
OPENFILENAME ofn = { 0 };
////
if (GetOpenFileName(&ofn)) {
////
}
}