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

Нет формы после компиляции visual C++ 2012

24.01.2014, 00:55. Показов 855. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проект создан как надо, вот код. Что не так?
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
#include <windows.h>
 
#define width 800
#define heigth 600
 
HWND NotLocHWND;
MSG UserMessage;
 
LRESULT CALLBACK WindowProc( HWND NotLocHWND,  UINT UserMessage, WPARAM wParam,  LPARAM lParam);
 
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
 
    WNDCLASSEX WindowClass;
    memset(&WindowClass, 0, sizeof(WNDCLASSEX));
    WindowClass.cbSize=sizeof(WNDCLASSEX);
    WindowClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
    WindowClass.hCursor=LoadCursor(NULL, IDC_ARROW);
    WindowClass.hIcon=LoadIcon(NULL, IDC_APPSTARTING);
    WindowClass.hInstance= hInstance;
    WindowClass.lpfnWndProc = WindowProc;
    WindowClass.lpszClassName=L"Window_Class_Name";
    WindowClass.lpszMenuName=L"TimeTable";
 
    RegisterClassEx( &WindowClass );
 
    NotLocHWND =CreateWindow( WindowClass.lpszClassName,WindowClass.lpszMenuName,
        (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
        ((GetSystemMetrics(SM_CXSCREEN)-width) / 2),((GetSystemMetrics(SM_CYSCREEN)-heigth ) / 2),
        width, heigth, NULL, NULL, NULL, NULL);
    
    ShowWindow(NotLocHWND, nCmdShow);
 
    while (GetMessage(&UserMessage, NotLocHWND, NULL, NULL))
    {
        TranslateMessage(&UserMessage);
        DispatchMessage(&UserMessage);
    }
 
    return(UserMessage.wParam);
 
}
LRESULT CALLBACK WindowProc( HWND NotLocHWND,  UINT UserMessage, WPARAM wParam,  LPARAM lParam){
    
    return (NotLocHWND, UserMessage, wParam, lParam);
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.01.2014, 00:55
Ответы с готовыми решениями:

Ошибки после компиляции на Visual Express 2012.Ошибки в теме
Добрый вечер ребят помогите пожалуйста.Программа написана на Visual Express 2012.Обясните что поменять чтобы зароботало. После компиляции...

Visual Studio 2012 Ошибка при компиляции программы
Здравствуйте. Возникла проблема при компиляции данной программы: #include &quot;stdafx.h&quot; #include &quot;string&quot; #include...

Visual Studio 2012 и Orwell Dev-C++ - ускорение компиляции
Можно ли как-нибудь ускорить компиляцию кода (консольное приложение) в dev-c++ или Visual studio 2012 express? Время компиляции ~5 секунд...

13
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 01:05  [ТС]
Нет формы после компиляции)
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,032
Записей в блоге: 1
24.01.2014, 01:06
подсказка: проверяйте значения, возвращаемые функциями чтобы узнать где ошибка.
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 01:09  [ТС]
Пожалуйста точнее.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,032
Записей в блоге: 1
24.01.2014, 01:11
Цитата Сообщение от hot_dog Посмотреть сообщение
Пожалуйста точнее.
что точнее?
Вызвали RegisterClassEx, проверили что вернула функция, если ошибка, то выводим сообщение.
Вызвали CreateWindowEx - тоже самое. Что не понятно то?
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 01:32  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
что точнее?
Вызвали RegisterClassEx, проверили что вернула функция, если ошибка, то выводим сообщение.
Вызвали CreateWindowEx - тоже самое. Что не понятно то?
Да действительно есть ошибка RegisterClassEx
Миниатюры
Нет формы после компиляции visual C++ 2012  
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,032
Записей в блоге: 1
24.01.2014, 01:41
C++
1
WindowClass.lpszMenuName=NULL;//Здесь MENU name, а не WINDOW name
и так же hIconSm инициализируйте

Добавлено через 2 минуты
C++
1
CreateWindow( WindowClass.lpszClassName,L"Заголовок окна!!!",...);
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 02:09
Вот рабочий код. Сравнивайте, что не так в вашем.
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Hello1.cpp
#include <windows.h>
#include <conio.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    HWND hMainWnd;  
    char szClassName[] = "MyClass";
    MSG msg;
    WNDCLASSEX wc;
    
    // Заполняем структуру класса окна
    wc.cbSize        = sizeof(wc);      
    wc.style         = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc   = WndProc;
    wc.cbClsExtra    = 0;
    wc.cbWndExtra    = 0;
    wc.hInstance     = hInstance;
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName  = NULL;
    wc.lpszClassName = szClassName;
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
 
    // Регистрируем класс окна
    if (!RegisterClassEx(&wc)) {
        MessageBox(NULL, "Cannot register class", "Error", MB_OK);
        return 0;
    }
    
    // Создаем основное окно приложения
    hMainWnd = CreateWindow( 
        szClassName, "A Hello1 Application", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
        (HWND)NULL, (HMENU)NULL,
        (HINSTANCE)hInstance, NULL
    );
    
    if (!hMainWnd) {
        MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
        return 0;
    }
 
    // Показываем наше окно
    ShowWindow(hMainWnd, nCmdShow); 
