当使用:: ReplaceText()Win32 api函数时,是否可以禁用或隐藏查找/查找下一个按钮,只留下替换?
如果不是,我将需要滚动自己的对话框。
答案 0 :(得分:2)
ReplaceText()
对话框允许您使用各种direction
标记隐藏Match case
,Match Whole Word
和FR_HIDE...
框,但它没有任何标记用于隐藏Find Next
和Replace
按钮的标志。所以你必须手动完成。
有两种方法可以做到这一点:
您可以创建仅包含要显示的UI字段的自定义对话框资源,然后您可以启用FR_ENABLETEMPLATE
或FR_ENABLETEMPLATEHANDLE
标记并将对话框作为模板提供<{1}}或lpTemplateName
字段。
您可以启用hInstance
标记并提供FR_ENABLEHOOK
回调,以便在处理lpfnHook
消息时禁用/隐藏默认对话框中的现有按钮。
MSDN文档中描述了这些技术:
我会选择#2,因为它很容易在代码中实现,例如:
WM_INITDIALOG
UINT_PTR CALLBACK FRHookProc(HWND hdlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
{
if (uiMsg == WM_INITDIALOG)
{
HWND hBtn = GetDlgItem(hdlg, 1); // The "Find Next" button is ID 1
if (hBtn)
ShowWindow(hBtn, SW_HIDE);
}
return 0;
}