PDA

Просмотр полной версии : Tabs and Splitter



Alezis
13.02.2005, 03:21
Люди подскажите как создать закладки(tabs) под Win32(хотя бы сам принцип) , но не стандартные а как в Excele, и как ещё описать разделитель окна , т.е. splitter под апи функции. Мот кто знает какие статьи иль исходники. :D

Romeo
14.02.2005, 14:09
Как в Excel'е, это какие?

Eugie
14.02.2005, 17:33
В WinAPI есть 2 типа закладок: tab controls и property sheets. Первые требуют все делать вручную (т.е. скрывать-показыать контролы при переключении между закладками). Вторые в этом смысле гораздо удобнее, т.к. фактически каждая закладка в этом случае - отдельное диалоговое окно, которое отображается внутри sheet при переключении. Поэтому рекомендую использовать property sheets (подробности см. в MSDN), причем если пишешь на VC++, то проще воспользоваться MFC классами CPropertSheet/CPropertyPage. Что касается разделителей, то стандартного API контрола нет, в различных application frameworks он реализован по-разному. Например, в MFC есть класс CSplitterWnd, в Delphi VCL - TSplitter. Читай документацию.

Alezis
14.02.2005, 20:57
Спасибо конечно,но...не MFC мне нужно.
мот не правильно вопрос сформулировал.
Мне нуны закладки которые нуна писать самому начиная от корней и до самых кончиков. Вот я и прошу помочь мне какими нить статьями а мот и примерами. Со сплиттером тоже самое (НЕ MFC). Как его реализовать только методами API.

Romeo
14.02.2005, 21:25
Splitter - это библиотечная надстройка. API такого нет. А вот для закладок и визардов есть API (См. PropertySheet Win32 SDK).

Alezis
15.02.2005, 00:30
Я не знаю надстройка это или нет мне просто надо сделать разделитель окон ,сплиттер или как он там по научному называется. Мне просто нуно моё окно разбить им на две части. Вот и всё.
Про закладки спасибо посмотрю.

Romeo
15.02.2005, 11:13
Говоря о библиотечной надстройке я имел ввиду, что такого стандартного Windows-контрола - нет, и придётся всё делать самому, собственными ручками. Для того, что посмотреть как это делается советую изучить исходники класса CSplitterWnd в MFC либо темплейта CSplitterWindowT в WTL.

Alezis
15.02.2005, 17:02
Ба-лин... Ладно придётся порыться в MFC и по нету полазить.
Ещё такая фишка начал я тут сам табы писать написал класс контрола
+ ещё клас отдельной закладки. Всё вроде правильно, хотя может чего то не допонимаю, кароче :
создал в вижуале проект под вин32 и всунул туда свой класс, ну чтоб посмотреть на мои закладки(чё вообще получилось). Создал объект моего контрола, добавил 3 закладки:


cl_MyTabCtrl clTabCtrl;
clTabCtrl.Add("first");
clTabCtrl.Add("second");
clTabCtrl.Add("third");

и тут странные вещи начались, когда смотрю по шагам в функциях моего контрола объявленные в этой функции локальные преременные не хотят работать :


0 int m;
1 int clTabCtrl::SomeFunc1()
2 {
3 int n = 0;
4 n = SomeFunc2();
5 m = SomeFunc2();
6 ...........
..........
51 return n;
52 }
53

В этом случае если например n должно быть равно 2 то почему то оно остаётся равным 0, хотя всё написано правильно, в тоже время m, которое объявлено глабально работает и становиться равным 2. Кроме того когда стрелочка отладчика стоит на 6 строке то потом после f10 она сразу перепрыгивает на 52 а потом (после очередного f10)снова возврошается на 5 как и должна была сделать после 1 раза, и только тогда m изменяется. Мот кто знает что это такое происходит потому что я не знаю, может просто знаний мало, кароче если у кого появиться какие ниить предположения пишите.
:?: :?: :?: Кста, кто не знает, прикольная фича http://koders.com/ пишешь что ты ищешь(хотя бы предполагаешь) и она тебе выдаёт кучу файлов других программеров в которых встречается то что ищешь :D читал база там вроде неплохая, иногда помогает а иногда и нет... :( :)

Romeo
15.02.2005, 18:07
Я знаю что происходит. Проект не пересобрался. И ты дебажишь старый бинарный код на новом текстовом коде :)

Alezis
15.02.2005, 21:42
Большое тебе Romeoчеловеческое спасибо. В принципе оказалось что я просто собирал в релизе а не на дебаге... :lol: