Winapi 在win32代码中输入“零”时提示自动消息
我在win32代码中尝试过工具提示功能,当“确定”单击时,消息仅在我们将鼠标悬停在特定框上时显示。但Iam期望的功能是在单击“确定”时在特定框中自动显示消息。是否可以添加自动弹出功能?我需要一些气球类型的错误弹出窗口。 我的确切场景是,当在对话框中输入零时,单击“确定”时,会出现错误弹出窗口Winapi 在win32代码中输入“零”时提示自动消息,winapi,win32gui,win32-process,Winapi,Win32gui,Win32 Process,我在win32代码中尝试过工具提示功能,当“确定”单击时,消息仅在我们将鼠标悬停在特定框上时显示。但Iam期望的功能是在单击“确定”时在特定框中自动显示消息。是否可以添加自动弹出功能?我需要一些气球类型的错误弹出窗口。 我的确切场景是,当在对话框中输入零时,单击“确定”时,会出现错误弹出窗口 HWND gzui_controls::create_tool_tip_balloon(HWND hdlg, int tool_id, PTSTR text) const { if (!tool_id ||
HWND gzui_controls::create_tool_tip_balloon(HWND hdlg, int tool_id, PTSTR text) const { if (!tool_id || !hdlg || !text) { return FALSE; }
HWND hwndTool = GetDlgItem(hdlg, tool_id);
if (WM_LBUTTONUP)
{
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP | SWP_NOMOVE | TTS_NOPREFIX | TTS_BALLOON | BS_PUSHBUTTON,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
hdlg, NULL,
getModuleInstance(), NULL);
if (!hwndTool || !hwndTip)
{
return (HWND)NULL;
}
// Associate the tooltip with the tool.
TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo);
toolInfo.hwnd = hdlg;
toolInfo.uFlags = TTF_IDISHWND | TTF_SUBCLASS;
toolInfo.uId = (UINT_PTR)hwndTool;
toolInfo.lpszText = text;
SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&toolInfo);
return hwndTip;
}
以下是输入值无效时显示信息的引出序号提示示例
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
// ...
editHwnd = CreateWindow(L"EDIT",
NULL,
WS_VISIBLE | WS_CHILD | ES_MULTILINE | WS_BORDER,
120,
10,
100,
100,
hWnd,
NULL,
hInst,
NULL);
// ...
case WM_COMMAND:
{
if (HIWORD(wParam) == EN_CHANGE)
{
// TODO: Add logic of detecting input value here
if (editHwnd == (HWND)lParam) // && inputVal == 0
{
balloonTip.cbStruct = sizeof(EDITBALLOONTIP);
balloonTip.pszText = L"Zero is given as input";
balloonTip.pszTitle = L"Tips";
balloonTip.ttiIcon = TTI_INFO;
Edit_ShowBalloonTip(editHwnd, &balloonTip);
}
}
}
break;
指
注意:要使用Edit_ShowBallootTip宏,必须提供一个清单来指定
Comclt32.dll版本6.0
它将是这样的:
是的,我也尝试过消息框,但我想在对话框中显示气球式的提示。如下面的链接中所示……是否有任何可能性?@MOHANASUDHARSANK如果您想使用单击“确定”按钮作为触发器,您可以使用代码段替换我的答案中的MessageBox行,但不要调用EndDialog,否则提示消息将随对话框窗口一起消失。确保输入有效时调用EndDialog。提示消息仍将在大约几秒钟后消失,与所有其他工具提示一样。@MOHANASUDHARSANK更改提示消息的显示时间和其他功能,以获取详细信息。@MOHANASUDHARSANK在单击按钮后查看我的更新答案以获取使用工具提示的快照。@MOHANASUDHARSANK检查零件关于如何决定使用哪个控件。嗨,Mohanasudharsan,如果我的回答能帮助您解决这个问题,您可以接受。如果没有,请随时告诉我。您的解决方案是可以接受的,它满足我的条件。非常感谢。