带多行的Win32选项卡控件
Win32 Tab Control w/Multiple Rows
我的Win32应用程序中有一个选项卡控件。控件具有多行功能。当我调整窗口的大小,使选项卡控件的宽度减小时,会显示多行。问题是,当我单击下面一行时,上面一行中的选项卡会被当前选项卡的窗口阻止(选项卡控件没有正确调整当前选项卡的内容窗口的大小,从而使上面一行可见)。我该如何解释这个问题?
这是我调整大小功能的代码:
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 );
此代码来自Microsoft网站。。。
pHdr->hWndTab是选项卡控制的窗口句柄
pHdr->hWndDisplay是当前选项卡内容窗口的窗口句柄
编辑:实际上,在单击下部选项卡后,上部选项卡会移动到控件的顶部。。。但是,它们仍然被内容窗口阻止。。。
我通过调整偏移后的显示矩形来解决问题:
typedef struct tag_dlghdr
{
HWND hWndTab;
HWND hWndDisplay;
RECT rcDisplay;
DLGTEMPLATE *apRes[ MAX_PAGES ];
DLGPROC MsgProc[ MAX_PAGES ];
}DLGHDR
Resize( HWND hWndDlg )
{
DLGHDR *pHdr = ( DLGHDR * )GetWindowLong( hWndDlg, GWL_USERDATA );
DWORD dwDlgBase = GetDialogBaseUnits();
int cxMargin = LOWORD( dwDlgBase ) / 4;
int cyMargin = HIWORD( dwDlgBase ) / 8;
m_niCurTabSel = TabCtrl_GetCurSel( pHdr->hWndTab );
RECT cr;
GetClientRect( pHdr->hWndTab, &cr );
TabCtrl_AdjustRect( pHdr->hWndTab, FALSE, &cr );
OffsetRect( &cr, cxMargin - cr.left, cyMargin - cr.top );
CopyRect( &pHdr->rcDisplay, &cr );
TabCtrl_AdjustRect( pHdr->hWndTab, FALSE, &pHdr->rcDisplay );
SetWindowPos( pHdr->hWndDisplay, 0, pHdr->rcDisplay.left, pHdr->rcDisplay.top, pHdr->rcDisplay.right, pHdr->rcDisplay.bottom, SWP_SHOWWINDOW );
}
相关文章:
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- WinAPI 在单击第一个对话框上的按钮控件并销毁第一个对话框后创建第二个对话框
- 在编译时,C++项目抛出错误 C2228,这是预期的,因为控件在运行时未达到该点
- 如何更改窗体上所有控件的标题?[C++生成器]
- 双击更改 mfc 中列表控件中的行的颜色
- 派生的 wxPanel 控件如何访问其中包含 wxDialog 中的数据?
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- 如何在MFC中的静态文本控件上插入图标?
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 如何在Qt C++中向自定义控件添加属性?
- 如何将选项卡添加到我的选项卡控件(WIN32 API C++ GUI)
- 当我移动跟踪栏时,如何防止控件(选项卡)闪烁和消失与Windows通用控件6.0?
- MFC 对话框控件的"Accept Files"选项如何工作?
- 如何访问尚未打开的功能区选项卡上的控件
- Winapi设置活动选项卡控件
- 带多行的Win32选项卡控件
- 选项卡控件:如何防止所选内容发生更改
- 将对话框控件移动到选项卡中
- 选项卡控件中的嵌入式对话框无法在第二个对话框 MFC 中工作
- Visual Studio 2008中的“设计”选项卡控件(不含SP1)