//  UpdateWindow(hMainWnd);
 
    // Выполняем цикл обработки сообщений до закрытия приложения
    while (GetMessage(&msg, NULL, 0, 0)) 
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
        if (kbhit()) exit(1);
    }
    
 
    return msg.wParam;
}
///////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    
    switch (msg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
 
        GetClientRect(hWnd, &rect);
        DrawText(hDC, "Hello, World!", -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER );
        
        EndPaint(hWnd, &ps);
        return 0;
 
    case WM_CLOSE:
        DestroyWindow(hWnd);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
 
    default:
        return DefWindowProc(hWnd, msg, wParam, lParam);
    }
 
    return 0;
}
Добавлено через 17 минут
Из-за WindowProc ваш код окно не показывает.
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 02:31  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Из-за WindowProc ваш код окно не показывает.
А что там не так? А то заминив на ваш ничего не изменилось!
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 02:46
Цитата Сообщение от hot_dog Посмотреть сообщение
А то заминив на ваш ничего не изменилось!
Что на что заменили?

Добавлено через 53 секунды
Сами свой код придумали или взяли откуда-то?
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 02:58  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Сами свой код придумали или взяли откуда-то?
Немного подсмотрел, немного сам ... вот теперь мучаюсь


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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <windows.h>
#include <conio.h>
 
#define width 800
#define heigth 600
 
 
LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
//LRESULT CALLBACK WindowProc(HWND NotLocHWND,  UINT UserMessage, WPARAM wParam,  LPARAM lParam);
 
int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
 
    HWND NotLocHWND;
    MSG UserMessage;
 
    WNDCLASSEX WindowClass;
    memset(&WindowClass, 0, sizeof(WNDCLASSEX));
    WindowClass.cbSize        = sizeof(WNDCLASSEX);      
    WindowClass.style         = CS_HREDRAW | CS_VREDRAW;
    WindowClass.lpfnWndProc   = WindowProc;
    WindowClass.cbClsExtra    = 0;
    WindowClass.cbWndExtra    = 0;
    WindowClass.hInstance     = hInstance;
    WindowClass.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    WindowClass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WindowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WindowClass.lpszMenuName  = NULL;
    WindowClass.lpszClassName = L"Window_Class_Name";
    WindowClass.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
 
    
    RegisterClassEx(&WindowClass);
 
    if (!RegisterClassEx(&WindowClass))
  {
     MessageBox (NULL,L"Can`t register class",L"Error",MB_OK);
     return 0;
  }
    CreateWindow( WindowClass.lpszClassName,L"TimeTable",
        (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX),
        ((GetSystemMetrics(SM_CXSCREEN)-width) / 2),((GetSystemMetrics(SM_CYSCREEN)-heigth ) / 2),
        width, heigth, NULL, NULL, NULL, NULL);
 
 
    ShowWindow(NotLocHWND, nCmdShow);
 
    while (GetMessage(&UserMessage, NotLocHWND, NULL, NULL))
    {
        TranslateMessage(&UserMessage);
        DispatchMessage(&UserMessage);
         if (kbhit()) exit(1);
    }
 
    return(UserMessage.lParam);
 
}
LRESULT CALLBACK WindowProc( HWND NotLocHWND,  UINT UserMessage, WPARAM wParam,  LPARAM lParam){
    
 HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    
    switch (UserMessage)
    {
    case WM_PAINT:
        hDC = BeginPaint(NotLocHWND, &ps);
 
        GetClientRect(NotLocHWND, &rect);
        DrawText(hDC,L"Hello, World!", -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER );
        
        EndPaint(NotLocHWND, &ps);
        return 0;
 
    case WM_CLOSE:
        DestroyWindow(NotLocHWND);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
 
    default:
        return DefWindowProc(NotLocHWND, UserMessage, wParam, lParam);
    }
 
    return 0;
}
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.01.2014, 03:12
Что-то вы порастеряли в коде. Значение, которое возвращает CreateWindow()? И не нужно класс два раза регистрировать.
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
24.01.2014, 03:21  [ТС]
Все кажется работает, а теперь осталось разобраться что это делает...
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
  HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    
    switch (UserMessage)
    {
    case WM_PAINT:
        hDC = BeginPaint(NotLocHWND, &ps);
 
        GetClientRect(NotLocHWND, &rect);
        DrawText(hDC, L"Hello, Cyberforum.ru!", -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER );
        
        EndPaint(NotLocHWND, &ps);
        return 0;
 
    case WM_CLOSE:
        DestroyWindow(NotLocHWND);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
 
    default:
        return DefWindowProc(NotLocHWND, UserMessage, wParam, lParam);
    }
 
    return 0;
и дальше можно продолжать
Миниатюры
Нет формы после компиляции visual C++ 2012  
0
Исследователь
 Аватар для GrayWolf
318 / 317 / 24
Регистрация: 06.04.2011
Сообщений: 872
24.01.2014, 05:43
А где hInstance в CreateWindow? Предпоследний параметр равен NULL
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2014, 05:43
Помогаю со студенческими работами здесь

Visual Studio 2010 и 2012. Проблемма после установки 12
Наверное уже кто-то сталкивался с этим и уже написал топик сюда или куда-либо-нибудь, но вот гугл и я убеждаемся в обратном (если я не прав...

visual studio 2010 запуск после компиляции релиза
пишу на qt visual studio 2010, (1 скрин - скомпилированная прога, все ок !), но после добавления в папку с релизом всех необходимых...

появление формы после компиляции
запустив проект форма появляется в разных местах а не как в Delphi7 строго над редактируемой формой. Как сделать что бы форма появлялась в...

Установила Microsoft Visual Studio 2012 после запуска секунд через 10 программа вылетает
Установила Microsoft Visual Studio 2012 после запуска секунд через 10 программа вылетает. Что сделать чтобы такого не происходило?

После компиляции проекта нет связи с БД SQL
Здравствуйте. Возникла проблема соединения проекта и базы данных. Работаю в Microsoft Visual Studio 2010 Установлен Net framework 4. ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru