Winapi 在OPENFILEW对话框上使用钩子将禁用调整大小控件

Winapi 在OPENFILEW对话框上使用钩子将禁用调整大小控件,winapi,dialog,windows-xp,hook,Winapi,Dialog,Windows Xp,Hook,使用此代码,生成的对话框无法通过鼠标调整大小: #include <windows.h> static UINT_PTR CALLBACK OFNHookProc (HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) { return 0; } int main() { OPENFILENAMEW ofn; ZeroMemory(&ofn, sizeof(ofn)); ofn.lStructSize =

使用此代码,生成的对话框无法通过鼠标调整大小:

#include <windows.h>

static UINT_PTR CALLBACK OFNHookProc (HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) {
  return 0;
}

int main() {
  OPENFILENAMEW ofn;
  ZeroMemory(&ofn, sizeof(ofn));
  ofn.lStructSize = sizeof(OPENFILENAMEW);
  ofn.nMaxFile = MAX_PATH;
  ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_ENABLEHOOK;
  ofn.lpfnHook = OFNHookProc;
  GetOpenFileNameW(&ofn);
  return 0;
}
#包括
hookproc的静态UINT_PTR回调(HWND hdlg、UINT uiMsg、WPARAM WPARAM、LPARAM LPARAM){
返回0;
}
int main(){
openfilenamewofn;
零内存(&ofn,sizeof(ofn));
ofn.lsstructsize=sizeof(OPENFILENAMEW);
ofn.nMaxFile=最大路径;
ofn.Flags=ofn_EXPLORER | ofn_FILEMUSTEXIST | ofn_ENABLEHOOK;
ofn.lpfnHook=OFNHookProc;
GetOpenFileNameW(&ofn);
返回0;
}
移除N_ENABLEHOOK的
将显示正确的对话框窗口,并在右下角显示调整大小指示器。如何使用钩子程序使对话框的大小可由用户调整


(当然,这个钩子在这里是模拟的,只是为了说明错误,不管我在里面放了什么,当然如果它在其他问题上是正确的,结果是一样的)

当使用
of n_ENABLEHOOK
时,需要包含
of n_enableshing
标志。这是记录在案的行为:

OFN_使能分级
0x00800000
允许使用鼠标或键盘调整“资源管理器样式”对话框的大小。默认情况下,“资源管理器样式”“打开”和“另存为”对话框允许调整对话框的大小,而不管是否设置了此标志只有在提供钩子过程或自定义模板时,才需要此标志。旧式对话框不允许调整大小


嗯,当你启用钩子时,你会得到一个遗留对话框。如果您想要新的可调整大小的对话框,那么您必须选择是,但是
IFileDialog
在XP中不起作用。