GetOpenFileName。如何以编程方式启用和禁用“上一级”按钮?

时间:2014-08-26 20:32:36

标签: winapi getopenfilename

使用GetOpenFileName对话框。使用OFN_EXPLORER并指定一个钩子(所以我得到了XP风格的对话框)。我可以隐藏/显示和启用/禁用对话框中的许多控件,但不是"向上一级" (父目录)按钮?

在钩子函数中,我如何以编程方式启用和禁用“上一级”"按钮?

编辑:回复"可能已经回答了#34;:不,这根本不是同一个问题。我特意尝试启用和禁用" Parent"对话框上的按钮。

1 个答案:

答案 0 :(得分:1)

这里描述了这样做的方法:

http://www.codeproject.com/Articles/29/Customizing-the-Windows-Common-File-Open-Dialog

相关代码位于标题"隐藏工具栏"。还有一个启用标志,所以我非常确定我可以使用这种机制来实现这一点。

编辑:这是方法。这会隐藏按钮,但删除TBSTATE_HIDDEN并保留TBSTATE_INDETERMINATE应该会导致它可见但已禁用。

const int TB_BTN_UPONELEVEL = 40961;
const int TB_BTN_NEWFOLDER  = 40962;

void HideToolbarBtns ( HWND hWndToolbar )
{
   TBBUTTONINFO tbinfo;
   tbinfo.cbSize = sizeof(TBBUTTONINFO);
   tbinfo.dwMask = TBIF_STATE;
   tbinfo.fsState = TBSTATE_HIDDEN | TBSTATE_INDETERMINATE;

   ::SendMessage(hWndToolbar,TB_SETBUTTONINFO,
      (WPARAM)TB_BTN_UPONELEVEL,(LPARAM)&tbinfo);
   ::SendMessage(hWndToolbar,TB_SETBUTTONINFO,
      (WPARAM)TB_BTN_NEWFOLDER,(LPARAM)&tbinfo);
}