Как к определённой вкладке TabControl привязать Edit/RichEdit?
Код:
TabControl = new Wnd (WS_EX_OVERLAPPEDWINDOW, WC_TABCONTROLA, NULL, WS_CHILD |
WS_VISIBLE, ParentWindow->rcClient.left,ParentWindow->rcClient.top,ParentWindow->rcClient.right,
ParentWindow->rcClient.bottom-20,ParentWindow->hWnd,0, hInstance, NULL);
tabitem.mask = TCIF_TEXT;
tabitem.iImage = -1;
tabitem.pszText="Untitled";
TabCtrl_InsertItem(TabControl->hWnd,tN,&tabitem);
NumStr = new Wnd(NULL,"RICHEDIT",NULL,WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_LEFT |
ES_MULTILINE, ParentWindow->rcClient.left+6,ParentWindow->rcClient.top+30,40,
ParentWindow->rcClient.bottom-77,TabControl->hWnd,0,0,0);
::SendMessage(NumStr->hWnd,EM_SETBKGNDCOLOR,0, RGB(253,245,230));
CHARFORMAT cFORMAt;
ZeroMemory(&cFORMAt, sizeof(cFORMAt));
cFORMAt.cbSize = sizeof(CHARFORMAT);
cFORMAt.dwMask = CFM_SIZE | CFM_FACE | CFM_COLOR | CFM_CHARSET;
cFORMAt.crTextColor = RGB(255,140,105);
cFORMAt.bPitchAndFamily = FW_THIN;
lstrcpy(cFORMAt.szFaceName , "a HuxleyCaps");
::SendMessage(NumStr->hWnd,EM_SETCHARFORMAT,0,(LPARAM)&cFORMAt);
HEdit = new Wnd(WS_EX_ACCEPTFILES,WC_EDIT,NULL,WS_CHILD | WS_VISIBLE | WS_HSCROLL |
WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL |ES_AUTOVSCROLL,
ParentWindow->rcClient.left+45,ParentWindow->rcClient.top+30,
ParentWindow->rcClient.right-55,ParentWindow->rcClient.bottom-60,TabControl->hWnd,0,0,0);
WS_VISIBLE, ParentWindow->rcClient.left,ParentWindow->rcClient.top,ParentWindow->rcClient.right,
ParentWindow->rcClient.bottom-20,ParentWindow->hWnd,0, hInstance, NULL);
tabitem.mask = TCIF_TEXT;
tabitem.iImage = -1;
tabitem.pszText="Untitled";
TabCtrl_InsertItem(TabControl->hWnd,tN,&tabitem);
NumStr = new Wnd(NULL,"RICHEDIT",NULL,WS_CHILD | WS_VISIBLE | ES_NUMBER | ES_LEFT |
ES_MULTILINE, ParentWindow->rcClient.left+6,ParentWindow->rcClient.top+30,40,
ParentWindow->rcClient.bottom-77,TabControl->hWnd,0,0,0);
::SendMessage(NumStr->hWnd,EM_SETBKGNDCOLOR,0, RGB(253,245,230));
CHARFORMAT cFORMAt;
ZeroMemory(&cFORMAt, sizeof(cFORMAt));
cFORMAt.cbSize = sizeof(CHARFORMAT);
cFORMAt.dwMask = CFM_SIZE | CFM_FACE | CFM_COLOR | CFM_CHARSET;
cFORMAt.crTextColor = RGB(255,140,105);
cFORMAt.bPitchAndFamily = FW_THIN;
lstrcpy(cFORMAt.szFaceName , "a HuxleyCaps");
::SendMessage(NumStr->hWnd,EM_SETCHARFORMAT,0,(LPARAM)&cFORMAt);
HEdit = new Wnd(WS_EX_ACCEPTFILES,WC_EDIT,NULL,WS_CHILD | WS_VISIBLE | WS_HSCROLL |
WS_VSCROLL | ES_LEFT | ES_MULTILINE | ES_AUTOHSCROLL |ES_AUTOVSCROLL,
ParentWindow->rcClient.left+45,ParentWindow->rcClient.top+30,
ParentWindow->rcClient.right-55,ParentWindow->rcClient.bottom-60,TabControl->hWnd,0,0,0);
Построй в любом фреймворке нужную тебе форму, скомпиль и постри отладчиком, как всё создаётся же.
UPD: один из способов решить твою проблему.
UPD2: попробуй ещё CreateWindowEx(которая создаёт дочерний контрол) в качестве родительского контрола подсовывать хэндл на таб.
CreateWindowEx, её и использую. В качестве родительского, я и использую созданный tabcontrol. Но весь контрол, а мне к конкретной вкладке привязать Edit+RichEdit. Я понимаю, что за отрисовку содержимого конкретного таба я должен отвечать сам. Весь вопрос как это делается!!
Цитата: xrnd
CreateWindowEx, её и использую. В качестве родительского, я и использую созданный tabcontrol. Но весь контрол, а мне к конкретной вкладке привязать Edit+RichEdit. Я понимаю, что за отрисовку содержимого конкретного таба я должен отвечать сам. Весь вопрос как это делается!!
Код не читал, чтоли?
В исходниках мирандовского TabSRMM посмотри.
Т.е. помести все в родительское окошко (контрол какой-нибудь) и делай его визибл или инвизибл
Если что,вот
MorskoyZmey прав. В WinAPI нет понятия TabPage, как в .NET Framework, скажем. Ты привязываешь все к одному TabControl, а потом ловишь событие переключения вкладок и отображаешь нужную часть содержимого.