|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
Visual Studio 6.0 C++ MFC Событие BEGIN_EVENTSINK_MAP03.04.2013, 15:16. Показов 2754. Ответов 18
Метки нет (Все метки)
Задача:
1. есть диалог, на нем: 1.1. List Control со столбцами "Штрих-код" и "Количество". 1.2. Check Box 2. если Check Box == 0, то при считывании штрих-кода сканером в колонку "Штрих-код" записываются цифры штрихКода, в колонку "Количество" единица(пока так) 3. если Check Box == 1, то при считывании штрих-кода сканером открывается модально диалог с Edit ами, в один из них помещается считанный штрих-код(можно внести или исправить вручную), в другой вручную вводится количество. это все получается, работает. что не получается: нужно сделать так, что бы, при считывании сканером штрих-кодов в модальном диалоге (с занесенным туда уже считанным штрих-кодом) вновь считанный штрих-код заносился в Edit, там должен оставаться последний считанный. как сделано то, что работает: 1. в главном диалоге в BOOL CSbor::OnInitDialog() .................... if (!m_Scaner.Create(NULL,0,CRect(0,0,0,0), this,IDC_SCANER)) { MessageBox ( "Сканер НЕ ПОДКЛЮЧЕН!!!", "Ошибка подключения сканера!!!", MB_ICONASTERISK ); return -1; // fail to create } m_Scaner.SetAutoDisable(TRUE); m_Scaner.SetDataEventEnabled(TRUE); m_Scaner.SetDeviceEnabled(TRUE); ................... 2. BEGIN_EVENTSINK_MAP(CSbor, CPropertyPage) ON_EVENT(CSbor, IDC_SCANER, 1 /* DataEvent */, OnDataEventScaner, VTS_NONE) END_EVENTSINK_MAP() 3. void CSbor::OnDataEventScaner() { } если я находясь в модальном диалоге и считываю несколько раз штрих-код, то при закрытии диалога вываливаюсь в основной и сразу возникает событие, возвращающее в модальный диалог со следующим считанным штрих-кодом и это столько, сколько раз считывал сканером. в модальном диалоге добавляю событие и обработчик, но событие не возникает. 1. не понятно, нужно ли опять создавать обоъект или как то передать уже созданный в основном диалоге(if (!m_Scaner.Create(NULL,0...) 2. как узнать, почему событие не происходит, кроме задания точки останова на обработчике? 3. можно ли как то посмотреть какие события происходят вообще?
0
|
|
| 03.04.2013, 15:16 | |
|
Ответы с готовыми решениями:
18
MFC в visual studio Visual Studio C++ и MFC Visual Studio C++ MFC (графика) |
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 05.04.2013, 18:00 [ТС] | |
|
оказалось при возникновения события я попадаю в обработчик и оттуда вызываю модальный диалог и остаюсь в обработчике, пока этот диалог не закрою.
Теперь не знаю, как из обработчика послать сообщение, что бы открылся диалог, но из обработчика нужно сразу выйти. Есть клавиша вызова модального диалога, как можно симитировать тажатие этой клавиши?
0
|
|
|
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
|
|
| 05.04.2013, 19:14 | |
|
кто мне поможет? а в теме В объекте вид создать функцию, заменяющую побочную диагональ нулями
еще даже 1 ответа нету
0
|
|
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 05.04.2013, 19:52 [ТС] | |
|
Lynatik001, спасибо, помогло.
0
|
|
|
48 / 40 / 15
Регистрация: 28.09.2012
Сообщений: 818
|
|
| 05.04.2013, 19:54 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
||
| 05.04.2013, 23:37 [ТС] | ||
|
Lynatik001, прасти, не видел твою тему, подумал, подкалываешь, типа, глупость спрашиваешь. Сложно, наверное не будучи экстрасэксом понять, где я лажаю.
Добавлено через 1 час 43 минуты
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||
| 06.04.2013, 07:26 | |||
|
модальный диалог на то и модальный что перехватывает все сообщения вывод или делай не модальный диалог или читай штрих код в диалоге Добавлено через 1 минуту делай в окне отдельную функцию а в диалоге вызывай
1
|
|||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 06.04.2013, 22:00 [ТС] | |
|
ValeryS, спасибо. Что модальный перехватывает все сообщения, не знал, опыта такого программирования нет.
Наверное я не очень четко свормулировал задачу, но, как будто, получается: 1. есть ГЛАВНЫЙ диалог 2. на ГЛАВНОМ диалоге есть Check Box 3. на ГЛАВНОМ диалоге есть таблица с колонками ("штрих-код", "количество", "цена", "наименование"). 4. в одном положении Check Box при считывании штрих-кода сканером появляется строка, штрих-код заносится в колонку "штрих-код", количество равное 1 заносится в колонку "количество".(пока без объединения строк с одинаковым штрих-кодом, потом нужно будет как то сделать). 5. В другом положении Check Box при считывании штрих-кода сканером появляется МОДАЛЬНЫЙ диалог с полями (Едит) "штрих-код", "количество", "цена", "наименование". При появлении МОДАЛЬНОГО диалога штрих-код уже занесен в свое поле, заполняются вручную остальные поля, в том числе и штрих-код, если надо. если в этот момент считать штрих-код, он теперь заносится в свое поле. 6. Есть на МОДАЛЬНОМ диалоге кнопки: "добавить(+)", "вставить(*)", "удалить(-)", пока нажатие любой кнопки или клавиш, указанных на кнопках, приводят к одному - МОДАЛЬНЫЙ диалог закрывается, в ГЛАВНОМ появляется строка с заполненными полями. 7. На ГЛАВНОМ диалоге есть кнопка "ввод товара", при нажатии этой кнопки открывается этот же МОДАЛЬНЫЙ диалог п.5, позволяющий проделать все те же действия, что и при появлении от считывания сканером. моя ошибка была в том, что я запускал из обработчика МОДАЛЬНЫЙ диалог и оставался в обработчике, пока не закрою этот диалог. Теперь обработчик в зависимости от Check Box либо выполняет п.4 либо посылает команду GetParent()->PostMessage(WM_COMMAND,IDC_Insert,0); , что приводит к срабатыванию кнопки п.7. Конечно, только при возникновении события первый раз, в другие разы(когда МОДАЛЬНЫЙ диалог открыт) только меняется штрих-код в поле МОДАЛЬНОГО диалога. Может я не во всем разобрался, делов еще много, но все семь пунктов работают.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||||||||||
| 06.04.2013, 23:14 | |||||||||||
|
Я не понял зачем такие сложности
вызываешь диалог (который модальный) в нем вносишь что надо нажмешь ок все внесется в главную программу нажмешь отмена ничего не внесется например так вот твой модальный диалог
http://www.firststeps.ru/ вкладка Visual C++ куча примеров, может что и пригодится
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 06.04.2013, 23:29 [ТС] | |
|
приблизительно так я и делаю, а насчет выхода из модального только по ОК или Кансел мало, нужно либо добавить товар(количество), либо заменить количество, либо вычесть. И миниму действий, считал сканером, набрал количество, нажал +,- или *.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
||||||||||||||||||
| 07.04.2013, 00:02 | ||||||||||||||||||
|
например обработчик +
но смысл надеюсь понятен делаем свои действия, потом вызываем метод базового класса ( можешь и своего если он у тебя переопределен) и вызывающая функция думает что ты нажал ОК Добавлено через 5 минут можешь еще ввести поле действия в класс своего диалога чтобы не диалог складывал вычитал, а основная программа например так
1
|
||||||||||||||||||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|||||
| 07.04.2013, 09:52 [ТС] | |||||
|
Задумался глядя на Я пишу, как бы, аналог терминала сбора данных, если не знаете, это такая штука, используется для введения в таблицы документов 1С товаров, на экранчике терминала приглашение: введите штрих-код - сканируешь, дальше на экранчике: введите количество - вводишь количество и нажимаешь Ентер. А случайно нажал, для этого и есть возможность минусовать или замещать количество, в некоторых конфигурация терминала и этого нет.
0
|
|||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||||||||
| 07.04.2013, 11:23 | |||||||||
|
а реализацию сам придумай сейчас как суммируешь? ![]() Я ведь не настаиваю но "зашита от дурака" по моему должна быть а если ты хочешь ускорить процесс то лучше бы предусмотреть "горячие клавиши" чтобы не дергаться от клавиатуры к мышке ![]() нужно было написать
0
|
|||||||||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
||||
| 07.04.2013, 13:13 [ТС] | ||||
|
Добавлено через 13 минут если интересно, пока то, что сделано: http://files.mail.ru/69891F877... 0A05BA1F91 Добавлено через 50 минут видимо так посылать нельзя exe файл, сам проверил ссылку, ругается
0
|
||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||||
| 07.04.2013, 13:16 | |||||
|
но у меня нет шестерки так что только общие замечания atoi atof Добавлено через 2 минуты сожми архиватором и брось сюда в расширенном режиме заначек скрепки
0
|
|||||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 07.04.2013, 14:35 [ТС] | |
|
http://files.mail.ru/CE1A5F0C4... 736013135A
скажите, пожалуйста, подобного рода задачи лучше писать на Бэйсике или еще на каком другом языке?
0
|
|
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
||||||
| 12.04.2013, 12:53 [ТС] | ||||||
|
что бы строки в таблице CList Control выделялись по-человечески, использую это (нашел где-то в инете)
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,870
|
|||
| 12.04.2013, 16:12 | |||
|
т.е в этой записи означает к стилям описным в ExStyle добавить LVS_EX_FULLROWSELECT а здесь остальные стили потерял
1
|
|||
|
0 / 0 / 0
Регистрация: 28.12.2010
Сообщений: 49
|
|
| 12.04.2013, 17:17 [ТС] | |
|
ValeryS, понял, спасибо.
0
|
|
| 12.04.2013, 17:17 | |
|
Помогаю со студенческими работами здесь
19
Visual Studio C++ MFC Aplication Как подсоединить MFC AppWizard к С++ 9.0 Visual Studio ? Visual Studio C++ MFC Application - работа с файлом Построение графиков в MFC приложении Visual Studio. Окно со свойствами в проекте MFC, как в Visual Studio Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|