Winapi 在win32代码中输入“零”时提示自动消息

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 ||

我在win32代码中尝试过工具提示功能,当“确定”单击时,消息仅在我们将鼠标悬停在特定框上时显示。但Iam期望的功能是在单击“确定”时在特定框中自动显示消息。是否可以添加自动弹出功能?我需要一些气球类型的错误弹出窗口。 我的确切场景是,当在对话框中输入零时,单击“确定”时,会出现错误弹出窗口

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,如果我的回答能帮助您解决这个问题,您可以接受。如果没有,请随时告诉我。您的解决方案是可以接受的,它满足我的条件。非常感谢。