Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
1

Какие способы создания окна и кнопки в нем Вы знаете?

20.10.2014, 19:06. Просмотров 853. Ответов 17
Метки нет (Все метки)

Добрый вечер! Начнем с того что wxWidgets и Qt не будем рассматривать
вот код обычного окна с текстрм внутри
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
 
// Global variables
 
// The main window class name.
static TCHAR szWindowClass[] = _T("win32app");
 
// The string that appears in the application's title bar.
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");
 
HINSTANCE hInst;
 
// Forward declarations of functions included in this code module:
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    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("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    hInst = hInstance; // Store instance handle in our global variable
 
    // The parameters to CreateWindow explained:
    // szWindowClass: the name of the application
    // szTitle: the text that appears in the title bar
    // WS_OVERLAPPEDWINDOW: the type of window to create
    // CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)
    // 500, 100: initial size (width, length)
    // NULL: the parent of this window
    // NULL: this application does not have a menu bar
    // hInstance: the first parameter from WinMain
    // NULL: not used in this application
    HWND hWnd = CreateWindow(
        szWindowClass,
        szTitle,
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        500, 100,
        NULL,
        NULL,
        hInstance,
        NULL
    );
 
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Win32 Guided Tour"),
            NULL);
 
        return 1;
    }
 
    // The parameters to ShowWindow explained:
    // hWnd: the value returned from CreateWindow
    // nCmdShow: the fourth parameter from WinMain
    ShowWindow(hWnd,
        nCmdShow);
    UpdateWindow(hWnd);
 
    // Main message loop:
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
 
    return (int) msg.wParam;
}
 
//
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR greeting[] = _T("Hello, World!");
 
    switch (message)
    {
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
 
        // Here your application is laid out.
        // For this introduction, we just print out "Hello, World!"
        // in the top left corner.
        TextOut(hdc,
            5, 5,
            greeting, _tcslen(greeting));
        // End application-specific layout section.
 
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
        break;
    }
 
    return 0;
}
и кнопка создается просто
C++
1
2
3
4
Button[a] = CreateWindow("button", number,
                                WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON,
                                s, 75, 30, 30, hwnd, (HMENU)BTN,
                                hin, NULL);
ну там еще в начале ее укащать ну это мелочи

неужели других способов создания окна и кнопок не бывает? неужели только WinAPI?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2014, 19:06
Ответы с готовыми решениями:

Какие еще есть способы создания визуальных приложений кроме WinApi?
Здравствуйте, я так понимаю под Windows оконные приложения создаются на WinAPI. Хотел спросить есть...

Какие еще способы создания прог на С++ под Windows существуют кроме WinAPI и WinForms?
большинство прог написаны на плюсах.это значит на WinAPI?нет?тогда подскажите Спасибо)))

Какие способы создания приложения на этом языке Вы знаете?
ответьте пожалуйста конкретно ну я нуб такой) 1.чтобы отличить код WINAPI от других то винапи это...

Visual C++, какие есть способы создания GUI?
Стоит вопрос переписать программу с delphi на Visual с++,на зло программа сама сложная. Но в С++ не...

17
nmcf
6548 / 5768 / 2625
Регистрация: 14.04.2014
Сообщений: 24,518
20.10.2014, 20:04 2
Создай приложение Windows Forms. Там всё визуально делается, форма, кнопки и т. п.
1
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
20.10.2014, 20:20  [ТС] 3
nmcf, нее платформа Net не рассматривается
0
nmcf
6548 / 5768 / 2625
Регистрация: 14.04.2014
Сообщений: 24,518
20.10.2014, 20:24 4
Я немного ошибся. "Приложение MFC" называется.
1
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
20.10.2014, 20:51  [ТС] 5
nmcf, случайно не знаете как привязать координаты кнопки к окну?
просто есть окно и правильно распределенные кнопки но конда окно в полный экран то кнопки смещаются хз куда.в windows form же можно привязать
0
nmcf
6548 / 5768 / 2625
Регистрация: 14.04.2014
Сообщений: 24,518
20.10.2014, 20:58 6
Кнопки никуда сместиться не могут, они привязаны к левому верхнему углу формы.
1
IrineK
Заблокирован
20.10.2014, 21:36 7
Цитата Сообщение от MIRAMIX Посмотреть сообщение
платформа Net не рассматривается
C++Builder - самое простое для С++
1
Jupiter
Каратель
Эксперт С++
6585 / 4006 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
20.10.2014, 21:58 8
Цитата Сообщение от MIRAMIX Посмотреть сообщение
wxWidgets и Qt
Цитата Сообщение от nmcf Посмотреть сообщение
Windows Forms
Цитата Сообщение от nmcf Посмотреть сообщение
MFC
Цитата Сообщение от IrineK Посмотреть сообщение
C++Builder
Цитата Сообщение от MIRAMIX Посмотреть сообщение
неужели других способов создания окна и кнопок не бывает? неужели только WinAPI?
все выше перечисленное - обертки на ВинАпи.
другие способы есть - создаете главное окно с помощью того же WinApi и рисуете в нем все контролы сами спомощью того же апи.
1
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
20.10.2014, 22:10  [ТС] 9
nmcf, как првязать относительно всего окна?
0
nmcf
6548 / 5768 / 2625
Регистрация: 14.04.2014
Сообщений: 24,518
20.10.2014, 22:14 10
Обрабатывать событие при изменении размеров окна и перемещать элементы управления в новое место.
1
-THE_MASTER666-
Заблокирован
20.10.2014, 22:31 11
DirectX + UpdateLayeredWindow() + мелодия из кейгена = отличное окно
1
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
20.10.2014, 23:39  [ТС] 12
-THE_MASTER666-, как пользоваться директом?��
0
Убежденный
Ушел с форума
Эксперт С++
16274 / 7340 / 1183
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
21.10.2014, 00:13 13
Цитата Сообщение от MIRAMIX Посмотреть сообщение
неужели других способов создания окна и кнопок не бывает?
Бывает, например DialogBoxParam/CreateDialogParam.
Код в разы проще.

