我在工具列中嵌入了幾個子視窗控制元件。我正在嘗試使用 TextOut 在兩個子視窗的正上方添加一個標簽,以便用戶知道這些控制元件的作用。但是,文本永遠不會顯示。工具列似乎被繪制在它上面,覆寫了它。我的問題是,如何讓文本出現在工具列的頂部?而不是被它覆寫?這是我正在使用的代碼片段。對不起,如果代碼草率。我還在學習!如果您需要更多代碼來使用,請告訴我,我會提供完整的代碼。
感謝您的投入,大衛 B.
case WM_CREATE:
LoadLibrary(TEXT ("Msftedit.dll"));
//Create Child Windows
RichEdit = CreateWindow(MSFTEDIT_CLASS, TEXT("EDITOR"), WS_CHILD | ES_MULTILINE | WS_VISIBLE | WS_BORDER,
0, 0, 0, 0, hwnd, RichEditorID, GetModuleHandle(NULL), NULL);
Toolbar = CreateWindow(TOOLBARCLASSNAME, NULL, WS_CHILD | TBSTYLE_FLAT, 0, 0, 0, 0, hwnd,
ToolBarID, GetModuleHandle(NULL), NULL);
ListboxType = CreateWindow(WC_LISTBOX, NULL, WS_CHILD| WS_VISIBLE, 0, 0, 0, 0, Toolbar, ChildID1 2,
GetModuleHandle(NULL), NULL);
ListboxArch = CreateWindow(WC_LISTBOX, NULL, WS_CHILD | WS_VISIBLE, 0, 0, 0, 0, Toolbar, ChildID1 3,
GetModuleHandle(NULL), NULL);
hwndBuildButton = CreateWindow(WC_BUTTON, L"Build", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0, 0, 0, 0, Toolbar, ChildID1 4,
GetModuleHandle(NULL), NULL);
EnumChildWindows(hwnd, EditorChildProc, (LPARAM)&rect);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
SetTextAlign(hdc, TA_TOP);
TextOut (hdc, archListBoxPos 20, 5, ArchLabel, ARRAYSIZE(ArchLabel));
TextOut(hdc, btListBoxPos, 5, BuildLabel, ARRAYSIZE(BuildLabel));
EndPaint(hwnd, &ps);
return 0;
uj5u.com熱心網友回復:
您需要創建一個包含文本的視窗,并將其放在工具列的頂部。您在 wndproc 中所做的繪圖始終從屬于子控制元件:它們會掩蓋它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314733.html
下一篇:獲取已知HWND的路徑
