после такой инициализации, окно даже не отображаться. последняя ошибка = 2 дословно (не удается найти указанный файл ). выявленно что ошибка именно функции RegisterClassEx что может быть не так?
01.06.09 15:29: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: Не работает регистрация класса окна в своем классе
> > > после такой инициализации, окно даже не отображаться. последняя ошибка = 2 дословно (не удается найти указанный файл ). выявленно что ошибка именно функции RegisterClassEx что может быть не так? > >
1) Что получаем в строке ATOM a=RegisterClassEx? Атом чему равен?
2) Имя класса окна уникальное в szWindowClass?
Может явно указать системную константу без бубнов со сложением?
В hbrBackground должна быть или явно константа из GetSysColor или фактический HBRUSH. Здесь ошибки не может быть?
Здравствуйте, Carc, Вы писали:
C>PS: Зачем wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) ????
C>Может явно указать системную константу без бубнов со сложением? C>В hbrBackground должна быть или явно константа из GetSysColor или фактический HBRUSH. Здесь ошибки не может быть?
Всю жизнь так на Win32 делалось.
hbrBackground
Handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color).
Re[3]: Не работает регистрация класса окна в своем классе
"quodum" <29617@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3413218@news.rsdn.ru... > Здравствуйте, Carc, Вы писали: > > C>PS: Зачем wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1) ???? > > C>Может явно указать системную константу без бубнов со сложением? > C>В hbrBackground должна быть или явно константа из GetSysColor или фактический HBRUSH. Здесь ошибки не может быть? > > Всю жизнь так на Win32 делалось. > >
> hbrBackground
> Handle to the class background brush. This member can be a handle to the physical brush to be used for painting the background, or it can be a color value. A color value must be one of the following standard system colors (the value 1 must be added to the chosen color).
>
Хм, действительно — а я как-то и не заметил! Был не прав...
"pfranz" <71176@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3413060@news.rsdn.ru... > Здравствуйте, Адепт, Вы писали: > > А>wcex.lpfnWndProc = &myEditWindow::WndProc; > > Уверен, что проблема в этой строчке...
А причем тут myEditWindow::WndProc — хотя бы разок, но она должна бы дернуться с WM_CREATE, а судя по всему этого и вовсе нет. Опять же раз компилятор спокойно пропускает эту строку, значит с конвенциями вызова скорее всего все в порядке.
А что там все-таки со значением ATOM после вызова RegisterClassEx — чего говорит-то хоть, класс регистрируется или нет?
C>"pfranz" <71176@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:3413060@news.rsdn.ru... >> Здравствуйте, Адепт, Вы писали: >> >> А>wcex.lpfnWndProc = &myEditWindow::WndProc; >> >> Уверен, что проблема в этой строчке... C>А причем тут myEditWindow::WndProc — хотя бы разок, но она должна бы дернуться с WM_CREATE, а судя по всему этого и вовсе нет. Опять же раз компилятор спокойно пропускает эту строку, значит с конвенциями вызова скорее всего все в порядке. C>А что там все-таки со значением ATOM после вызова RegisterClassEx — чего говорит-то хоть, класс регистрируется или нет?
1. проверить, что возвращает RegisterClassEx. если 0, то вызвать GetLastError. если не 0, то класс зарегистрирован.
2. не согласен с "....А причем тут myEditWindow::WndProc — хотя бы разок, но она должна бы дернуться с WM_CREATE...". Как раз таки оконная процедура не будет вызываться до тех пор, пока не будет вызван CreateWindow. Нет смысла вызывать CreateWindow если не сработал RegisterClassEx. Соотвественно, оконная процедура и не будет вызываться, если атом невалидный.
my $.02
Re[4]: Не работает регистрация класса окна в своем классе
O>1. проверить, что возвращает RegisterClassEx. если 0, то вызвать GetLastError. если не 0, то класс зарегистрирован. O>2. не согласен с "....А причем тут myEditWindow::WndProc — хотя бы разок, но она должна бы дернуться с WM_CREATE...". Как раз таки оконная процедура не будет вызываться до тех пор, пока не будет вызван CreateWindow. Нет смысла вызывать CreateWindow если не сработал RegisterClassEx. Соотвественно, оконная процедура и не будет вызываться, если атом невалидный.
Всё это топик-стартеру уже и посоветовали, и про возвращаемые значения RegisterClassEx поспрашивали... Перечитайте ответы из нитки.