如何在mfc应用程序中创建具有阿拉伯文本的工具提示

时间:2017-07-26 09:31:33

标签: visual-c++ visual-studio-2013 mfc tooltip windows-applications

我想创建一个简单的MFC应用程序,该应用程序使用RTL属性在应用程序对话框中为编辑框显示具有给定阿拉伯文本内容的工具提示。 我的代码如下所示:

HWND CMFCApplicationDlg::CreateToolTip(HWND hWnd, LPCTSTR szText){

    hWndTT = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
             WS_POPUP | TTS_ALWAYSTIP | TTS_BALLOON,
             CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
             m_hWnd,
             NULL,
             GetModuleHandle(NULL),
             NULL);

    if(!hWndTT)
    {
        return NULL;
    }

    if (szText == NULL)
    {
        ::DestroyWindow(hWndTT);
        hWndTT = NULL;
        return NULL;
    }

// Set up the tool information. In this case, the "tool" is the entire parent window 
    toolItem.cbSize = sizeof(toolItem);
    toolItem.uFlags = TTF_IDISHWND | TTF_SUBCLASS | TTF_RTLREADING;//Setting RTL flag here
    toolItem.hwnd = m_hWnd;
    toolItem.hinst = GetModuleHandle(NULL);
    toolItem.lpszText = (wchar_t *)szText;
    toolItem.uId = (UINT_PTR)hWnd;

    ::GetClientRect(hWnd, &toolItem.rect);

    // Associate the tooltip with the tool window    
    LRESULT result = ::SendMessage(hWndTT, TTM_ADDTOOL, 0, (LPARAM)&toolItem);

   return hWndTT;
}

我正在以这种方式从OnInitDialog()方法调用此函数:

CreateToolTip((HWND)GetDlgItem(IDC_EDIT_DUMMY), L".استخدم 2 من المرات في اليوم");

此处IDC_EDIT_DUMMY是我尝试附加工具提示的编辑框的ID。但由于某种原因,应用程序根本不显示工具提示。我哪里错了?

1 个答案:

答案 0 :(得分:0)

MFC拥有自己的工具提示实现。可能更容易使用它而不是使用普通的Win32工具提示。

您可以使用CWnd::EanableTooltips激活它。 MSDN doku(请参阅链接包含完整示例)

此外,代码项目也有sample