0
我在我的Win32應用程序中有一個選項卡控件。該控件具有多行功能。當我調整窗口的大小,使得選項卡控件的寬度縮小時,出現多行。問題是,當我點擊其中一個較低的行時,上一行中的選項卡被當前選項卡的窗口阻止(選項卡控件沒有正確調整當前選項卡的內容窗口的大小,以便上面的行可見) 。我如何解決這個問題?Win32選項卡控件w /多行
這裏是我的調整大小功能代碼:
RECT cr;
GetClientRect(pHdr->hWndTab, &cr);
TabCtrl_AdjustRect(pHdr->hWndTab, FALSE, &cr);
OffsetRect(&cr, cxMargin - cr.left, cyMargin - cr.top);
SetWindowPos(pHdr->hWndDisplay, 0, cr.left, cr.top, cr.right, cr.bottom, SWP_SHOWWINDOW);
代碼來自微軟網站...
pHdr-> hWndTab是選項卡控件的窗口句柄
pHdr- > hWndDisplay是當前選項卡的內容窗口的窗口句柄
編輯:其實,在單擊較低的選項卡後,較高的選項卡移動到控件的頂部1 ...然而,它們仍然阻止的內容窗口...
'TCM_ADJUSTRECT'絕對需要多行標籤考慮。你能張貼截圖來說明你看到的實際問題嗎? –
@JonathanPotter你是對的AdjustRect的作品問題是之後出現的OffsetRect()函數......我無法發佈截圖,但在AdjustRect()之後,矩形是正確的......它移動了「頂部」減少22個單位...然後OffsetRect()將'頂部'向上移動20個單位(2 - 22 = -20)...調整選項卡控制窗口大小的正確方法是什麼? –
那你爲什麼要做'OffsetRect'呢? 'TCM_ADJUSTRECT'返回的座標應該是你需要的。 –