fox234

Newbie | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Abs62 Ура, вроде сделал: Код: //--------------------------------------------------------------------------------------------------------------------------- LONG WINAPI MainWindowProcedure ( HWND Window, UINT Message, WPARAM wParam, LPARAM lParam ) { RECT RC1; PAINTSTRUCT ps; HDC hdc; switch (Message) { case WM_CREATE: { //----------------------------------- t1 = GetSystemMetrics(SM_CYCAPTION); t2 = GetSystemMetrics(SM_CXSIZEFRAME); t3 = GetSystemMetrics(SM_CYSIZEFRAME); //----------------------------------- self_TabSheet = CreateWindow ( "SysTabControl32", "", WS_CHILD|WS_VISIBLE, 0, 0, 0, 0, Window, (HMENU)0, m_hInstance, NULL ); SendMessage(self_TabSheet, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), MAKELPARAM(true, 0)); TabItem.mask = TCIF_TEXT|TCIF_PARAM; TabItem.dwState = 0; TabItem.dwStateMask = 0; TabItem.pszText = "Система"; TabItem.cchTextMax = 10; TabItem.iImage = 0; TabItem.lParam = (LPARAM)0; SendMessage(self_TabSheet, TCM_INSERTITEM, 1, (LPARAM)&TabItem); TabItem.mask = TCIF_TEXT|TCIF_PARAM; TabItem.dwState = 0; TabItem.dwStateMask = 0; TabItem.pszText = "Система"; TabItem.cchTextMax = 10; TabItem.iImage = 0; TabItem.lParam = (LPARAM)0; SendMessage(self_TabSheet, TCM_INSERTITEM, 2, (LPARAM)&TabItem); SetWindowLong(self_TabSheet, GWL_WNDPROC, (long)&SubTabControlProc); return 0; } case WM_PAINT: { GetClientRect(Window, &RC1); hdc = BeginPaint (Window, &ps); PatBlt(memDC,t2,t1+t2,RC1.right-RC1.left, RC1.bottom-RC1.top, PATCOPY); //----------- SendMessage(Window, WM_PRINT, (WPARAM)memDC, (LPARAM)(PRF_CLIENT|PRF_CHILDREN|PRF_CHECKVISIBLE|PRF_ERASEBKGND|PRF_OWNED)); //----- BitBlt(hdc, 0, 0, RC1.right-RC1.left, RC1.bottom-RC1.top, memDC, t2, t1+t2, SRCCOPY); EndPaint (Window, &ps); return 0; } case WM_ERASEBKGND: { return 1; } case WM_SIZE: { GetClientRect(Window, &RC1); MoveWindow(self_TabSheet, RC1.left+10, RC1.top+10, RC1.right-20, RC1.bottom-20, true); return 0; } case WM_DESTROY: { PostQuitMessage(0); return 0; } } return DefWindowProc ( Window, Message, wParam, lParam ); } //--------------------------------------------------------------------------------------------------- LONG WINAPI SubTabControlProc ( HWND Window, UINT Message, WPARAM wParam, LPARAM lParam ) { HDC hdc; PAINTSTRUCT ps; HWND pWnd = GetParent(Window); switch (Message) { case WM_PAINT://Выключаем перерисовку без двойной буферизации { InvalidateRect(pWnd, NULL, true); hdc = BeginPaint (Window, &ps); EndPaint (Window, &ps); return 0; } } return CallWindowProc ( oldTabControlProc, Window, Message, wParam, lParam ); } //--------------------------------------------------------------------------------- | Глянь, мож чё лишнее. И правильно ли я сделал имитацию необходимости в перерисовке Код: InvalidateRect(pWnd, NULL, true); |
| Всего записей: 5 | Зарегистр. 29-10-2007 | Отправлено: 22:53 23-11-2007 | Исправлено: fox234, 22:56 23-11-2007 |
|