редактировать
хорошо, я полагаю, что С болезнен по своей природе. Просто эта часть особенно болезненна.
Кроме того, нет реальной причины, по которой я пишу только на C, кроме того, на котором я хочу писать и на котором пока разбираюсь. Я знаю, что переход с C на C ++ - это плохо, но что угодно.
А кто-нибудь знает решение моей проблемы с созданием более одного окна в программе?
Ну, я связывал C DLL с интерфейсом VB6, но - попытки передавать строки назад и вперед становились уродливыми, и казалось, что каждый раз, когда я добавляю новую функцию, все остальное сломалось бы. Итак, я подумал: зачем мне проходить через всю эту боль, просто чтобы общаться с языком, который даже больше не поддерживается? Почему бы просто не использовать эту боль для лучшего использования и научиться создавать интерфейс в C?
Ну, я начал, но я должен спросить: есть ли простой способ сделать это? Огромный оператор switch, который называется WndProc, ранит мои глаза и идет вразрез со всем, что я узнал о чистом коде (во многом как параметр 12 CreateWindowEx () или параметр 14 CreateFont ()).
Я понимаю, что мог бы реорганизовать все это - до некоторой степени - и если бы я использовал C ++, я мог бы поместить окна и их компоненты в классы и получить к ним более естественный доступ, я полагаю ...
В любом случае, мне удалось создать большую форму под названием «Главное окно!» С «Всплывающим сообщением!» Кнопка, которая работает хорошо - и это не было сложно вообще. Тогда есть «Изменить этот текст!» кнопка, которая изменяет текст в элементе управления редактирования. Чтобы это было возможно, WndProc должен знать об элементе редактирования, пока он получает сообщение WM_COMMAND
от кнопки. Я не могу передать hWnd для элемента управления редактирования в него, так как я не тот, кто его вызывает, и вы не можете просто добавить аргументы в WndProc. Поэтому мне пришлось поместить элемент управления редактирования в глобальный объем.
Я хотел изменить шрифт кнопок на 13pt Tahoma - легко, правда? Конечно - но я не мог получить дальше, чем сообщение WM_PARENTNOTIFY
... После тщательного прочтения MSDN я обнаружил, что некоторая информация содержится в высоком слове wParam, а другая - в низком. Итак, я должен был написать это: if(wParam==(WM_CREATE | (POPUP_COMMAND<<16))){
Как сделать управление глобальным? огромные заявления переключателя? 12 и 14 параметров функции вызовов? Битовые сдвиги для простых уведомлений? Я до сих пор не могу даже понять, как сделать так, чтобы появилось больше одного окна (окна окна, а не окна управления) - это больно ...
Пожалуйста, скажите мне, что есть лучший способ!
Как сделать, кстати, более одного окна? Если я просто зарегистрирую два класса или CreateWindowEx в одном классе дважды (для двух дескрипторов), появится только первый. Я попытался немного поиграть с параметром dwStyle, но безрезультатно. Кто-нибудь?