Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
17 / 17 / 10
Регистрация: 14.06.2012
Сообщений: 151

Странное поведение CreateWindowEx

17.03.2016, 03:03. Показов 1237. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Просто невероятное нежелание создавать окно. Уже неоднократно так писал, сравнивал с рабочими вариантами у себя и в msdn. Всё должно работать, но нет, упорото возвращает 0 и не создаёт окно. Пробовал в разных студиях, на разных ПК, пересоздавал проект. Мистика. Может кто свежим взглядом увидит в чём проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "stdafx.h"
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE prevInst, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd = NULL;
    TCHAR wndClassName[] = L"MainWndClassName";
    MSG message;
 
    WNDCLASSEX wndClass;
    ZeroMemory(&wndClass, sizeof(wndClass));
 
    wndClass.cbSize        = sizeof(wndClass);
    wndClass.hInstance     = hInst;
    wndClass.lpfnWndProc   = WndProc;
    wndClass.lpszClassName = wndClassName;
    wndClass.style         = CS_HREDRAW | CS_VREDRAW;
    wndClass.cbClsExtra    = NULL;
    wndClass.cbWndExtra    = NULL;
    wndClass.lpszMenuName  = MAKEINTRESOURCE(IDR_MENU);
    wndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 
    if (!RegisterClassEx(&wndClass))
    {
        MessageBox(NULL, L"wndClass not registret", L"ERROR", MB_OK);
        return 1;
    }
 
    hMainWnd = CreateWindowEx(NULL, wndClassName, L"DevelopEx Final Test", WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, NULL, CW_USEDEFAULT, NULL, NULL, NULL, hInst, NULL);
    if (!hMainWnd)
    {
        MessageBox(NULL, L"hMainWnd window not create", L"Error", MB_OK);
        return 2;
    }
 
    ShowWindow(hMainWnd, nCmdShow);
    UpdateWindow(hMainWnd);
 
    while (GetMessage(&message, NULL, NULL, NULL))
    {
        TranslateMessage(&message);
        DispatchMessage(&message);
    }
 
    return message.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
    case WM_DESTROY: {
        PostQuitMessage(NULL);
        break;
    }
    default:
        DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
 
    return NULL;
}
Добавлено через 1 час 26 минут
Очень прошу помочь, из-за этого недоразумения стоит важный кусок моей работы. Пересоздавал проект и переписывал заново, не помогло.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2016, 03:03
Ответы с готовыми решениями:

Странное поведение
#include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance,...

Странное поведение (анимация)
Здравствуйте, задача простая и я ее когда то решал успешно. Вывести эллипс, двигающийся по экрану (анимация) с помощью WinAPI. Есть...

Странное поведение именованного канала
#include "stdafx.h" /* Код внутри stdafx.h: #pragma once #include "targetver.h" #include <iostream> #include <string> ...

3
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.03.2016, 08:44
В lpszMenuName прописано MAKEINTRESOURCE(IDR_MENU), а это меню есть в ресурсах проекта?
Можно для теста пока попробовать записать туда NULL:
C++
1
wndClass.lpszMenuName = NULL;
Цитата Сообщение от XpertVision Посмотреть сообщение
Всё должно работать, но нет, упорото возвращает 0 и не создаёт окно.
Смотри, что возвращает GetLastError при этом.
1
 Аватар для jonson
240 / 213 / 84
Регистрация: 18.03.2010
Сообщений: 750
17.03.2016, 12:15
Лучший ответ Сообщение было отмечено XpertVision как решение

Решение

Не по теме:

Цитата Сообщение от XpertVision Посмотреть сообщение
Пробовал в разных студиях, на разных ПК, пересоздавал проект. Мистика.
До переустановки ОС дело хоть не дошло?O_o


XpertVision, в оконной процедуре по дефолту нужно не просто вызывать DefWindowProc, а возвращать то значение которое она возвращает.
C++
1
2
default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
2
17 / 17 / 10
Регистрация: 14.06.2012
Сообщений: 151
17.03.2016, 13:11  [ТС]
jonson, Только нашёл этот момент. Как раз хотел написать. Каждый раз думаю, что сильнее тупить уже нельзя, но нет, удивляю сам себя :/

Всем спасибо огромное, пора себе памятку на чашку наклеить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2016, 13:11
Помогаю со студенческими работами здесь

Странное поведение окна при нажатии VK_ALT
У меня есть обычное окно, в центр которого с помощью SetCursorPos() постоянно перемещается курсор. Когда я нажимаю клавишу ALT курсор...

Странное поведение при передаче структуры в поток
Добрый день! Долгое время пишу только на С# и Qt. Мозги совсем атрофировались от низкоуровневого кода. Но пришлось решать задачу с малыми...

Странное поведение при работе с List Box
Здравствуйте! Столкнулась со странной проблемой... Пишу программу, которая при выборе файла, скидывает путь к файлу в вектор, при условии...

Странное поведение функции с переменным количеством аргументов
Честно говоря даже не знаю где проблема, надеюсь вы поможете разобраться. Есть функция LinkStr для соединения нескольких строк: //...

Странное поведение bool
Помогал отлаживать код и мы наткнулись на удивительное. Кодер скрыл отображение варнингов в VS2010. Метод М1 не всегда возвращал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru