*
Ja das prob hatte ich am anfang auch...
in meiner TabCtrl mach ich das so, ich kopier dir mal meine Funktionen die ich bezüglich der größe habe einfach mal hier rein...
BOOL CTableCtrl::DefSizeDlg(HWND hWndParent, CRect *pRc)
{ /**********************************************************************************************
DEFAULT SIZE DIALOG
wird bei der erstellung des Dialoges die Breite & Höhe mit Null angegeben,
wird diese Funktion aufgerufen um die größtmöglich Fläche für den TabDialog
zur verfügung zu stellen.
- pRc Rechteckstrucktur für den TabDialog
**********************************************************************************************/
int iHeight = 28;
int iWidth = 8;
if(::GetMenu(hWndParent) != NULL)
iHeight = 46;
GetWindowRect(hWndParent,pRc);
//Justiere das Rechteck
return ::SetRect(pRc, 2, 2, (pRc->Width() - iWidth), (pRc->Height() - iHeight));
}
BOOL EXPORT CTableCtrl::SetRect(CRect *pRc)
{ /**********************************************************************************************
SET RECT
setzt die Table Control auf ihre neuen Koordinaten
- in
- pRc neue Rechteckstrucktur
**********************************************************************************************/
HWND hWndTab = GetDlgItem();
// Das TabCtrl ueberdeckt die komplette Client-Area
return MoveWindow(hWndTab, pRc->left, pRc->top, pRc->Width(), pRc->Height(), TRUE);
}
BOOL EXPORT CTableCtrl::GetRect(CRect *prc)
{ /**********************************************************************************************
GET RECT
gibt die Table Control Koordinaten im Elternfenster zurück
- in
- pRc Rechteckstrucktur der Fensterkoordianten TabCtrl
**********************************************************************************************/
HWND hWndTab = GetDlgItem();
RECT rtab_0;
LONG lStyle = GetStyle();
// Kalkuliere den Tab Bereich
BOOL bRect = GetWindowRect(hWndTab, prc);
ScreenToClient(::GetParent(hWndTab), (POINT*)&prc->left);
ScreenToClient(hWndTab, (POINT*)&prc->right);
TabCtrl_GetItemRect(hWndTab,0,&rtab_0); //Die Tab selbst
if((lStyle & TCS_BOTTOM) && (lStyle & TCS_VERTICAL)) //Tabs rechts
{
prc->top = prc->top ; //x coord
prc->left = prc->left ; //y coord
prc->bottom = prc->bottom - 2; // height
prc->right = prc->right - (23 + rtab_0.right-rtab_0.left); // width
}
else if(lStyle & TCS_VERTICAL) //Tabs links
{
prc->top = prc->top; //x coord
prc->left = prc->left + (20 + rtab_0.right-rtab_0.left); //y coord
prc->bottom = prc->bottom -2; // height
prc->right = prc->right - (rtab_0.right-rtab_0.left-18); // width
}
else if(lStyle & TCS_BOTTOM) //Tabs unten
{
prc->top = prc->top ; //x coord
prc->left = prc->left ; //y coord
prc->bottom = prc->bottom - (4 + (rtab_0.bottom-rtab_0.top)); // height
prc->right = prc->right -2; // width
}
else //Tabs oben
{
prc->top = prc->top + ( 2 + rtab_0.bottom - rtab_0.top); //x coord
prc->left = prc->left ; //y coord
prc->bottom = prc->bottom - ((rtab_0.bottom - rtab_0.top)-16); // height
prc->right = prc->right - 2; // width
}
return bRect;
}
void CTableCtrl::ShowTabDlg (HWND hWnd)
{ /**********************************************************************************************
SHOW TAB DIALOG
bringt den neu erstellten Tab Dialog zum vorschein
- hWndTab Handle Dialoges
**********************************************************************************************/
HWND hWndTab = GetDlgItem();
BringWindowToTop(hWnd);
ShowWindow(hWnd,SW_SHOW);//SW_HIDE
if(::SendMessage(hWndTab, CCM_GETVERSION, 0, 0) >= 6)
MyEnableThemeDialogTexture(hWnd, ETDT_ENABLETAB);
}
void EXPORT CTableCtrl::AdjustRect( BOOL bLarger, LPRECT lpRect )
{ /**********************************************************************************************
ADJUST RECT
Errechnet den Bildschirmbereich eines Fenstervierecks,
das einem spezifizierten Bildschirmbereich entspricht
- in
- bLarger Wenn dieser Parameter TRUE ist, spezifiziert prc ein
Anzeige Viereck und empfängt das entsprechende Fensterviereck.
Wenn dieser Parameter FALSE ist, spezifiziert prc ein Fensterviereck
und empfängt den entsprechenden Bildschirmbereich.
- lpRect Addresse einer Rechteckstrucktur
**********************************************************************************************/
HWND hWndTab = GetDlgItem();
::SendMessage(hWndTab,TCM_ADJUSTRECT,(WPARAM) (BOOL) bLarger,(LPARAM) (LPRECT) lpRect);
}
folgender code stammt von winapi.net
typedef HRESULT (WINAPI * ENABLETHEMEDIALOGTEXTURE)(HWND, DWORD);
HRESULT WINAPI MyEnableThemeDialogTexture(HWND hWnd, DWORD dwFlags)
{
ENABLETHEMEDIALOGTEXTURE pfnETDT;
HINSTANCE hDll;
HRESULT hr;
hr = HRESULT_FROM_WIN32(ERROR_CALL_NOT_IMPLEMENTED);
if(NULL != (hDll = LoadLibrary(TEXT("uxtheme.dll"))))
{
if(NULL != (pfnETDT = (ENABLETHEMEDIALOGTEXTURE)GetProcAddress(hDll,
"EnableThemeDialogTexture")))
{
hr = pfnETDT(hWnd, dwFlags);
}
FreeLibrary(hDll);
}
return(hr);
}