Страница 1 из 1

Tabs and Splitter

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

Добавлено: 14 фев 2005, 14:09
Romeo
Как в Excel'е, это какие?

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

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

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

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

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

Добавлено: 15 фев 2005, 17:02
Alezis
Ба-лин... Ладно придётся порыться в 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 читал база там вроде неплохая, иногда помогает а иногда и нет... :( :)

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

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