Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Открыть новую тему     Написать ответ в эту тему

Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
вместо hWnd написал NULL (правильно ведь?)

Это означает прошерстить все очереди текущего потока, не только для конкретного окна. По идее можно и так, все равно больше одного WM_LBUTTONDOWN в них быть не должно.

Цитата:
Если я кроме WM_LBUTTONDOWN захочу обрать другие сообщения, мне надо несколько раз запускать PeekMessage?

Угу.

Цитата:
Там есть маски, но это больше похоже на начало и конец диапазона сообщений.

Именно так, PeekMessage ищет сообщения заданного диапазона. Но вытаскивает всё равно одно сообщение за раз. Первое подходящее под условия.


----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 19:49 15-02-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно, пусть будет NULL. Главное работает.
Спасибо.

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 21:25 15-02-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще момент. Нажимаю правую кнопку мыши, появляется меню. Еще раз нажимаю ПКМ, меню изчезает и появляется снова.
Как сделать, чтобы в этом случае меню только исчезало?
C PeekMessage такое сделать не получается.

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 07:20 24-02-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt
Ну да, тут так просто не получится. Меню закроется по WM_RBUTTONDOWN. В этот момент юзер кнопку мыши отпустить ещё не успел, так что WM_RBUTTONUP, по которому меню всплывает, просто ещё нет в очереди. Оно придёт, когда обработчик OnMenu уже своё отработает. Когда работа с меню давно уже завершилась и программа пребывает в благодушном неведении.
Так что тут без геморроя не обойтись. Придумать какой-нибудь флаг, разобраться, когда взводить его, когда сбрасывать... Стоит ли игра свеч?

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 09:08 24-02-2011
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Еще момент. Нажимаю правую кнопку мыши, появляется меню. Еще раз нажимаю ПКМ, меню изчезает и появляется снова.
Как сделать, чтобы в этом случае меню только исчезало?  

стандартное поведение винды, зачем его переиначивать?

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:03 24-02-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShIvADeSt

Цитата:
стандартное поведение винды, зачем его переиначивать?  

стандартное не всегда удобное.
 
Abs62

Цитата:
Меню закроется по WM_RBUTTONDOWN. В этот момент юзер кнопку мыши отпустить ещё не успел, так что WM_RBUTTONUP, по которому меню всплывает, просто ещё нет в очереди. Оно придёт, когда обработчик OnMenu уже своё отработает. Когда работа с меню давно уже завершилась и программа пребывает в благодушном неведении.  

Я идею понял, спасибо. Найду время, посмотрю стоит оно того или нет.
 
 
Еще пара моментов со всплывающими подсказками:
1. Есть CSliderCtrl. Когда двигаю его мышкой появляется подсказка над слайдером. Когда - клавишами, тогда подсказки нет. Это ведь ненормально? Или тут ее нужно как-то самому нарисовать?
2. Есть обычный текст (CTEXT). Можно ли к нему прикрутить всплывающую подсказку?

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 20:16 24-02-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
1. Есть CSliderCtrl. Когда двигаю его мышкой появляется подсказка над слайдером. Когда - клавишами, тогда подсказки нет. Это ведь ненормально?

Сам слайдер подсказок по идее не показывает. При перемещении ползунка мышкой посылаются нотификационные сообщения TB_THUMBTRACK. Клавиатурой - TB_LINEUP и TB_LINEDOWN. Смотри, как реализована обработка тех и других в программе.

Цитата:
2. Есть обычный текст (CTEXT). Можно ли к нему прикрутить всплывающую подсказку?

Можно. Получить хэндл соответствующего окна и переопределить его оконную функцию. Далее ловить в ней WM_MOUSEMOVE и вызывать TrackMouseEvent на трекинг TME_HOVER. Потом ловить WM_MOUSEHOVER. Поймав - показывать подсказку и включать трекинг TME_LEAVE, чтобы поймать момент ухода мыши. Отслеживать WM_MOUSELEAVE, поймав - убрать подсказку. Как-то так.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:27 24-02-2011
V0lt



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Abs62

Цитата:
Сам слайдер подсказок по идее не показывает. При перемещении ползунка мышкой посылаются нотификационные сообщения TB_THUMBTRACK. Клавиатурой - TB_LINEUP и TB_LINEDOWN. Смотри, как реализована обработка тех и других в программе

Прогнал поиск ничего такого не нашел.
Вначале подсказок не было. Я добавил стил TBS_TOOLTIPS. Появились подсказка над ползунком, показывающая текущую позицию, но только если его двигать мышью. Текст подсказки менял через OnToolTipNotify.
 

Цитата:
Можно. Получить хэндл соответствующего окна и переопределить его оконную функцию. Далее ловить в ней WM_MOUSEMOVE и вызывать TrackMouseEvent на трекинг TME_HOVER. Потом ловить WM_MOUSEHOVER. Поймав - показывать подсказку и включать трекинг TME_LEAVE, чтобы поймать момент ухода мыши. Отслеживать WM_MOUSELEAVE, поймав - убрать подсказку. Как-то так.

