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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать Splitter, WinAPI без MFC без ресурсов 
V
    Опции темы
Belous
Дата 8.11.2015, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проект создаю на C++, используя только чистый WinAPI без MFC и без ресурсов.
Как создать разделитель окна на две части. Предполагаю сделать окно шириной в два пикселя а затем прописать всю логику его событий. Или как-то нужно по-другому? Может у кого-нибудь есть ссылки на примеры?
PM MAIL   Вверх
GremlinProg
Дата 8.11.2015, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2705
Регистрация: 9.8.2005
Где: Тюмень

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



В принципе - можно. Стандартного такого компонента нет, так что да, придется самому описать всю логику через WinAPI, либо перейти на движок помощнее. А в чем на данном этапе проблемы?

Добавлено через 5 минут и 12 секунд
Первые же ссылки в гугле конечно дают много решений: http://stackoverflow.com/questions/5561236...plitter-control
в том числе и на codeproject: http://www.codeproject.com/KB/splitter/

но я не заметил там чистых решений через WinAPI, так что, если есть вопросы или какой-то продуктивный ход решений, выкладывайте, есть проблемы - поможем (писать, конечно, ни кто за Вас не будет)

Добавлено через 8 минут и 15 секунд
Хотя, вот один из ответов ведет на WinAPI: http://old.sumitbirla.com/software/splitter.php
Я бы наверное попридирался, но важна в первую очередь задача, которую он решает.
Если этого достаточно - хорошо, нет - опишите проблемы.


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
spSerg
Дата 8.11.2015, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Окно создавать нужно не два пикселя, а на всю ширину двух обслуживаемых окон, которые буду изменять размер как дочерние. А самому рисовать только два пикселя, которые не будут закрываться дочерними. Получится структура:
MainWnd(Splitter(LeftWnd,Right))

Но все же лучше воспользоваться легковесной библиотекой. Например WTL, которая дает мощную, но легкую функциональную обертку над WinAPI, в отличие от монолитного MFC.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM   Вверх
Belous
Дата 10.11.2015, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за ссылки и советы. Буду пробовать.

PS Хотел плюсики поставить но постов у меня мало.

Это сообщение отредактировал(а) Belous - 10.11.2015, 22:42
PM MAIL   Вверх
Belous
Дата 7.9.2017, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я так понял, что нужно отслеживать координаты курсора и по надобности менять изображение курсора. По другому не получается. Введение дополнительных окон и попытка переложить часть функционала на них - довольно бесполезное занятие. Описывая весь функционал в окне родителе - долго, кропотливо, на мой взгляд не правильно - но так задумано создателями WinAPI.

Это сообщение отредактировал(а) Belous - 9.9.2017, 13:41
PM MAIL   Вверх
Belous
Дата 7.9.2017, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо

Это сообщение отредактировал(а) Belous - 9.9.2017, 14:12
PM MAIL   Вверх
GremlinProg
Дата 8.9.2017, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2705
Регистрация: 9.8.2005
Где: Тюмень

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



Цитата(Belous @  7.9.2017,  14:38 Найти цитируемый пост)
Я так понял, что нужно отслеживать координаты курсора и по надобности менять изображение курсора

да, примерно так: за это отвечает уведомление WM_SETCURSOR

Цитата

The DefWindowProc function passes the WM_SETCURSOR message to a parent window before processing. If the parent window returns TRUE, further processing is halted. Passing the message to a window's parent window gives the parent window control over the cursor's setting in a child window. The DefWindowProc function also uses this message to set the cursor to an arrow if it is not in the client area, or to the registered class cursor if it is in the client area. If the low-order word of the lParam parameter is HTERROR and the high-order word of lParam specifies that one of the mouse buttons is pressed, DefWindowProc calls the MessageBeep function.


В ответ на это сообщение можно вызвать SetCursor с нужным Вам курсором, если координаты переданные в этом сообщении принадлежат сплиттеру


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Google
  Дата 26.5.2019, 07:05 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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