【问题标题】:using hook on OPENFILEW dialog disables resize control在 OPENFILEW 对话框上使用钩子禁用调整大小控制
【发布时间】:2015-07-09 02:08:55
【问题描述】:

使用此代码绘制的结果对话框无法通过鼠标调整大小:

#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;
}

删除OFN_ENABLEHOOK 会显示正确的对话窗口,右下角有调整大小指示器。如何制作用户可调整大小并带有钩子程序的对话框?

(当然这里那个hook是mock的,只是为了说明错误,不管我里面放什么,当然如果其他方面是对的,结果都是一样的)

【问题讨论】:

  • Hmya,当您启用挂钩时,您将获得旧对话框。如果你想要新的可调整大小的,那么你必须use IFileDialog
  • 可以,但IFileDialog 在 XP 中不起作用。

标签: winapi dialog windows-xp hook


【解决方案1】:

使用OFN_ENABLEHOOK 时需要包含OFN_ENABLESIZING 标志。这是记录在案的行为:

OPENFILENAME structure

OFN_ENABLESIZING
0x00800000
允许使用鼠标或键盘调整资源管理器样式对话框的大小。默认情况下,资源管理器样式的打开和另存为对话框允许调整对话框的大小,无论是否设置了此标志。 仅当您提供挂钩过程或自定义模板时才需要此标志。旧式对话框不允许调整大小。

【讨论】:

    猜你喜欢
    • 2012-01-26
    • 2016-11-20
    • 1970-01-01
    • 2013-08-25
    • 2016-02-25
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多