Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/70: Рейтинг темы: голосов - 70, средняя оценка - 4.60
4 / 4 / 0
Регистрация: 13.05.2012
Сообщений: 10

Создание кнопки в Win32 Project

13.05.2012, 15:11. Показов 13131. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Проблема заключается в том, что компилируется все отлично, но кнопка в окне так и не появляется. Помогите пожалуйста найти ошибку. Написано, что кнопку можно создавать в двух местах: 1. в функции WinMain 2. В обработчике события WM_CREATE. И ни одной, ни другой, нету. Для создания кнопки использую CreateWindow. И все, больше ничего с ней не делаю. Может надо еще что нибудь?

Вот полный код программы.

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
 
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Bike Shop");
 
HINSTANCE hInst;
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    static HWND hButton, hListBox, hComboBox;
    PAINTSTRUCT ps;
    HDC hdc;
    
    WNDCLASSEX wcex;
    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = NULL;
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
 
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Call to RegisterClassEx failed!"),
            _T("Bike Shop"),
            NULL);
        return 1;
    }
 
    hInst = hInstance; 
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        1000, 800,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
     hButton = CreateWindow ((LPWSTR)"button", (LPWSTR)"Add", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  50, 55, 200, 30, hWnd, (HMENU)101, hInst, 0);
    
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Bike SHop"),
            NULL);
 
        return 1;
    }
 
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
 
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    static HWND hButton;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_CREATE:
        {
        hButton = CreateWindow ((LPWSTR)"button", (LPWSTR)"Add", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,  10, 5, 200, 30, hWnd, (HMENU)100, hInst, 0);
        }
        break;
    case WM_COMMAND:
        {switch (LOWORD(wParam))
        {
        case 100:
            {
                MessageBox (hWnd, (LPCWSTR)"Button", (LPCWSTR)"", 0);
            }
        }
        break;
    }
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
    return 0;
}
Добавлено через 1 час 36 минут
Может нужно создать файл ресурсов и туда что то добавить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2012, 15:11
Ответы с готовыми решениями:

win32 project
Помогите мне разобрать в этих двух наименованиях: win32 project win32 console aplication Просто не могу понять разницу?

Оконное приложение win32 project
вот у меня есть некоторая программа и я хочу сделать это в виде оконных приложений (кнопка Ввод данных,Просмотр данных, Выход (см.код)) ...

компиляция при Win32 Project
Пробую написать пустое окно в Visual C++ в Win32 Proect, создаю новый проект, во вкладке Application Settings выбираю Static library, и...

5
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
13.05.2012, 15:54
У меня VS-2008 обе кнопки отображаются,
единственное, что изменил - убрал преобразования (LPCWSTR).
Но, в принципе, действительно лучше в ресурсах создавать образец диалога со всеми
нужными элементами и вызывать его по DialogBox().
Можно и образец главного окна тоже сделать в ресурсе,
тогда весь код функции WinMain() может состоять из одной строки
return DialogBox(hinst,NULL,MAKEINTRESOURSE(IDD _DIALOG1),(DlgProc)FnObrabotchik);
0
4 / 4 / 0
Регистрация: 13.05.2012
Сообщений: 10
13.05.2012, 16:01  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
У меня VS-2008 обе кнопки отображаются,
единственное, что изменил - убрал преобразования (LPCWSTR).
У меня VS-2008 тоже, и кнопок нету (LPCWSTR) Потому что я использую юникод, ввиду того, что есть необходимость использования Чешского языка с диактрикой.
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
13.05.2012, 16:19
Ну тогда, везде, вместо (LPCWSTR) напишите букву L
2
4 / 4 / 0
Регистрация: 13.05.2012
Сообщений: 10
13.05.2012, 16:27  [ТС]
Спасибо. Теперь работает.
0
0 / 0 / 0
Регистрация: 30.10.2016
Сообщений: 2
26.03.2017, 11:28
Привет, (HMENU)100 для чего?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2017, 11:28
Помогаю со студенческими работами здесь

Кривая Коха на С++ Win32 Project
Здравствуйте. Необходимо вывести на экран кривую Коха второго и седьмого порядков... Подскажите с чего начать, какими компонентами это...

Project.exe не является приложение Win32
Добрый день. Столкнулся со следующей проблемой: дома стоит Win8, программа создавалась дома. Настал черед конференции, собственно для чего...

C++ Win32 Project: ПРОГРАММИРОВАНИЕ ВНЕШНИХ УСТРОЙСТВ
Помогите пожалуйста. На базе архитектуры WIN 32 Application создать многооконное приложение: 1. Через t1(таймер)...

С++ Win32 Project, как добавить элементы(к примеру comboBox)
Всем привет! Подскажите пожалуйста, как на главную форму добавить элементы, кнопки, списки, и т.д. Никогда не работал в проекте такого...

[ILINK32 Error] Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in IDE?)
Fatal: Could not open .\Debug\Win32\Variant_1.ilf (project already open in IDE?) на русском Fatal: Не удалось открыть \ Debug \...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru