0

RTLプロパティを使用して、アプリケーションダイアログボックスの編集ボックスにアラビア語のテキストコンテンツを含むツールチップを表示する単純なMFCアプリケーションを作成します。 私のコードは次のようになります。mfcアプリケーションでアラビア語のツールチップを作成する方法

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ですのツールチップ。しかし何らかの理由で、アプリケーションはツールチップをまったく表示しません。どこが間違っていますか?

答えて

0

MFCには独自のツールチップが実装されています。プレーンなWin32ツールチップを使用するのではなく、これを使う方が簡単かもしれません。

CWnd::EanableTooltipsを使用してアクティブにすることができます。 MSDN doku(リンクには完全なサンプルが含まれています)

また、コードプロジェクトにはsampleがあります。

関連する問題