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

Не создается кнопка в WM_CREATE

29.01.2016, 09:27. Показов 1882. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Собственно создаю кнопку в winapi обрабатывая WM_CREATE. Но она не создается... Ниже код, вроде все правильно, подскажите что упустил.
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>
 
#define BUTTON_ONE 3000
 
ATOM RegClass(WNDCLASSEX*);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
HINSTANCE hInstance;
HWND hWnd;
LPCTSTR headerName = L"Калькулятор";
LPCTSTR className = L"calculate";
const int buttonWidth = 30, buttonHeight = 30;
 
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
{
    int cx, cy, xPos, yPos;
    int width = 200, height = 300;
    WNDCLASSEX wc;
    MSG msg;
 
    cx = GetSystemMetrics(SM_CXSCREEN);
    cy = GetSystemMetrics(SM_CYSCREEN);
    xPos = cx / 2 - width / 2;
    yPos = cy / 2 - height / 2;
    
    if(!RegClass(&wc))
    {
        MessageBox(NULL, L"Error RegClass()", L"Error", MB_OK);
        return 0;
    }
    
    hWnd = CreateWindowEx(0, className, headerName, WS_OVERLAPPEDWINDOW | WS_VISIBLE, xPos, yPos, width, height, NULL, NULL, hInstance, NULL);
    if(!hWnd)
    {
        MessageBox(NULL, L"Error CreateWindowEx()", L"Error", MB_OK);
        return 0;
    }
 
    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    DestroyWindow(hWnd);
    UnregisterClass(className, hInstance);
    
    return 0;
}
ATOM RegClass(WNDCLASSEX *wc)
{
    wc->cbClsExtra = 0;
    wc->cbWndExtra = 0;
    wc->cbSize = sizeof(WNDCLASSEX);
    wc->style = CS_HREDRAW | CS_VREDRAW;
    wc->lpszClassName = className;
    wc->lpszMenuName = NULL;
    wc->hInstance = hInstance;
    wc->lpfnWndProc = WndProc;
    wc->hCursor = LoadCursor(NULL, IDC_ARROW);
    wc->hIcon = LoadIcon(NULL, IDI_WINLOGO);
    wc->hIconSm = wc->hIcon;
    wc->hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 
    return RegisterClassEx(wc);
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    static HWND button;
    switch(msg)
    {
    case WM_CREATE:
        button = CreateWindow(L"BUTTON", L"1", WS_VISIBLE | WS_CHILD | BS_CENTER, 20, 20, buttonWidth, buttonHeight, hWnd, (HMENU)BUTTON_ONE, hInstance, NULL);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    case WM_CLOSE:
        PostQuitMessage(0);
        return 0;
 
    default:
        return DefWindowProc(hwnd, msg, wParam, lParam);
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.01.2016, 09:27
Ответы с готовыми решениями:

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

Не создается кнопка
... WNDCLASSEX ShotMenu_class; ShotMenu_class.cbClsExtra = 0; ShotMenu_class.cbSize = sizeof(WNDCLASSEX); ...

Не создается кнопка
Всем привет! Никак не могу понять, почему не рисуется кнопка (FASM): format PE GUI 4.0 entry start include...

4
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
29.01.2016, 10:46
Лучший ответ Сообщение было отмечено elephants как решение

Решение

Цитата Сообщение от elephants Посмотреть сообщение
вроде все правильно, подскажите что упустил.
elephants, можно посмотреть в отладчике, какие параметры мы передаем функции CreateWindow.
Миниатюры
Не создается кнопка в WM_CREATE  
1
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
29.01.2016, 11:03
Можно заметить, что hWnd == 0.
1
26 / 26 / 15
Регистрация: 30.12.2015
Сообщений: 95
29.01.2016, 11:07  [ТС]
Благодарю.
0
29.01.2016, 16:37

Не по теме:

Поэтому я и поддерживаю мнение что зависимость регистра символов для переменных - есть зло. Порождает ситуации как в представленном коде.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2016, 16:37
Помогаю со студенческими работами здесь

Не создается кнопка
При клике на button-2 должно создаться еще одно меню с кнопками @bot.message_handler(commands=) def welcome(message): #KeyBoard ...

Не создается кнопка Button
Нужно создать кнопку Button, чтобы она выполняла это bot.client.Init(); и нужно создать Label в который кнопка будет выводить ...

Не создается вторая кнопка
Почему не создаётся вторая кнопка? import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import...

Кнопка не создается внутри окна
В программе должно создаваться окно, а в этом окне кпопка, но ее почему-то нет. Создание кпопки на 21 строчке. #include...

Создается кнопка, как присвоить обработчик?
При нажатии на кнопку javascript создает &quot;другую&quot; кнопку. При нажатии на &quot;другую&quot; кнопку что-то делается. Но проблема в том, что если я...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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