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

Не получается создать окно с кнопкой

30.09.2012, 18:58. Показов 1193. Ответов 3
Метки нет (Все метки)

Попыталась создать окошко с кнопочкой - не получается. Ругается там где hButton = 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
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");
HINSTANCE hInst;
BOOL RC(WNDPROC, LPCTSTR, UINT);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//функция оконной процедуры
#define lD_BUTTON   3000
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)  ///главная функция
{
    hInst=hInstance;
    if(!RC(WndProc,szWindowClass,COLOR_WINDOW)) return FALSE;
 
       //создаём окно
 
 
HWND hWnd = CreateWindow(
    szWindowClass,
    szTitle,
    WS_OVERLAPPEDWINDOW|WS_VISIBLE,
    CW_USEDEFAULT, CW_USEDEFAULT,
    400, 400,
    NULL,
    NULL,
    hInstance,
    NULL
);
 
if (!hWnd)
{
    MessageBox(NULL,
        _T("Call to CreateWindow failed!"),
        _T("Win32 Guided Tour"),
        NULL);
 
    return FALSE;
}
 
//отображаем окно
 
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;
    TCHAR greeting[] = _T("Zaharova Anna");
    switch (message)
    {
        
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
                TextOut(hdc,
                    5, 5,
                    greeting, _tcslen(greeting));
            EndPaint(hWnd, &ps);
 
        break;
        
 
        case WM_DESTROY:
        PostQuitMessage(0);
        break;
 
        case WM_CREATE:
        {   hButton = CreateWindow("button", "Пример кнопки", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 0,0,200,20, hWnd, (HMENU)lD_BUTTON, hInst, NULL);
        return 0;
        }
        
     
        default:return DefWindowProc(hWnd, message, wParam, lParam);break;
    }
return 0;
}
 
 
BOOL RC(WNDPROC WndProc, LPCTSTR Name, UINT brBackground)
{
    
WNDCLASS wc = { 0 }; 
    wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
 
    wc.lpfnWndProc=WndProc; //указывает на функцию окна
    wc.hInstance=hInst; //указывает на дескриптор текущего приложения
    wc.hIcon=LoadIcon(hInst,MAKEINTRESOURCE(IDI_APPLICATION)); //иконка
    wc.hCursor=LoadCursor(NULL, IDC_ARROW); //курсор
    wc.hbrBackground=(HBRUSH)( brBackground +1); //  задает дескриптор кисти закрашивания фона окна
    wc.lpszMenuName=NULL; // имя 
    wc.lpszClassName=Name; //имя класса окон
return (RegisterClass(&wc)!=0);
}
Добавлено через 20 минут
написала так:
C++
1
2
TCHAR but[] = _T("Хнопка");
hButton=CreateWindow(but, but, WS_VISIBLE|WS_CHILD,300,300,200,25,hWnd,(HMENU)ID_BUTTON,hInst,NULL);
Больше не ругается, но кнопка не отображается при запуске( пустое окно
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.09.2012, 18:58
Ответы с готовыми решениями:

Не получается создать дочернее окно
Всем привет!!! Пытаюсь создать главное окно и дочернее но не чего не выходит код компилируется без...

Простейшее окно с кнопкой
Здравствуйте. Требуется создать окно с кнопкой и обрабатывать нажатие на неё. Самое смешное, это...

Создать окно поверх главного окна, чтобы главное окно было доступно
здравствуйте. подскажите пожалуйста как сделать окно поверх главного окна, но чтобы главное окно...

Создать прозрачный диалог с кнопкой
Доброго времени суток. Необходимо сделать прозрачный диалог и кнопку. Кнопка должна быть либо...

3
2826 / 1635 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
30.09.2012, 19:19 2
Так lpClassName у кнопки должен быть "BUTTON", а не "Хнопка".
0
9 / 9 / 5
Регистрация: 10.05.2012
Сообщений: 291
30.09.2012, 19:50  [ТС] 3
Цитата Сообщение от Somebody Посмотреть сообщение
Так lpClassName у кнопки должен быть "BUTTON", а не "Хнопка".
Блин, точно, спасибо..
а я думала это просто текст..

Добавлено через 13 минут
а как можно сделать кнопку видмой и невидимой? точнее поменять этот параметр

Добавлено через 15 минут
Фрагмент задания:
//После нажатия правой клавиши мыши кнопка скрывается и отображается многострочный редактор с текстом

Подскажите как можно реализовать это "скрывается"? Я так поняла что нужно изменить видимость кнопки, как это сделать? есть какая-то функция??
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
31466 / 20513 / 7988
Регистрация: 22.10.2011
Сообщений: 35,635
Записей в блоге: 7
30.09.2012, 20:20 4
Цитата Сообщение от PinkPink Посмотреть сообщение
есть какая-то функция??
Есть. Называется ShowWindow со вторым параметром = SW_HIDE.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2012, 20:20

Создать класс окно, используя композицию и иерархию, определить окно заголовком и кнопкой.
Создать класс окно, используя композицию и иерархию, определить окно заголовком и кнопкой. Класс...

Создать окно с кнопкой, закрывающей это окно
Создайте новый оконный проект в ОС Microsoft Windows 7 или Linux. Разместите посередине окна кнопку...

Создать окно со списком выбора и кнопкой
Доброго времени суток. Подскажите, подойдет ли для решения темы сабжа с++ или лучше взять что то...

Создать окно с двумя панелями и кнопкой
Доброго времени. Очень нужна помощь с заданием. Нужно создать окно. Поместить в него две панели...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru