Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win API С++ создание формы со всеми элементами / 25 сообщений из 87, страница 1 из 4
17.11.2010, 10:04
    #36960952
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Здравствуйте. Возник такой вопрос можно ли с помощью API функций создать форму и несколько компонентов на ней(текстбокс, статусбар и.т.д)?
...
Рейтинг: 0 / 0
17.11.2010, 10:06
    #36960958
BpeguH
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Niwalke, да.
...
Рейтинг: 0 / 0
17.11.2010, 10:22
    #36960990
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
On 17.11.2010 10:04, Niwalke wrote:

> Здравствуйте. Возник такой вопрос можно ли с помощью API функций создать форму и
> несколько компонентов на ней(текстбокс, статусбар и.т.д)?

Конечно можно. А ты как думал ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
17.11.2010, 10:54
    #36961081
Не верь им!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Niwalke, они все врут.
C++Builder и VCL только.
...
Рейтинг: 0 / 0
17.11.2010, 16:47
    #36962172
mammmoth
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Так это ж и есть интерфейс прикладного программирования при помощи которого все и делается, глубже тока машинные коды, ассэмблер.
...
Рейтинг: 0 / 0
17.11.2010, 18:03
    #36962384
schizophrenic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
давайте низкоуровневые языки не упоминать..
текстбокс, статусбар и.т.д есть не только а VCL
...
Рейтинг: 0 / 0
18.11.2010, 00:10
    #36962833
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Если все-таки можно это прописать через апишные функции, подскажите какими операторами это делается?
...
Рейтинг: 0 / 0
18.11.2010, 09:13
    #36963076
pemp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
все это и все остальное очень просто создается одной функцией CreateWindow(подробности в мсдне) гораздо веселее с этими контролами потои что-то делать и обрабатывать от них сообщения :) лучше для начала книжку полистать Петцольда например без знания матчасти после ВЛЦ писать на винАПИ сплошной разрыв шаблона :)
...
Рейтинг: 0 / 0
19.11.2010, 20:18
    #36966702
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
CreateWindow(BUTTON, "Press me", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
10, 10, 80, 30, hwnd, (HMENU)10000, hInstance, NULL) Использую такую запись он не понимает Button hwnd hInstance. Что неправильно я делаю?
...
Рейтинг: 0 / 0
19.11.2010, 20:23
    #36966708
petrav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
NiwalkeCreateWindow(BUTTON, "Press me", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
10, 10, 80, 30, hwnd, (HMENU)10000, hInstance, NULL) Использую такую запись он не понимает Button hwnd hInstance. Что неправильно я делаю?
Вам конкретно для чего все это нужно ?
Зачем писать интерфейс именно на WinAPI ?

Это достаточно нетривиальное мероприятие. И, даже если, вы дорастете до уровня "создавать GUI на WinAPI" вы такие вопросы перестанете задавать.
...
Рейтинг: 0 / 0
19.11.2010, 22:52
    #36966870
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
i remove some stuff but you will find out how to use:
...
Рейтинг: 0 / 0
26.11.2010, 22:57
    #36980408
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Мне требуетсясделать эти операции с использованием библиотек. Я сделал это через класс, в которо прописывал структуру окна и с помощью CreateWindow создавал окно и элементы на ней. Но мне необходимо реализовать это используя библиотеки, что-то вроде как это делается в макросах: прописываешь библиотеку и в дальнейшем выполняются все действия
...
Рейтинг: 0 / 0
27.11.2010, 07:18
    #36980578
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
NiwalkeМне требуетсясделать эти операции с использованием библиотек. Я сделал это через класс, в которо прописывал структуру окна и с помощью CreateWindow создавал окно и элементы на ней. Но мне необходимо реализовать это используя библиотеки, что-то вроде как это делается в макросах: прописываешь библиотеку и в дальнейшем выполняются все действияТы уж определись что ты хочешь.
Если тебе нужно использовать библиотеку, то тебе совсем не нужно вручную вызывать CreateWindow. Если тебе нужно вручную вызывать CreateWindow, значит все библиотеки идут лесом.
Либо библиотеки, либо WinAPI. Смешивать их глупо.
...
Рейтинг: 0 / 0
27.11.2010, 10:16
    #36980626
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Я не понял, нужно разработать свою библиотеку и ее использовать, или брать готовую ????
...
Рейтинг: 0 / 0
27.11.2010, 10:25
    #36980630
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Прошу прощение что ввел в заблуждение необходимо использовать готовую библиотеку
...
Рейтинг: 0 / 0
27.11.2010, 11:29
    #36980666
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Niwalke,

Тогда бери MFC - она очень бизка к WinAPI, но скрывает как раз мороку с хендлами и прочим.
И примеров по ней много.

Единственное - в Express - редакции ее нет.

Как вариант, можно рассмотреть OWLNext или WTL
...
Рейтинг: 0 / 0
27.11.2010, 18:18
    #36980894
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Спасибо. Только вот попытался это сделать через макрос в Excel создать форму с копкой не получилось. Библиотеку видимо надо прописать. Как мне кажется.
...
Рейтинг: 0 / 0
27.11.2010, 20:18
    #36980968
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
NiwalkeСпасибо. Только вот попытался это сделать через макрос в Excel создать форму с копкой не получилось. Библиотеку видимо надо прописать. Как мне кажется.Так какая у тебя конечная цель то?
Что ты хочешь в итоге получить?
Из Экселя создавать окошки через WinAPI в принципе (наверное) можно а вот узнавать о события произошедших в созданом окне - нельзя. Эксель работает через VBA, а на нем сделать колбеки могущие работать с машинным стеком нереально.
Если хочешь создавать окошки из Экселя, изучай ActiveX.
...
Рейтинг: 0 / 0
27.11.2010, 22:32
    #36981088
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
White Owl Эксель работает через VBA, а на нем сделать колбеки могущие работать с машинным стеком нереально.
Реально(AddressOf), но боюсь топикстартер не осилит
...
Рейтинг: 0 / 0
18.12.2010, 00:23
    #37022037
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Здравствуйте. Возник вопрос: как создать окно windows, с помощью библиотеки .dll?. Я создал приложение которое создает окно и различные элементы, но через класс окна, и затем через CreateWindow() создавал все необходимое. Можно ли этот код изменить чтобы создавалось окно посредством библиотеки .dll?
Код:
Код: plaintext
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.
// Hello1.cpp
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
///////////////////////////////////////////////////////////////////////////////////////////////
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
HWND hMainWnd;
HWND hwndButtonHide;
HWND hwndCombo;
HWND hwndEdit;
HWND hwndCheck;
HWND hwndRadioCheck;
char szClassName[] = "MyClass";
MSG msg;
WNDCLASSEX wc;

// Заполняем структуру класса окна
wc.cbSize = sizeof(wc);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra =  0 ;
wc.cbWndExtra =  0 ;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = szClassName;
wc.hIconSm = LoadIcon(NULL, IDI_APPLICATION);

// Регистрируем класс окна
if (!RegisterClassEx(&wc)) {
MessageBox(NULL, "Cannot register class", "Error", MB_OK);
return  0 ;
}

// Создаем основное окно приложения
hMainWnd = CreateWindow(
szClassName, "A Hello1 Application", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,  0 , CW_USEDEFAULT,  0 ,
(HWND)NULL, (HMENU)NULL,
(HINSTANCE)hInstance, NULL
);
hwndButtonHide = CreateWindow("BUTTON","BUTTON!", WS_VISIBLE | WS_CHILD,
 10 , 10 , 261 , 90 , hMainWnd, NULL, (HINSTANCE)hInstance, NULL);

hwndCombo = CreateWindow("COMBOBOX","Combo!", WS_VISIBLE | WS_CHILD,
 10 , 100 , 261 , 90 , hMainWnd, NULL, (HINSTANCE)hInstance, NULL);
hwndEdit = CreateWindow("EDIT","Edit!", WS_VISIBLE | WS_CHILD,
 10 , 200 , 261 , 90 , hMainWnd, NULL, (HINSTANCE)hInstance, NULL);
hwndCheck = CreateWindow("BUTTON","Checkbox!", WS_CHILD|WS_VISIBLE|BS_AUTOCHECKBOX,
 10 , 300 , 261 , 90 , hMainWnd, NULL, (HINSTANCE)hInstance, NULL);
hwndRadioCheck = CreateWindow("BUTTON","RadioCheck!", WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,
 10 , 400 , 261 , 90 , hMainWnd, NULL, (HINSTANCE)hInstance, NULL);


if (!hMainWnd) {
MessageBox(NULL, "Cannot create main window", "Error", MB_OK);
return  0 ;
}

// Показываем наше окно
ShowWindow(hMainWnd, nCmdShow);
// UpdateWindow(hMainWnd);

// Выполняем цикл обработки сообщений до закрытия приложения
while (GetMessage(&msg, NULL,  0 ,  0 )) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}
///////////////////////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
HDC hDC;
PAINTSTRUCT ps;
RECT rect;

switch (msg)
{
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);

GetClientRect(hWnd, &rect);
DrawText(hDC, "Hello, World!", - 1 , &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER );

EndPaint(hWnd, &ps);
return  0 ;

case WM_CLOSE:
DestroyWindow(hWnd);
return  0 ;

case WM_DESTROY:
PostQuitMessage( 0 );
return  0 ;

default:
return DefWindowProc(hWnd, msg, wParam, lParam);
}

return  0 ;
}
...
Рейтинг: 0 / 0
18.12.2010, 01:40
    #37022102
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Niwalke,

Я тебе открою страшную тайну: ты уже пользуешься .dll

Ты же сам не писал код функции CreateWindow, верно? Ты ее только используешь. А раз ты сам функцию не описываешь, а она при этом работает, то значит эта функция где-то находится... А где она находится? Правильно, в одной из системных .dll
...
Рейтинг: 0 / 0
18.12.2010, 10:20
    #37022199
Niwalke
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
Как создать собственную библиотеку типа createwindow, чтобы исключить использование windows.h. И создать окно со всеми компонентами на основании кода выше
...
Рейтинг: 0 / 0
18.12.2010, 16:44
    #37022509
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
NiwalkeКак создать собственную библиотеку типа createwindow, чтобы исключить использование windows.h. И создать окно со всеми компонентами на основании кода выше

Это невозможно. В той или иной степени тебе придётся использовать Win32 API чтобы запрограммировать GUI, хотя бы чтобы рисовать на экране.
...
Рейтинг: 0 / 0
18.12.2010, 16:46
    #37022511
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
NiwalkeКак создать собственную библиотеку типа createwindow, чтобы исключить использование windows.h. И создать окно со всеми компонентами на основании кода выше

Слушай, ну что ж тебе надо -то ? Уже окно, через API, с использованием .dll.
что ещё-то надо ?
...
Рейтинг: 0 / 0
18.12.2010, 16:49
    #37022514
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Win API С++ создание формы со всеми элементами
White OwlИз Экселя создавать окошки через WinAPI в принципе (наверное) можно а вот узнавать о события произошедших в созданом окне - нельзя. Эксель работает через VBA, а на нем сделать колбеки могущие работать с машинным стеком нереально.


Ну, в VB такое точно можно.
В общем, там можно вызвать любую функцию из любой С-шной DLL, и наоборот, экспортнуть
свою. На VBA точно не знаю, но подозреваю, что тоже можно.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win API С++ создание формы со всеми элементами / 25 сообщений из 87, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]