Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разделение на два окна, Чтоб слева был список, а справа инфа 
:(
    Опции темы
Kornev
  Дата 1.5.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Ребят, подскажите способ или метод. Мне нужно реализовать программу в которой будет слева список фамилий, а справа информация о том человеке который был выбран из данного списка.
Между этими двумя "окнами" должна быть перегородка, как в С++: у нас слева список файлов, а справа код данного файла... Как сделать эту перегородку??? Ну и второй вопрос: мне понадобится вертикальный скрол, как сделать чтоб размеры скрола всегда соответствовали размеру окна?
CreateWindow("scrollbar","",WS_CHILD|WS_VISIBLE|SBS_VERT, 100, 0, 15, 300,hWnd,(HMENU)1, hInst, NULL);
Что нужно поставить вместо 300 чтоб скрол всегда касался нижней части окна?
PM MAIL WWW   Вверх
srd
Дата 1.5.2007, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 4
Всего: 49



Цитата(Kornev @  1.5.2007,  22:08 Найти цитируемый пост)
Между этими двумя "окнами" должна быть перегородка, как в С++: у нас слева список файлов, а справа код данного файла... Как сделать эту перегородку???

В win32 нет стандартного элемента управления типа Splitter. Такой надо создавать самому.

Цитата(Kornev @  1.5.2007,  22:08 Найти цитируемый пост)
CreateWindow("scrollbar","",WS_CHILD|WS_VISIBLE|SBS_VERT, 100, 0, 15, 300,hWnd,(HMENU)1, hInst, NULL);
Что нужно поставить вместо 300 чтоб скрол всегда касался нижней части окна? 

Здесь задаются только первоначальные размеры окна. Тебе надо написать обработчик WM_SIZE и в нём, зная новые размеры окна, изменять размер и положение scrollbar



--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Kornev
Дата 1.5.2007, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Подскажи пожалуйста, а где именно будут храниться параметры int Width и int Height когда приходит сообщение WM_SIZE?
PM MAIL WWW   Вверх
srd
Дата 1.5.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 4
Всего: 49



В параметре сообщения LPARAM.
Младшие два байта содержат ширину, а старшие два байта - высоту окна.

Код

LRESULT CALLBACK wnd_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
    switch (msg)
    {
    case WM_SIZE:
        {
            int Width = LOWORD(lparam);
            int Height = HIWORD(lparam);
            /* bla bla bla */





--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
anwe
Дата 1.5.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



PM MAIL   Вверх
Kornev
Дата 1.5.2007, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Спасибки anwe и srd!!!!
Кстати, anwe поздравляю с праздником, ты отправил 555 сообщений! Как ни как годовщина!  smile 

PM MAIL WWW   Вверх
anwe
Дата 2.5.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 1
Всего: 23



Kornev, спасибо, я и не заметил smile 
PM MAIL   Вверх
Earnest
Дата 2.5.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(Kornev @  1.5.2007,  16:08 Найти цитируемый пост)
 Ну и второй вопрос: мне понадобится вертикальный скрол, как сделать чтоб размеры скрола всегда соответствовали размеру окна?


Если скролл-бар жестко связан с каким-то окном, нет смысла делать его отдельным контролом, а лучше "какое-то" окно создать со стилем WS_VSCROLL, а потом управлять с помощью GetScrollInfo\SetScrollInfo. Тогда самому ресайзить не надо.


--------------------
...
PM   Вверх
Kornev
Дата 2.5.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 12.12.2006

Репутация: нет
Всего: нет



Всем спасибо за внимание!
Проблема решена  smile 
Хотя по мере решения образовалось не мало прикольных мелочей...
WM_CREATE:
hWndScroll=CreateWindow("scrollbar","",WS_CHILD | WS_VISIBLE |
SBS_VERT, 100,150, 15, 768,hWnd,(HMENU)1, hInst, NULL);
break;

WM_SIZE:
Height=HIWORD(lParam);
Width=LOWORD(lParam);
SetWindowPos(hWndScroll,HWND_TOPMOST,150,50,15,Height-50, SWP_NOZORDER); 
break;
 
Так всё славно работало, но мерцало при изменении размера... ТРАНДЕЦ!!!
ПО этому: smile 
WM_ERASEBKGND:
break;

Теперь Не мигает но и не обнавляет окно  smile 
Значит: smile 

case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
Rectangle(hdc,0,50,150,Height);//Левый список
Rectangle(hdc,165,50,Width,Height);//правый список
Rectangle(hdc,0,0,Width,50);//Верхний прямоугольик

EndPaint(hWnd, &ps);
         break;

Может быть слегка по деревянному, но зато работает хорошо!!!
Никаких мерцаний и чёткое прилягание границ скрола к области окна!
Кто заметил какие то явные недостатки, прозьба писать
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.