1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||||||||||||
1 | ||||||||||||||||
"Поймать" сообщение от LISTBOX09.11.2011, 11:40. Показов 3521. Ответов 42
Метки нет (Все метки)
Рассматриваю тут пример в книге и вот почему-то он у меня срабатывать не хочет - не могу изменять масштаб в диалоговом окне так как он тупо вообще не выбирается, может стиля какого не хватает при создании диалогового окна, или ещё чего, подскажите пожалуйста.
Собственно main.h (константы и объявления функций)
main.cpp
Собственно в нём ошибка если есть то разве что в последней функции DlgOnCommand в case ID_SCALE (строка 197), так как именно там обрабатываются сообщения от моего LISTBOX с диалогового окна, все остальные функции работают корректно. Ну ещё возможно что есть ошибка при заполнении LISTBOX (это функция DlgOnInitDialog (строка 162)), хотя вроде заполнился он нормально и все 8 строк в нём присутствуют. Сама программа,если интересно, выводит график, который она читает из dat файла (считывает первые 1000 байт). Файл dat с нормальным графиком могу предоставить, хотя можно тупо открыть любой файл чтобы программа считала с него 1000 байт, график только рандомный получится. На скриншоте видно что ни один пункт в LISTBOX "Масштаб" не выбран и мышкой не выбирается.
0
|
09.11.2011, 11:40 | |
Ответы с готовыми решениями:
42
Поймать двойной клик по строке в LISTBOX и выполнить указанное действие Как поймать событие скроллинга в listBox? Поймать сообщение wm_copy Как поймать сообщение об ошибке |
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 18:53 [ТС] | 22 |
programina, нет, я Ваш код разбираю и мне интересно что делает макрос TEXT, до этого никогда с ним не сталкивался, так код компилируется у меня и работает.
0
|
|
09.11.2011, 19:00
#23
|
0
|
Заблокирован
|
||||||
09.11.2011, 19:08 | 25 | |||||
- winnt - накой тут юникод вообще не понятно!
Не по теме: Проект вообще - не предполагает GetDlgItemText и поетому изменив програмно 2-ю строку в листе вместо изменённой строки получишь programina2 - потому что логики в алгоритме мало - это не получение строки листа! SetWindowText(hwndStatic, items[sel]);, ладно я ж тупой и ничё не знаю...
1
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:18 [ТС] | 27 |
Как я его так запущу? У меня же диалоговое окно и меню из файла ресурсов берётся, у меня не так как у programina создаётся диалоговое окно.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:26 [ТС] | 29 |
А чем плох такой вариант, ведь не планируется выводить в LISTBOX чего-либо ещё кроме указанных 8 (у меня) параметров, только у меня не получается отловить LBN_SELCHANGE, непонятно мне только почему. Хотя я вот не уверен тот ли я параметр просматриваю, как узнать что делает макрос HANDLE_MSG конкретно с WM_NOTIFY ? Никак не могу в msdn найти.
Добавлено через 1 минуту programina, так где же у меня ошибка, проект тотальной переделке не подлежит, в нём только нужно исправить ошибку, конкретно сейчас я думаю что я ловлю LBN_SELCHANGE не через тот параметр, хотя может я и ошибаюсь.
0
|
09.11.2011, 20:26 | 30 | ||||||||||
вот так нужно
PS: никаких ifов в caseах
1
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:36 [ТС] | 31 |
programina, так оно всё равно ничего не выбирается и не изменяется (хотя ветка вызывается при этом регулярно, это я сужу по тому что я туда MessageBox добавил так вот он то вызывался часто)
Добавлено через 3 минуты Точнее не совсем ничего не выбирается - если поклацать по листу то можно выбрать 200 (график изменится), при этом 200 выделяться не будут и больше ничего выбрать после этого будет нельзя (график меняться больше не будет).
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:40 [ТС] | 33 |
Убрал WM_NOTIFY из ресурсов - теперь строчка выделяется (а я то думал именно оно нужно чтобы сообщения присылались, хех), но теперь я могу выбрать либо 100 либо 200 (притом можно выбрать 125 либо ещё чего, всё равно, при клике по листу установится значение 200 (и график перерисуется соответственно) ). Те: изначально при открытии выбрано 100 по умолчанию, а я могу выбрать 200 и всё. Дальше что не выбирай - ничего не меняется и при закрытии и открытии диалогового окна установлено 200.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:43 [ТС] | 35 |
Вот, честно, уж не думал что столько проблем будет с нещасным листбоксом, в этом WINAPI я смотрю так заблудиться можно.
Добавлено через 25 секунд programina, давай, я посмотрю и сравню
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
||||||
09.11.2011, 20:51 [ТС] | 37 | |||||
programina, сейчас посмотрю, опытным методом определил почему всегда 200
Добавлено через 1 минуту programina, да, Ваш вариант работает как положено, сейчас попробую найти какая строка у Вас отличается от моих наработок.
0
|
1186 / 542 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
|
|
09.11.2011, 20:59 [ТС] | 39 |
Хм, едиснтвенное отличие что я нашёл это вызов OnPaint в конце, правда он и так должен вызываться же после InvalidateRect да и не должен влиять на сам график.
1
|
09.11.2011, 21:07 | 40 | |||||
Gepar удали онпайнт я забыла убрать
0
|
09.11.2011, 21:07 | |
09.11.2011, 21:07 | |
Помогаю со студенческими работами здесь
40
Не могу поймать сообщение wm_copydata Хук, который должен поймать сообщение WM_SIZE, его не ловит ListBox и всплывающее сообщение Если в listbox есть определенное название,выводит сообщение Выбранный элемент ListBox одной формы перенести в ListBox на другую форму Копировать выделенные строки из listbox в listbox с большим кол-вом колонок Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |