Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Строитель
456 / 73 / 4
Регистрация: 18.06.2010
Сообщений: 507
1

Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?

03.01.2017, 10:07. Показов 1861. Ответов 3
Метки нет (Все метки)

Как заставить окно оставаться рабочим открытым?
Скопировал с одного исходника код (с++ WinApi) для создания окна. И оно сразу закрывается.

В интернете нет ни одного нормального готового исходного кода с созданием простого окна на winapi.
Исправьте код в рабочее положение.

Следующем ходом хочу попросить поставить кнопку, картинку и прочее.
Также можете дать книгу или видеокурс, в котором показываются эти коды. Нажатие кнопок. Определение клика в окне и прочее.


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
#include <windows.h>         // Подключаем заголовочный файл Windows
 
LRESULT CALLBACK MainWinProc(HWND   hwnd,            
                            UINT    msg,              
                            WPARAM  wparam,           
                            LPARAM  lparam)          
{
 
 
  return DefWindowProc(hwnd, msg, wparam, lparam);
} 
 
int WINAPI WinMain( HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    int ncmdshow)
{
 
WNDCLASSEX windowsclass;  // Создаем класс
HWND       hwnd;          // Создаем дескриптор окна
MSG        msg;           // Идентификатор сообщения
 
// Определим класс окна WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style          = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra     = 0;
windowsclass.cbWndExtra     = 0;
windowsclass.hInstance      = hinstance;
windowsclass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground  = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = L"WINDOWSCLASS";
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
 
// Зарегистрируем класс
RegisterClassEx(&windowsclass);
 
// Теперь когда класс зарегестрирован можно создать окно
 
hwnd = CreateWindowEx(NULL,              // стиль окна
                       L"WINDOWSCLASS",         // класс
                       L"Урок 7. Используем Z буфер и раcкрашиваем куб ", // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                       300,150,                // левый верхний угол
                       500,400,                // ширина и высота
                       NULL,                   // дескриптор родительского окна 
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL);                  // указатель на данные окна                                            
 
};
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2017, 10:07
Ответы с готовыми решениями:

CommandField: после действия в этом поле окно закрывается, как сделать чтоб окно оставалось открытым
Использую jquery чтоб открыть диалоговое окно по ссылке, в открываемом окне добавил GridView в нем...

Как сделать окно открытым
Доброго времени суток! Хотел бы узнать, как сделать, чтобы у меня окно сразу же показывалось, а...

В SDL2 мне нужно создать окно и туда вставить предметы, но только создается окно а предметы не додаются
И я не знаю что не так. Взял код с туториала. Нужна ваша помощь Мой код:#include &quot;pch.h&quot;...

Создать окно произвольного размера, скрыть окно, показать окно, удалить окно.
Создать окно произвольного размера, скрыть окно, показать окно, удалить окно. Для создания окна...

3
nd2
3416 / 2796 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
03.01.2017, 13:31 2
Лучший ответ Сообщение было отмечено infobos как решение

Решение

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
#include <windows.h>         // Подключаем заголовочный файл Windows
 
LRESULT CALLBACK MainWinProc(HWND   hwnd,            
                            UINT    msg,              
                            WPARAM  wparam,           
                            LPARAM  lparam)          
{
  switch (msg) 
  {
      case WM_DESTROY:
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
int WINAPI WinMain( HINSTANCE hinstance,
                    HINSTANCE hprevinstance,
                    LPSTR lpcmdline,
                    int ncmdshow)
{
 
WNDCLASSEX windowsclass;  // Создаем класс
HWND       hwnd;          // Создаем дескриптор окна
MSG        msg;           // Идентификатор сообщения
 
// Определим класс окна WNDCLASSEX
windowsclass.cbSize         = sizeof(WNDCLASSEX);
windowsclass.style          = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass.lpfnWndProc    = MainWinProc;
windowsclass.cbClsExtra     = 0;
windowsclass.cbWndExtra     = 0;
windowsclass.hInstance      = hinstance;
windowsclass.hIcon          = LoadIcon(NULL, IDI_APPLICATION);
windowsclass.hCursor        = LoadCursor(NULL, IDC_ARROW);
windowsclass.hbrBackground  = (HBRUSH)GetStockObject(GRAY_BRUSH);
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = L"WINDOWSCLASS";
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);
 
// Зарегистрируем класс
RegisterClassEx(&windowsclass);
 
// Теперь когда класс зарегестрирован можно создать окно
 
hwnd = CreateWindowEx(NULL,              // стиль окна
                       L"WINDOWSCLASS",         // класс
                       L"Урок 7. Используем Z буфер и раcкрашиваем куб ", // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                       300,150,                // левый верхний угол
                       500,400,                // ширина и высота
                       NULL,                   // дескриптор родительского окна 
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL);                  // указатель на данные окна 
 
 
    ShowWindow(hwnd, ncmdshow);
    UpdateWindow(hwnd);
 
    while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
    }
 
     return msg.wParam;
 }
Добавлено через 3 минуты
http://dims.karelia.ru/win32/
1
Строитель
456 / 73 / 4
Регистрация: 18.06.2010
Сообщений: 507
04.01.2017, 07:43  [ТС] 3
Спасибо! Классная инфа по WinApi для новичков. Прямо такое просветление получаешь!

Добавлено через 16 часов 54 минуты
Прочитал статью до обозначенного кода и уже пошли другие темы.
А про этот кусок толком не рассказано:
C++
1
2
3
4
5
6
7
    while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
    }
 
     return msg.wParam;
Скажите для чего он служит и зачем этот цикл с такими методами.
Также можно пример как использовать этот кусок кода в своих целях.
0
nd2
3416 / 2796 / 1251
Регистрация: 29.01.2016
Сообщений: 9,426
04.01.2017, 13:25 4
Ю. Щупак "Win32 API. Эффективная разработка приложений"
1
Миниатюры
Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?   Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?   Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?  

Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2017, 13:25

Окно закрывается, сразу. Как этого избежать?
Добрый день. Я только начал изучать C# и не могу найти ту функцию, которая бы остановила окно?...

Окно закрывается, сразу. Как этого избежать?
Добрый День программисты(будущие или уже)! Вопрос консольное окно закрывается не успев показать...

Подскажите как создается модальное окно
Как можно создать модальное окно, которое бы блокировало выполнение приложения до нажатия на ньом...

WM_CREATE: как узнать, какое окно создается?
Вот начал учить WinAPI как можно узнать через case WM_CREATE: какое окно создается а то оно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.