当我使用GetOpenFileName函数调用打开对话框的时候,当lpfnHook=(LPOFNHOOKPROC)NULL时候,出现的对话框的样式和
当lpfnHook=(LPOFNHOOKPROC)OpendlgProc时出现的对话框样式不一样,请问怎么设置才能和lpfnHook=NULL时出现的对话框样式一样?
我的ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ENABLEHOOK;

解决方案 »

  1.   

    是不是提供了OFNHOOKProc挂钩函数,出现的一定是浏览器风格的Open对话框?
      

  2.   

    这个样式应该和Flags的值有关。
      

  3.   

      供你参考我的文本编辑器OFN_EXPLORER显示的不是经典风格,去掉就显示老板式的对话框
      ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_FILEMUSTEXIST |OFN_PATHMUSTEXIST | OFN_HIDEREADONLY|
        OFN_ENABLETEMPLATE | OFN_ENABLEHOOK |OFN_ENABLESIZING;   
      ofn.lpstrFile = szFile;   
      ofn.nMaxFile = sizeof(szFile);   
      ofn.lpstrFileTitle = szFileTitle;   
      ofn.lpstrInitialDir = NULL;   
      ofn.nMaxFileTitle = NULL;   
      ofn.lpstrTitle = ofnTitle;
      ofn.lpstrFilter = _T("文本文件(*.txt)\0*.txt; \0所有文件\0*.*");   
      ofn.lStructSize = sizeof(OPENFILENAME);
      ofn.hInstance = hInst;
      ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DIALOG_HOOK);
      ofn.lpfnHook = (LPOFNHOOKPROC)CodeSelProc; 
      ofn.hwndOwner = hWnd;
      

  4.   

    当然可以不使用模板啊,我使用模板是为了在原来的公共对话框上面再添加自己的控件IDD_DIALOG_HOOK。
    如果你就打开文件根本不需要那些,只要这样就OK了。ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY;   
      ofn.lpstrFile = szFile;   
      ofn.nMaxFile = sizeof(szFile);   
      ofn.lpstrFileTitle = szFileTitle;   
      ofn.lpstrInitialDir = NULL;   
      ofn.nMaxFileTitle = NULL;   
      ofn.lpstrTitle = _T("打开");
      ofn.lpstrFilter = _T("文本文件(*.txt)\0*.txt; \0所有文件\0*.*");   
      ofn.lStructSize = sizeof(OPENFILENAME);
      ofn.hwndOwner = hWnd; //父窗口句柄
      

  5.   

    有OFN_EXPLORER 标志,打开的肯定是新的样式。我要打开老的样式,并且我要使用Hook,来调整对话框的初始显示位置。但使用HOOK就导致Open对话框出现的是新的样式(浏览器风格)。所以,没有什么好的办法。
      

  6.   

    就是不明白,为什么加了HOOK后,Open对话框的风格就改变了呢?除了使用模板(OFN_ENABLETEMPLATE)之外,怎样使用HOOK,可以不改变Open对话框的风格呢?