ну нафиг
 
Кстати для статического теста нашел стиль SS_NOTIFY

Цитата:
SS_NOTIFY
Sends the parent window STN_CLICKED, STN_DBLCLK, STN_DISABLE, and STN_ENABLE notification codes when the user clicks or double-clicks the control.

Его можно как-то использовать вместо такой обработки двойного клика.

Всего записей: 10506 | Зарегистр. 05-02-2003 | Отправлено: 22:35 24-02-2011 | Исправлено: V0lt, 22:36 24-02-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V0lt

Цитата:
ну нафиг  

Почитай ещё вот это:
DOC: How to Display Tool Tips After Calling EnableToolTips
Может, в MFC этот функционал уже есть. Я не проверял.

Цитата:
Его можно как-то использовать вместо такой обработки двойного клика.

Дык, проверь. Задай этот стиль контролу и лови STN_DBLCLK в родительском окне.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 23:12 24-02-2011
ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Можно. Получить хэндл соответствующего окна и переопределить его оконную функцию. Далее ловить в ней WM_MOUSEMOVE и вызывать TrackMouseEvent на трекинг TME_HOVER. Потом ловить WM_MOUSEHOVER. Поймав - показывать подсказку и включать трекинг TME_LEAVE, чтобы поймать момент ухода мыши. Отслеживать WM_MOUSELEAVE, поймав - убрать подсказку. Как-то так.  

В реалии все не так страшно, как звучит. Кстати можно вместо статика заюзать ownerdraw кнопку, для нее хинт вешается без проблем. а рисовать что нажатую что отпущенную одинаково. Будет неотличимо от статика, а пользы больше (вплоть до отслеживания нажатия кнопок мыши).

----------
И создал Бог женщину... Существо получилось злобное, но забавное...

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:47 25-02-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! В VS 2008 пишу прогу на С++.
Ошибка:error C2065: LVM_ARRANGE: необъявленный идентификатор
нужно подключить какую-то библиотеку или это из-за ОС Win7

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 15:44 27-02-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09
А Windows SDK установлен?

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 16:08 27-02-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хор вопрос!): делал полную установку VS 2008 и SDK устанавливалась,
 
-в установленных прогах есть:
 
MW SDK for VS 2008: .Net Framework Tools, Headers and Libraries, SDK Referense Assembliese adn IntelliSense, Tools, Win32 Tools. не знаю куда больше):
 
Вообще занимаюсь Фленову С++ глазами хакера, иногда бывают ошибки,  
 
эти методы или функ GetItemPath, MakeDynamic VS 2008 тоже не видит?
 
Может Win7 и VS 2008 не очень совместимы, лучше поставить VS 2010/

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 20:42 01-03-2011
karakurt2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09, скорее всего, это устаревшее макроопределение.

Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 20:44 01-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное так есть, благ

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 21:08 01-03-2011
Abs62



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09
Для программирования под Windows всегда желательно иметь свежий Windows SDK. В хидерах и библиотеках Visual Studio есть не всё.
А для работы с DirectX, к примеру, ещё и DirectX SDK потребуется.

Цитата:
эти методы или функ GetItemPath, MakeDynamic VS 2008 тоже не видит?

Должен видеть.

Цитата:
Может Win7 и VS 2008 не очень совместимы, лучше поставить VS 2010

Не уверен, что это избавит от необходимости установки Windows SDK.
 
karakurt2

Цитата:
скорее всего, это устаревшее макроопределение

Это сообщение. И отнюдь не помеченное как устаревшее в MSDN.

----------
0 программистов ругал сердитый шеф
Потом уволил одного, и стало их FF

Всего записей: 6080 | Зарегистр. 22-10-2005 | Отправлено: 21:24 01-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попробую поставить SDK, может поможет,
 но думаю в VS по умолч должны быть такие простые фукнц

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 21:36 01-03-2011
ItsJustMe

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на данный момент с VS 2010 идет самый свежий SDK, если поставишь ее, SDK дополнительно ставить не придется.

Всего записей: 2028 | Зарегистр. 02-09-2005 | Отправлено: 05:34 03-03-2011
user_MAN09

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ItsjustMe:
Хочу воспользоваться твоим советом,
не знаю где найти для скачивания проф версию VS 2010

Всего записей: 37 | Зарегистр. 26-08-2010 | Отправлено: 14:38 03-03-2011
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
user_MAN09  Надо побольше читать форум, тогда будешь в курсе.
Microsoft  Visual  Studio  .NET


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17280 | Зарегистр. 13-06-2007 | Отправлено: 23:09 03-03-2011 | Исправлено: vlary, 23:10 03-03-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование с использованием WinAPI


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru