Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++ и WinAPI

Войти
Регистрация
Восстановить пароль
 
 
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
#1

Как заставить работать кнопку, которая находится на другом объекте (статической панели)? - C++ WinAPI

10.01.2017, 10:00. Просмотров 846. Ответов 31
Метки нет (Все метки)

Подскажите пожалуйста! Не знаю как получить событие от кнопки1.

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

Как получить событие на кнопке 1? Вызов WM_COMMAND: не создается на кнопке 1.

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
#include <windows.h>         // Подключаем заголовочный файл Windows
 
//MainWinProc - обработчик событий из windows. Windows запускает.
LRESULT CALLBACK MainWinProc(HWND   hwnd, UINT    msg, WPARAM  wparam, LPARAM  lparam)          
{
    
 switch (msg) 
  {
      case WM_CREATE:
          {
              //Создаем панель, в которой будет находится кнопка
              DWORD dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              DWORD dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              HWND panel = CreateWindowEx(dwExStyle, TEXT("STATIC"), TEXT("Панель"), dwStyle, 10, 50, 300, 300, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
              //Создаем кнопку1 находиится на панели
              HWND knopka=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 1"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              50,50,100,30,panel,(HMENU)853,NULL,NULL);
 
              //Создаем кнопку2 работает но она не в панели
              HWND knopka2=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 2"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              330,100,100,30,hwnd,(HMENU)854,NULL,NULL);
          }
          break;
 
 
 
 
      case WM_COMMAND:// При нажатии кнопки 1 Это не вызывается!
          {
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==853)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 1!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
 
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==854)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 2!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
          }
   break;
 
      case WM_DESTROY://Методы при закрытие окна.
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
 
 
//WinMain - Точка входа программы. Отсюда начинается работа кода.
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  = NULL;//(HBRUSH)GetStockObject(GRAY_BRUSH);Раскраска объекта в серый цвет (GRAY_BRUSH)
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = TEXT("WINDOWSCLASS");
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
 
// Зарегистрируем класс
RegisterClassEx(&windowsclass);
 
hwnd = CreateWindowEx(NULL,              // стиль окна
                       TEXT("WINDOWSCLASS"),         // класс
                       TEXT("Программа"), // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL,// | WS_HSCROLL,//Стили окна для разных работ
                       100,100,  // левый верхний угол 
                       500,500,   // ширина и высота окна
                       NULL,                   // дескриптор родительского окна 
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL);                  // указатель на данные окна         
 
 
ShowWindow(hwnd, ncmdshow);//Выводит окно на экран. Второй параметр означает как открыть окно. Его можно открыть на весь экран или свернуть.
UpdateWindow(hwnd);//Перерисовка окна после изменения
 
while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);//преобразует некоторые сообщения полученные с помощью клавиатуры
            DispatchMessage(&msg);//Отправляет сообщения оконной процедуре
    }
 
     return msg.wParam;
 
 
};
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2017, 10:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как заставить работать кнопку, которая находится на другом объекте (статической панели)? (C++ WinAPI):

Как скрыть кнопку на form2, нажав на кнопку которая находится на form1 - C#
Как скрыть кнопку на form2, нажав на кнопку которая находится на form1? т.е. нажав на кнопку OpenFrm2, открывается форма Form2, и кнопка...

Как на панели заставить кнопку появляться и исчезать при наведении - и отводе курсора - C#
Опишу такой фрагмент код: 1. На форму бросил панель (panel1) 2. Заполняю эту панель динамически созданным объектом тоже типа...

Как заставить кнопку 'X' работать на свертывание? - Visual Basic
Как заставить кнопку 'X' у формы работать на свертывание?

Как заставить работать кнопку закрытия окна? - Java
Как заставить работать кнопку закрытия окна? import java.applet.Applet; import java.awt.*; public class MyButton extends Applet{ ...

Как в QML TextArea заставить правильно работать кнопку TAB? - C++ Qt
Если кинуть в QML GUI элемент TextArea и что - то в нём писать и попытаться сделать табуляцию (отступ), то вместо того, что бы это сделать...

Как по нажатии на картинку, которая находится на панели, перетаскивать её мышкой - C#
Вопросы такие: 1) как по нажатии на картинку которая находится на панели перетаскивать её мышкой и при отпускании что бы она оставалась...

31
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 10:01  [ТС] #2
Скриншот
0
Миниатюры
Как заставить работать кнопку, которая находится на другом объекте (статической панели)?  
Alex5
1116 / 777 / 127
Регистрация: 12.04.2010
Сообщений: 1,990
10.01.2017, 11:30 #3
Цитата Сообщение от infobos Посмотреть сообщение
Как получить событие на кнопке 1? Вызов WM_COMMAND: не создается на кнопке 1.
Сообщение WM_COMMAND будет отправлено родительскому окну кнопки - окну panel.
C++
1
2
3
// panel - родительское окно
HWND knopka=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 1"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
 50,50,100,30,panel,(HMENU)853,NULL,NULL);
1
Миниатюры
Как заставить работать кнопку, которая находится на другом объекте (статической панели)?  
Alex5
1116 / 777 / 127
Регистрация: 12.04.2010
Сообщений: 1,990
10.01.2017, 11:34 #4
infobos, с помощью spy++ можно посмотреть, какие сообщения получает окно.
0
Миниатюры
Как заставить работать кнопку, которая находится на другом объекте (статической панели)?  
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 11:49  [ТС] #5
Цитата Сообщение от Alex5 Посмотреть сообщение
Сообщение WM_COMMAND будет отправлено родительскому окну кнопки - окну panel
Ну это я до Вас понял. Мне нужен код реализации. Связка.
И вопрос что за софт выдает такие коды?

Добавлено через 6 минут
Как тогда получить событие у родительского окна?
0
Fulcrum_013
Заблокирован
10.01.2017, 12:25 #6
Цитата Сообщение от infobos Посмотреть сообщение
Как тогда получить событие у родительского окна?
Точно так же как и у формы. А именно создать для него свою функцию WndProc и назначить ее рродительскому окну, в данном случае панели

Добавлено через 5 минут
Т.е. точно так же зарегестрировать класс окна и т.д. только для панели. В общем все это очень элегантно делается средствами ООП и КОП. Посему если таких кнопок /панелей нужно много существует два реальных варианта их разрулить: 1 использовать готовый оконный ООП фреймверк. 2 Писать свой оконный ООП фреймверк. А в сыром винапи коде потеряетсь очень быстро.
1
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 14:01  [ТС] #7
Механику понял позже проверю. По коду пока отменяется.
0
Fulcrum_013
Заблокирован
10.01.2017, 14:02 #8
Цитата Сообщение от infobos Посмотреть сообщение
И вопрос что за софт выдает такие коды?
Имеется в виду что то типа конструктора интерфейсов который генерит винапи код? Таковых не существует в связи с тупиковостью такого подхода. Все конструкторы интерфейсов генерят не код а данные для создания иерархии объектов из классов какого либо оконного фреймверка. А сами написанные в ручную классы универсально обрабатывают по одному типу элемента вызывая соответствующие функции винапи.
1
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 17:57  [ТС] #9
Я в стопоре. И все таки мне нужен код реализации. Я не нахожу связи. Там есть цикл. Должна быть установка идентификаторов. Жду код.

Добавлено через 16 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
1 использовать готовый оконный ООП фреймверк. 2 Писать свой оконный ООП фреймверк. А в сыром винапи коде потеряетсь очень быстро.
Уже занимаюсь потихоньку оптимизацией кода(Вывожу каждый элемент(кнопка,поле ввода и т.д.) в отдельный объект), но возникает проблема связки одного объекта ко всем событиям и функциям. Возникает сложность создать объект с присвоением идентификаторов.
В winapi привлекает токая сложность в получении общепринятых функций. То есть одним модификатором можно сразу везде поменять шрифты, размеры и прочее.
По поводу фреймворков. Только я не понял как и где это искать и что устанавливать. Не понятно что искать.

Добавлено через 12 минут
Событие запустил, а что с этим делать?
C++
1
2
3
4
5
while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);//преобразует некоторые сообщения полученные с помощью клавиатуры
            DispatchMessage(&msg);//Отправляет сообщения оконной процедуре
    }
На всякий случай хочу увидеть решение опытного мастера. Чтобы не было у меня косяков.

Добавлено через 2 минуты
Вот что у меня получилось, но я не уверен, что там все учтено.

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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <windows.h>         // Подключаем заголовочный файл Windows
 
//MainWinProc - обработчик событий из windows. Windows запускает.
LRESULT CALLBACK MainWinProc(HWND   hwnd, UINT    msg, WPARAM  wparam, LPARAM  lparam)          
{
    
 switch (msg) 
  {
      case WM_CREATE:
          {
              //Создаем панель, в которой будет находится кнопка
              //DWORD dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              //DWORD dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              //HWND panel = CreateWindowEx(dwExStyle, TEXT("STATIC"), TEXT("Панель"), dwStyle, 10, 50, 300, 300, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
              DWORD dwExStyle = /*WS_EX_CLIENTEDGE |*/WS_EX_DLGMODALFRAME;
              DWORD dwStyle = WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE|SS_SUNKEN;//SS_CENTER
              HWND panel = CreateWindowEx(dwExStyle, TEXT("WINDOWSCLASS2"), TEXT("Панель"), dwStyle, 10, 50, 300, 300, hwnd, (HMENU)NULL, NULL, (LPVOID)NULL);
    
 
              //Создаем кнопку1 находиится на панели
              HWND knopka=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 1"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              50,50,100,30,panel,(HMENU)853,NULL,NULL);
 
              //Создаем кнопку2 работает но она не в панели
              HWND knopka2=CreateWindow(TEXT("BUTTON"),TEXT("Кнопка 2"),WS_CHILD|BS_PUSHBUTTON|WS_VISIBLE,
              330,100,100,30,hwnd,(HMENU)854,NULL,NULL);
          }
          break;
 
 
 
 
      case WM_COMMAND:// При нажатии кнопки 1 Это не вызывается!
          {
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==853)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 1!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
 
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==854)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 2!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
          }
   break;
 
      case WM_DESTROY://Методы при закрытие окна.
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
//MainWinProc - обработчик событий из windows. Windows запускает.
LRESULT CALLBACK MainWinProc2(HWND   hwnd, UINT    msg, WPARAM  wparam, LPARAM  lparam)          
{
    
 switch (msg) 
  {
      case WM_CREATE:
          {
 
          }
          break;
 
 
 
 
      case WM_COMMAND:// При нажатии кнопки 1 Это не вызывается!
          {
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==853)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 1!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
 
              if ((HIWORD(wparam)==0) && (LOWORD(wparam)==854)) 
                  MessageBox(hwnd,TEXT("Нажали кнопку 2!"),TEXT("Информация"),MB_OK|MB_ICONWARNING);
          }
   break;
 
      case WM_DESTROY://Методы при закрытие окна.
            PostQuitMessage(0);
            break;
      default :
            return DefWindowProc(hwnd, msg, wparam, lparam);
  }
} 
 
 
//WinMain - Точка входа программы. Отсюда начинается работа кода.
int WINAPI WinMain( HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow)
 
{
 
WNDCLASSEX windowsclass;  // Создаем класс
HWND       hwnd;          // Создаем дескриптор окна
MSG        msg;           // Идентификатор сообщения
 
WNDCLASSEX windowsclass2;  // Создаем класс
MSG        msg2;           // Идентификатор сообщения
 
// Определим класс окна 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  = NULL;//(HBRUSH)GetStockObject(GRAY_BRUSH);Раскраска объекта в серый цвет (GRAY_BRUSH)
windowsclass.lpszMenuName   = NULL;
windowsclass.lpszClassName  = TEXT("WINDOWSCLASS");
windowsclass.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
 
// Определим класс окна WNDCLASSEX
windowsclass2.cbSize         = sizeof(WNDCLASSEX);
windowsclass2.style         = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
windowsclass2.lpfnWndProc   = MainWinProc2;
windowsclass2.cbClsExtra        = 0;
windowsclass2.cbWndExtra        = 0;
windowsclass2.hInstance     = hinstance;
windowsclass2.hIcon         = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
windowsclass2.hCursor       = LoadCursor(NULL, IDC_ARROW);//Курсор на окне
windowsclass2.hbrBackground = NULL;//(HBRUSH)GetStockObject(GRAY_BRUSH);Раскраска объекта в серый цвет (GRAY_BRUSH)
windowsclass2.lpszMenuName  = NULL;
windowsclass2.lpszClassName = TEXT("WINDOWSCLASS2");
windowsclass2.hIconSm        = LoadIcon(NULL, IDI_APPLICATION);//Значок программы
 
// Зарегистрируем класс
RegisterClassEx(&windowsclass);
RegisterClassEx(&windowsclass2);
 
hwnd = CreateWindowEx(NULL,              // стиль окна
                       TEXT("WINDOWSCLASS"),         // класс
                       TEXT("Программа"), // название окна
                       WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_VSCROLL,// | WS_HSCROLL,//Стили окна для разных работ
                       100,100,  // левый верхний угол 
                       500,500,   // ширина и высота окна
                       NULL,                   // дескриптор родительского окна 
                       NULL,                   // дескриптор меню
                       hinstance,              // дескриптор экземпляра приложения
                       NULL);                  // указатель на данные окна         
 
 
ShowWindow(hwnd, ncmdshow);//Выводит окно на экран. Второй параметр означает как открыть окно. Его можно открыть на весь экран или свернуть.
UpdateWindow(hwnd);//Перерисовка окна после изменения
 
 
while (GetMessage(&msg, 0, 0, 0)) 
    {
            TranslateMessage(&msg);//преобразует некоторые сообщения полученные с помощью клавиатуры
            DispatchMessage(&msg);//Отправляет сообщения оконной процедуре
    }
 
     return msg.wParam;
 
 
};
0
Fulcrum_013
Заблокирован
10.01.2017, 18:10 #10
Цитата Сообщение от infobos Посмотреть сообщение
. Только я не понял как и где это искать и что устанавливать. Не понятно что искать.
С визуал студией идет в комплекте сразу установленный фреймверк MFC. С билдером в комплекте сразу два фреймверка - VCL и FireMonkey. c Qt в комплекте фреймверк QtWidgets. Они устанавиваются сразу при установке среды разработки.
1
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 18:16  [ТС] #11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
С визуал студией идет в комплекте сразу установленный фреймверк MFC. С билдером в комплекте сразу два фреймверка - VCL и FireMonkey. c Qt в комплекте фреймверк QtWidgets. Они устанавиваются сразу при установке среды разработки.
Это что-то типа визуального редактора? Визуально ставишь элементы на панели окна и автоматом генерится код?
0
Fulcrum_013
Заблокирован
10.01.2017, 19:26 #12
Цитата Сообщение от infobos Посмотреть сообщение
Это что-то типа визуального редактора? Визуально ставишь элементы на панели окна и автоматом генерится код?
Генерится не код. Генерится разметка по которой загрузчик фреймверка создает структуру объектов, оборачивающих вызова винапи. С голым винапи кодом без ооп обертки будет каша полная. ну к примеру удобнее пользуя объектную обертку написать что то в духе
Form2->Visible=false; чтобы закрыть форму
вместо ShowWindow(HandleForm2,SW_HIDE);
0
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
10.01.2017, 19:45  [ТС] #13
Наверно это расширение и код не генерится.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Генерится не код. Генерится разметка по которой загрузчик фреймверка создает структуру объектов, оборачивающих вызова винапи.
Ну здесь вроде понятно!
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
С голым винапи кодом без ооп обертки будет каша полная. ну к примеру удобнее пользуя объектную обертку написать что то в духе
Form2->Visible=false; чтобы закрыть форму
вместо ShowWindow(HandleForm2,SW_HIDE);
А что такое ООП обертка? Можно дать определение с примером?
Я уже понимаю что каша будет. Эту кашу можно обернуть своими методами(Функциями, классами и прочее.)
С конструкторами имел дело. Поэтому будет проще войти в глубь WinApi после конструктора (Программировать приложение с помощью визуального редактора)
Я Выбрал WinApi с целью осилить DirectX. И подобное программирование очень сильно расширяет границы понимания в программировании. И опыт упростить WinApi своими методами будет некоторой зарядкой для программиста.
Не надо меня отговаривать о WinApi Я уже наслышен о том, как все сложно. Двигаемся в глубь пока не проверю DirectX на скорость с другими проектами. Также есть задачи ускорить свои специфические задачи для ускорения некоторых расчетов, которые требуют больших ресурсов.
После Directx или параллельно буду проверять 3d графику у WPF на C#. Тоже наслышен.
0
Fulcrum_013
Заблокирован
10.01.2017, 23:55 #14
Цитата Сообщение от infobos Посмотреть сообщение
Я Выбрал WinApi с целью осилить DirectX.
Общего у DirectX и WinAPI только одно - Direct3D при инициализации дают хендл окна в который ему выводит отрисованный результат.

Добавлено через 3 часа 11 минут
Цитата Сообщение от infobos Посмотреть сообщение
А что такое ООП обертка? Можно дать определение с примером?
Примеры - классы MFC или та часть компонентов VCL которая предназначена для создания интерфейсом.
1
infobos
Строитель
355 / 69 / 2
Регистрация: 18.06.2010
Сообщений: 499
11.01.2017, 06:03  [ТС] #15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Общего у DirectX и WinAPI только одно - Direct3D при инициализации дают хендл окна в который ему выводит отрисованный результат.
Не знание WinApi не способствует пониманию DirectX во многих книгах и примерах кода этот с++ WinApi.
0
11.01.2017, 06:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2017, 06:03
Привет! Вот еще темы с ответами:

Как подключить к программе базу данных, которая находится на другом компьютере - C#
Добрый вечер!! Будьте любезны объясните шаг за шагом(ну уж очень подробно:) ) как же все таки подключить к программе базу данных которая...

Не могу заставить работать на другом компьюторе - Visual Basic
Помогите пожалуйста!!!! Я совсем еще начинающий :( Не могу заставить работать на другом компьюторе скомпелированный c базами данных(Data)...

Как по нажатию на кнопку можно открыть папку, которая находится рядом с экзешником проекта - C#
Здравствуйте. У меня вот такой вопрос. Как по нажатию на кнопку можно открыть папку, которая находится рядом с экзешником проекта, с...

Как заставить сделать фигуры статической - Delphi WinAPI
Доброго времени суток , очень нужна ваша помощь с api функциями есть задание . Создать графической приложение при помощи API-функций...


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

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

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