Люди, помогите мне бестолковому. Я создаю и регестрирую класс окна посредствами RegClassEx(...), затем пишу код типа:
HWND hWnd = CreateWindow(szClass, szTitle, dwflags, CW_USEDEFAULT, CW_USEDEFAULT, 226, 46, 0, 0, hInstance, 0);
Окно не создаётся (hWnd == NULL), если szClass заменяю на что-то вроде "BUTTON" или "STATIC" для эксперимента, то всё нормально. Может я чё делаю не так??? MFC или AWL по некоторым причинам использовать не могу.
Здравствуйте, Sergio Tokini, Вы писали:
ST>Люди, помогите мне бестолковому. Я создаю и регестрирую класс окна посредствами RegClassEx(...), затем пишу код типа: ST>HWND hWnd = CreateWindow(szClass, szTitle, dwflags, CW_USEDEFAULT, CW_USEDEFAULT, 226, 46, 0, 0, hInstance, 0);
ST>Окно не создаётся (hWnd == NULL), если szClass заменяю на что-то вроде "BUTTON" или "STATIC" для эксперимента, то всё нормально. Может я чё делаю не так??? MFC или AWL по некоторым причинам использовать не могу.
ST>Поомоогиитее...
1. Если есть возможность использовать пошаговую трассировку, то есть такая полезная переменная в окне Watch — "ERR, hr". Покажет строковую ошибку системы. Если "BUTTON" создается, то скорее всего ошибка в регистрации класса.
2. Если нет возможности трассировать программу, то можно сделать так:
char pBuffer[1024];
::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, ::GetLastError(), 0, pBuffer, 1024, NULL);
// pBuffer содержит ту же самую строку с ошибкой
There are 10 types of people in the world, those who don't understand binaries, those who do, and those who understand not only binaries.
Re[2]: Создания окна посредствами CreateWindow(...)
Здравствуйте, Алекс, Вы писали:
А>Здравствуйте, Sergio Tokini, Вы писали:
А>хъ
ST>>Поомоогиитее...
А>Приведи код регистрации класса и код оконной процедуры.
Дык чё ты думаешь, я чтоли его не проводил. Проводил. И в WNDCLASSEX::lpClass или как там он называется указывал то же, что и в CreateWindow т.е. szAppClass, и CreateWindowEx пробовал...
Re[3]: Создания окна посредствами CreateWindow(...)
S>1. Если есть возможность использовать пошаговую трассировку, то есть такая полезная переменная в окне Watch — "ERR, hr". Покажет строковую ошибку системы.
— а вот это клёвая фича, спасибо, я не знал.
Re[2]: Создания окна посредствами CreateWindow(...)
Здравствуйте, Slamin, Вы писали:
S>1. Если есть возможность использовать пошаговую трассировку, то есть такая полезная переменная в окне Watch — "ERR, hr". Покажет строковую ошибку системы. Если "BUTTON" создается, то скорее всего ошибка в регистрации класса.
Не обязательно капителями, можно и пофамильярнее "err, hr"
Re[4]: Создания окна посредствами CreateWindow(...)
Здравствуйте, Алекс, Вы писали:
А>Здравствуйте, Sergio Tokini, Вы писали:
А>[]
А>Покажи, пожалуйста, каким образом ты регистрируешь класс, а также код оконной процедуры.
На самом деле у меня много версий этой регистрации, просто это самая короткая, я мне неохота щас много строчить. И ещё у меня появилась идея: я щас сижу под XP и 7-мым VS, XP требует включения ьанифеста для Common-controls, хотя я его и включал, но может включал неправильно? И вообще чё-то я не знаю что мне делать, из примеров весь код работает, а мой почему-то нет
Re[5]: Создания окна посредствами CreateWindow(...)
Здравствуйте, Sergio Tokini, Вы писали:
ST>На самом деле у меня много версий этой регистрации, просто это самая короткая, я мне неохота щас много строчить. И ещё у меня появилась идея: я щас сижу под XP и 7-мым VS, XP требует включения ьанифеста для Common-controls, хотя я его и включал, но может включал неправильно? И вообще чё-то я не знаю что мне делать, из примеров весь код работает, а мой почему-то нет
WM_CREATE сам обрабатываешь? А правильное ли значение возвращаешь?
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Вроде как до сих пор создавалось и показывалось нормально. Уважаемый Sergio Tokini, если Вас не затруднит, Вы можете повторить этот код, а затем постепенно заменять параметры на свои. Когда перестанет создаваться — значит в этом и дело.
Что касается оконной процедуры, то в простейшем случае нужно в ней иметь хотя бы одну строчку: return DefWindowProc(hWnd,mesg,wParam,lParam);. Это позволит обрабатывать события стандартно, в том числе и WM_CREATE.
Не судите строго, если что не так сказал... Заранее простите.
Re[6]: Создания окна посредствами CreateWindow(...)
Люди, всем огромное спасибо, я наконец-то разобрался со своей оконной процедурой, в которую я по глупости забыл внести обработку WS_CREATE, и забыл вызвать DefWindowProc. теперь всё исправно работает. RSDN — супер.