Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
15 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 18

Ошибка при создании окна в Windows 10

09.02.2016, 13:19. Показов 1484. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, написал я программку, на windows 7 она работает прекрасно, но на windows 10 не создается окно (код попадает в блок с ошибкой), проблема в том, что у меня нет возможности лично запустить проект на в10, всё что я могу - это скидывать уже откомпилированные экзешники знакомому)) Может кто-нибудь подсказать, в чем может заключаться проблема?
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
63
64
65
66
67
68
#include <Windows.h>
#include <string>
#include "resource.h"
#include <TlHelp32.h>
#include <fstream>
#include "MemReader.h"
 
 
using namespace std;
 
 
HWND hwnd;
HINSTANCE hInstance2;
DWORD64 var;
fstream Logs;
 
LRESULT CALLBACK DS2ZERO(HWND, UINT, UINT, LONG);
 
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR cmdLine, int nCmdShow){
 
    MSG Msg;
    WNDCLASSEX WndClass;
    char name[] = "ClassName";
    hInstance2 = hInstance;
    
    WndClass.style = CS_HREDRAW | CS_VREDRAW;
    WndClass.lpfnWndProc = (WNDPROC)DS2ZERO;
    WndClass.cbClsExtra = 0;
    WndClass.cbWndExtra = 0;
    WndClass.hInstance = hInstance;
    WndClass.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
    WndClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClass.lpszMenuName = NULL;
    WndClass.lpszClassName = name;
    WndClass.cbSize = sizeof(WNDCLASSEX);
    WndClass.hIconSm = NULL;
 
    if (!RegisterClassEx(&WndClass)){
        MessageBox(NULL, "Cant register class", "Error", MB_OK);
        exit(1);
    }
 
    HDC hDCScreen = GetDC(NULL);
    int Horres = GetDeviceCaps(hDCScreen, HORZRES);
    int Vertres = GetDeviceCaps(hDCScreen, VERTRES);
    ReleaseDC(NULL, hDCScreen);
 
    hwnd = CreateWindow(name, "DS2RANK", WS_OVERLAPPED | WS_SYSMENU, (Horres / 2) - 300, (Vertres / 2) - 300, 600, 600, NULL, NULL, hInstance, NULL);
 
    if (!hwnd){
        MessageBox(NULL, "Cant create window", "Error", MB_OK);
        exit(1);
    }
 
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    
    while (GetMessage(&Msg, NULL, 0, 0)){
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
    }
 
    return Msg.wParam;
 
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2016, 13:19
Ответы с готовыми решениями:

Ошибка при создании дескриптора окна при динамическом создании кнопок
public Form1() { InitializeComponent(); } int height = 10; int width = 10; ...

Ошибка при создании окна
При попытке создать окно с уменьшенными копиями изображений выдаёт множество ошибок: Exception in thread &quot;Image Fetcher 0&quot;...

Ошибка при создании окна
Решил переделать код, создающий окно с помощью winapi, существенных изменений не сделал(убрал прослойки в обёртке), но теперь функция...

7
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
09.02.2016, 13:21
Meph2015, какая ошибка? Текст, код ошибки приведите.
0
15 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 18
09.02.2016, 13:23  [ТС]
Просто эта программа при запуске не создает окно, попадает сюда:
C++
1
2
3
4
    if (!hwnd){
        MessageBox(NULL, "Cant create window", "Error", MB_OK);
        exit(1);
    }
Это сообщение и выводится. Проблема только на в10 (у всех), на в7 всё создается нормально.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
09.02.2016, 13:56
Цитата Сообщение от Meph2015 Посмотреть сообщение
Это сообщение и выводится.
в чём проблема поставить брейкпоинт и посмотреть почему функция CreateWindow возвращает NULL.

ну и 100% рабочий код окна для Windows 10
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
LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    WNDCLASSEX wc;
    ZeroMemory(&wc, sizeof(WNDCLASSEX));
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.lpszClassName = "WindowClass";
    RegisterClassEx(&wc);
    HWND hWnd = CreateWindowEx(0, "WindowClass", "Test", WS_SYSMENU | WS_MINIMIZEBOX,
        (GetSystemMetrics(SM_CXSCREEN) - 1024) / 2, (GetSystemMetrics(SM_CYSCREEN) - 576) / 2,
        1024, 576, 0, 0, hInstance, 0);
    ShowWindow(hWnd, nCmdShow);
    MSG msg;
    while (1)
    {
        while (PeekMessage(&msg, 0, 0, 0, 1))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        if (msg.message == WM_QUIT) break;
    }
    return (int)msg.wParam;
}
0
15 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 18
09.02.2016, 14:36  [ТС]
Спасибо за код, но проблема обнаружилась в другом. Оказывается, окно не создается на в10 из-за того, что я перевел проект в х64 режим (в свойствах проекта). Просто взял шаблон пустого окошка, в режиме win32 создается, а в х64 - нет (повторюсь, только на в10, при этом сама операционка там стоит 64 битная). Есть способ как-то это исправить? х64 режим этой программе необходим.
Миниатюры
Ошибка при создании окна в Windows 10  
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
09.02.2016, 19:42
Цитата Сообщение от Meph2015 Посмотреть сообщение
всё что я могу - это скидывать уже откомпилированные экзешники знакомому
Ну дак выведите код ошибки (GetLastError) в MessageBox, и пусть вам знакомый его продиктует. А вообще попробуйте с опцией /Zp8 откомпилировать.
0
15 / 0 / 0
Регистрация: 30.09.2015
Сообщений: 18
09.02.2016, 21:18  [ТС]
jupman, расставил по пути хода WinMain функции MessageBox'ы с GetLastError в 6 разных местах (последнее место там же, где и сообщение о невозможности создать окно), из 6 мессаджей вылезли такие коды - 0 0 1813 0 0 0, 1813 появлялось после заполнения WndClass из-за LoadIcon, после замены хендла в функции на NULL (всё таки иконка системная берется) ошибка пропала. Везде нули, ошибок нет.. не понимаю в чем проблема.
/Zp8 тоже никак не помогло
0
232 / 135 / 19
Регистрация: 10.11.2015
Сообщений: 305
09.02.2016, 22:36
Meph2015, ну во первых ошибку нужно проверять только когда функция потерпела неудачу. 1813 - это значит ресурс данного типа в образе отсутствует (ERROR_RESOURCE_TYPE_NOT_FOUND). Вот кстати список кодов: (System Error Codes). В общем залейте exe посмотреть.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2016, 22:36
Помогаю со студенческими работами здесь

Ошибка при создании окна
При компиляции не получается создать окно,не опйму где ошибка,программа прост и подобные я уже писал,так что никаких предположений нет ...

Ошибка при создании окна
Добрый вечер. Такая проблема. Нужно создать два окна (в первом таблица (по щелчку на строку таблицы открывается второе окно, в котором...

Ошибка при создании дескриптора окна
Столкнулся с сообщением &quot;Ошибка при создании дескриптора окна&quot; в самом тривиальном случае - при записи текста в свойство Text обычного...

Ошибка при создании окна сообщений
void Cprogr1Dlg::OnBnClickedButton1() { MessageBox(&quot;Привет!&quot;); } Подчеркивает &quot;Привет!&quot;, и выводит ошибку: Error:...

Ошибка при создании дескриптора окна
Создал программу, без проблем компилируется и запускается на Win10, но при попытке перенести на другое устройство (Win7 x64), выскакивает...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru