|
Входит и выходит...Работаем с COM-портом Николай "GorluM" Андреев Xakep, номер #053, стр. 053-086-3 #include "resource.h" Чтобы получать данные из полей EditBox'а, мы воспользуемся функцией GetDlgItemText. В первом параметре ей надо передать дескриптор окна, во втором - идентификатор edit'а, в третьем - указатель на строковый буфер, в последнем - количество читаемых из поля символов. После запуска в буфере (под который перед использованием рекомендуется выделить память) окажется то, что было введено в поле с заданным идентификатором. Теперь нам надо научиться обрабатывать события, выполняющиеся после нажатия на ту или иную кнопку. Для этого создадим функцию обработки сообщений. Она будет ловить сообщение окну-родителю WM_COMMAND. Функция описывается так: int Dlg_Proc(HWND hwnd, UINT wMsg, WPARAM wParam, LPARAM lParam); где hwnd - это дескриптор окна, которому пришло сообщение, wMsg - зарегистрированный номер сообщения (например, WM_COMMAND), а wParam и lParam - два параметра, находящихся в сообщении. Внутри функции мы будем сравнивать wMsg и WM_COMMAND. Если они будут равны, значит, на эту кнопку нажали. Идентификатор кнопки находится в нижнем "слове" правого параметра (LOWORD(wParam)). Для того чтобы создать событие нажатия этой кнопки, мы должны сравнить полученный идентификатор с имеющимся у нас, и если они равны - выполнить нужный нам код. Поскольку кнопок и принимаемых сообщений в программах обычно немало, принято производить сравнение в блоке switch. Функцию обработки сообщений написали, осталось только вызвать из программы самую главную функцию, которая создаст при запуске окно из нашего ресурса и прикрутит к нему Dlg_Proc. Функция называется DialogBox и в программе запускается следующим образом: DialogBox(hinst, MAKEINTRESOURCE(IDD_DIALOG1), NULL, Dlg_Proc); IDD_DIALOG1 - идентификатор ресурса диалога, а Dlg_Proc - созданная нами функция для сообщений. Эту строку поставим в главный поток (WinMain), и вот, GUI для нашей терминальной программы полностью завершен. Собираем все вместе (см. листинг), и наша программа готова. Пора проверить ее в действии. Тестируем Первое, что пришло мне в голову, попробовать нашу программу в качестве чата, причем обычного null-модемного. Я взял com2com провод и соединил им выходы портов com1 и com2. После чего запустил две копии программы, одной открыв com1, а другой - com2. Вышло очень удачно: данные, посланные в один порт, успешно читались из другого. На этом я не остановился. Поскольку изначально мы писали терминальную программу для модема, то и протестируем ее на модеме. Это несложно, протокол общения с модемом такой: |