Цитата Сообщение от MIRAMIX Посмотреть сообщение
неужели только WinAPI?
Не только, но Вы же сами написали:

Цитата Сообщение от MIRAMIX Посмотреть сообщение
Начнем с того что wxWidgets и Qt не будем рассматривать
Есть куча GUI-библиотек и инструментов на все случаи жизни, а
WinAPI - это лишь то, что скрывается за всеми фасадами.
1
-THE_MASTER666-
Заблокирован
21.10.2014, 08:12 14
Лучший ответ Сообщение было отмечено MIRAMIX как решение

Решение

Цитата Сообщение от MIRAMIX Посмотреть сообщение
как пользоваться директом?
Примерно так же, как и OpenGL и AMD Mantle
Изучать надо всё это барахло, причём не мало, но зато как изучишь - тебе открыть путь игродельство (а так же на gamedev.ru)
Для начала можешь почитать тут:
1. http://d3dbegin.narod.ru/
2. Далее можешь поискать книгу (на английском) - Beginning DirectX 11 Game Programming(Allen Sherrod and Wendy Jones / Аллен Шеррод и Венди Джонс)
3. И как вариант Introduction to 3D Game Programming with DirectX 11(Frank Luna)
4. Далее изучаешь nVidia CUDA GPGPU, разрабатываешь ИИ на НН

Добавлено через 3 минуты
5. Не знаю что с растертеком случилось, общем он временно здесь: http://web.archive.org/web/201406250.../tutindex.html
2
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
21.10.2014, 12:00  [ТС] 15
-THE_MASTER666-, ОГРОМНОЕ СПАСИБО!!! а на русском книг нету? просто с английским на очень. а предложенные книги хорошие?

Добавлено через 3 минуты
Убежденный, я имел ввиду нет других способов на написания.ведь винапи код это каракули HWND hWnd, и допустим честь игры написанная на плюсах то как может выглядеть код?
0
-THE_MASTER666-
Заблокирован
21.10.2014, 12:14 16
Лучший ответ Сообщение было отмечено MIRAMIX как решение

Решение

Цитата Сообщение от MIRAMIX Посмотреть сообщение
а предложенные книги хорошие?
Книги - то хорошие, но они на английском, ну вот многие учатся именно по книге Франка Луны из п.3 моего поста выше.
В общем - то по DirectX11 на русском толковой литературы и нет, всё что есть на русском - про DirectX9, а его я настоятельно не рекомендую изучать, т.к. он уже сто раз устарел, а от DirectX11 он отличается координально. (основные скачки различий: DX7/ DX8, DX9/DX10, ниже DX7 видел очень давно в детстве, был DX5, но его уже особо не помню, DX8, DX8.1, DX9 - похожи, DX10,DX11,DX11.1,DX11.2 - тоже, но начинать надо именно с DX11)

Вот сам нашёл у какого - то перца русского видео уроки по DirectX11 (там куча какого - то барахла и в частности и про DirectX), можете по слушать
http://www.youtube.com/user/DENISSISS2/videos
Кстати, я уже много раз замечал, чего нет на торрентах - иной раз можно найти на ютюбе в виде видео урока

В вообще, скажу, что на данном форуме спецов по графике практический нет, лучший русский форум игроделов - http://www.gamedev.ru/ да простят меня админы (правда там публика пожжжОщще )
1
MIRAMIX
#MRoose
3 / 4 / 3
Регистрация: 22.02.2013
Сообщений: 413
22.10.2014, 14:11  [ТС] 17
-THE_MASTER666-, ОГРОМНОЕ СПАСИБО! Вы угадали я все это ввел чтобы стать игроделом) Вы в точку все теперь появилась надежда)

Добавлено через 5 часов 38 минут
-THE_MASTER666-, Не можете помочь? )
Как поменять цвет у кнопки и при увеличении окна сохранить все элементы на старых позициях?
0
-THE_MASTER666-
23.10.2014, 08:50     Какие способы создания окна и кнопки в нем Вы знаете?
  #18

Не по теме:

Цитата Сообщение от MIRAMIX Посмотреть сообщение
Не можете помочь? )
через пару часов гляну

0
23.10.2014, 08:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2014, 08:50
Привет! Вот еще темы с ответами:

Способы создания кнопки с текстом и картинками
Всем привет! Как создавать кнопки с текстом и картинкой? Ранее создавал так: Делаю в любом...

Какие способы самые удобные/рациональные способы регистрации ошибок есть?
Задался вопросом, а как регистрировать ошибки? При этом чтобы и выглядело это красиво, и понятно...

Какие СУБД вы знаете?
Подскажите пожалуйста Какие СУБД вы знаете? Что такое архитектура &quot;клиент-сервер&quot;? Что такое...

Какие космические RPG вы знаете?
Всем привет, подскажите пожалуйста отличную космическую RPG. Космические рейнджеры или Звёздные...


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

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

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