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

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

Конечно можно. А ты как думал ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36961081
Не верь им!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Niwalke, они все врут.
C++Builder и VCL только.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36962172
mammmoth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это ж и есть интерфейс прикладного программирования при помощи которого все и делается, глубже тока машинные коды, ассэмблер.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36962384
schizophrenic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давайте низкоуровневые языки не упоминать..
текстбокс, статусбар и.т.д есть не только а VCL
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36962833
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если все-таки можно это прописать через апишные функции, подскажите какими операторами это делается?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36963076
pemp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все это и все остальное очень просто создается одной функцией CreateWindow(подробности в мсдне) гораздо веселее с этими контролами потои что-то делать и обрабатывать от них сообщения :) лучше для начала книжку полистать Петцольда например без знания матчасти после ВЛЦ писать на винАПИ сплошной разрыв шаблона :)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36966702
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CreateWindow(BUTTON, "Press me", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
10, 10, 80, 30, hwnd, (HMENU)10000, hInstance, NULL) Использую такую запись он не понимает Button hwnd hInstance. Что неправильно я делаю?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36966708
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Win API С++ создание формы со всеми элементами
    #36966870
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i remove some stuff but you will find out how to use:
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980408
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне требуетсясделать эти операции с использованием библиотек. Я сделал это через класс, в которо прописывал структуру окна и с помощью CreateWindow создавал окно и элементы на ней. Но мне необходимо реализовать это используя библиотеки, что-то вроде как это делается в макросах: прописываешь библиотеку и в дальнейшем выполняются все действия
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980578
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiwalkeМне требуетсясделать эти операции с использованием библиотек. Я сделал это через класс, в которо прописывал структуру окна и с помощью CreateWindow создавал окно и элементы на ней. Но мне необходимо реализовать это используя библиотеки, что-то вроде как это делается в макросах: прописываешь библиотеку и в дальнейшем выполняются все действияТы уж определись что ты хочешь.
Если тебе нужно использовать библиотеку, то тебе совсем не нужно вручную вызывать CreateWindow. Если тебе нужно вручную вызывать CreateWindow, значит все библиотеки идут лесом.
Либо библиотеки, либо WinAPI. Смешивать их глупо.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980626
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял, нужно разработать свою библиотеку и ее использовать, или брать готовую ????
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980630
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощение что ввел в заблуждение необходимо использовать готовую библиотеку
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980666
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niwalke,

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

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

Как вариант, можно рассмотреть OWLNext или WTL
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980894
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Только вот попытался это сделать через макрос в Excel создать форму с копкой не получилось. Библиотеку видимо надо прописать. Как мне кажется.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36980968
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiwalkeСпасибо. Только вот попытался это сделать через макрос в Excel создать форму с копкой не получилось. Библиотеку видимо надо прописать. Как мне кажется.Так какая у тебя конечная цель то?
Что ты хочешь в итоге получить?
Из Экселя создавать окошки через WinAPI в принципе (наверное) можно а вот узнавать о события произошедших в созданом окне - нельзя. Эксель работает через VBA, а на нем сделать колбеки могущие работать с машинным стеком нереально.
Если хочешь создавать окошки из Экселя, изучай ActiveX.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #36981088
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Эксель работает через VBA, а на нем сделать колбеки могущие работать с машинным стеком нереально.
Реально(AddressOf), но боюсь топикстартер не осилит
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022037
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Возник вопрос: как создать окно 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
Win API С++ создание формы со всеми элементами
    #37022102
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niwalke,

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

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

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

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


Ну, в VB такое точно можно.
В общем, там можно вызвать любую функцию из любой С-шной DLL, и наоборот, экспортнуть
свою. На VBA точно не знаю, но подозреваю, что тоже можно.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022517
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЗачем писать интерфейс именно на WinAPI ?

Это достаточно нетривиальное мероприятие.


Наоборот, это достаточно просто. В теме кстати классический пример есть.


petravИ, даже если, вы дорастете до уровня "создавать GUI на WinAPI" вы такие вопросы перестанете задавать.



Учится нужно снизу, с основ.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022577
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо написать программу создающие окно, но без использования библиотеки windows.h
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022911
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiwalkeНеобходимо написать программу создающие окно, но без использования библиотеки windows.hwindows.h это не библиотека. Это комбинирующий заголовок для заголовков описывающих WinAPI. Использовать его конечно не обязательно, но тогда тебе прийдется вручную повторить все то что написано внутри всех этих заголовков.

Живя в windows ты не можешь создавать окна не используя функции windows. Они могут быть спрятаны под какой-то библиотекой-оберткой, но они внутри этой библиотеки будут все те-же вызовы CreateWindow()
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022974
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к сожалению (( единственный способ написать абсолютно автономное приложение,
это написать свою собственную ОС ))

проще говоря под какой системой ты запускаешь софт,
те базовые функции и юзаешь..

под Windows ME, XP, Vista.. это WinAPI
под Mac OS это Cocoa
В общем все это API операционных систем

и мало того, даже если тебе в голову придет идея собрать свое маленькое API,
ты все равно сможешь запустить его используя стандартное API той системы где запускаешь

проще говоря под виндой без CreateWindow() ты ничего не сделаешь.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37022975
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывод господа! Все пишем на WinAPI )
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37030136
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousк сожалению (( единственный способ написать абсолютно автономное приложение,
это написать свою собственную ОС ))

проще говоря под какой системой ты запускаешь софт,
те базовые функции и юзаешь..

под Windows ME, XP, Vista.. это WinAPI
под Mac OS это Cocoa
В общем все это API операционных систем

и мало того, даже если тебе в голову придет идея собрать свое маленькое API,
ты все равно сможешь запустить его используя стандартное API той системы где запускаешь



Хм, интересно, а как тогда работают проги, запускаемые до запуска ОС, но имеющие нормальные контролы (типа акронис ОСселектор)?

Или когда говорят, что wxWidgets используют нативные контролы, а QT или свинг - нет.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37030163
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторWin API С++ создание формы со всеми элементамиречь идет о под платформенных программах )) не кидайте автора в загрузочную яму! )
для создания приложения с формами.. сектора юзать не надо!

В идеале все возможно ;) но мы же не разработку собственной ОС обсуждаем )
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37030176
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ML380QT точно нет, разве что в порядке установки
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032765
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю что за wxWidgets будущее
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032777
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousдумаю что за wxWidgets будущее
Обоснуйте. =)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032795
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://ru.wikipedia.org/wiki/WxWidgets Преимущества wxWidgets
Особенность, которая отличает wxWidgets от многих других фреймворков, таких как MFC и OWL, — это многоплатформенная природа . wxWidgets имеет API, который одинаков или почти одинаков на всех поддерживаемых платформах. Это означает, что вы можете написать приложение, к примеру, под Windows и затем с очень немногими (если они вообще понадобятся) изменениями перекомпилировать его под Linux или Mac OS X. Это дает огромное преимущество по сравнению с раздельным программированием под каждую платформу: вам не придется изучать специализированный API для каждой платформы. Кроме того, при выпуске новых версий операционных систем и версий wxWidgets уже написанные приложения всегда будут выглядеть актуально и использовать последние графические версии элементов управления.

Другая отличительная особенность — wxWidgets использует графические элементы интерфейса операционной системы. Многие фреймворки такие как Swing и Qt используют собственные графические элементы управления, снабжая их сменяемыми темами для каждой платформы. Напротив, wxWidgets использует родные графические элементы пользовательского интерфейса всюду где это возможно. В результате они не только выглядят как родные для операционной системы — они на самом деле родные. Это очень важно для пользователей, привыкших работать в конкретной среде, поскольку любое, даже самое незначительное, изменение интерфейса сказывается на их способности свободно использовать свой опыт управления в стиле стандарта их ОС. Вместо этого wxWidgets предоставляет тонкую абстракцию к существующим компонентам системы.

wxWidgets использует C++. Почему не Java? Java отлично подходит для web-приложений, но не является удачным выбором для десктопа. Прежде всего, C++ приложения, работающие с wxWidgets быстрее, имеют более естественный вид. Они проще в установке, поскольку не требуется специальная виртуальная машина. C++, к тому же, предоставляет простой доступ к низкоуровневой функциональности, и написанный код может быть легко интегрирован с уже имеющимся C/C++ кодом .

wxWidgets — бесплатная свободная платформа . Это важный психологический и стратегический момент. Создавая исходный код с использованием бесплатных свободных библиотек, всегда можно решить свои задачи редактируя исходный код; это гораздо практичнее, чем отправлять запрос на требуемую функциональность производителю библиотеки и дожидаться обновления.

Многие аспекты создания приложений, которые иначе пришлось бы решать самостоятельно, в wxWidgets уже инкапсулированы в готовые к применению классы. wxWidgets имеет широкий спектр пользователей — от программистов энтузиастов до крупных корпораций, от отделов научного программирования до медицинских исследовательских групп, от экологических исследователей до телекоммуникационной индустрии.

Разработчики используют wxWidgets по разным причинам: от замены MFC на одной платформе до обеспечения возможности быстрого портирования приложения с, к примеру, Windows на Unix и Mac OS X . wxWidgets также позволяет переносить приложения на мобильные платформы, такие как встраиваемый Linux, Pocket PC, или Palm OS.

Все уже сказано до меня )
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032798
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousML380QT точно нет, разве что в порядке установки

White OwlЖивя в windows ты не можешь создавать окна не используя функции windows. Они могут быть спрятаны под какой-то библиотекой-оберткой, но они внутри этой библиотеки будут все те-же вызовы CreateWindow()

wikipediaДругая отличительная особенность — wxWidgets использует графические элементы интерфейса операционной системы. Многие фреймворки такие как Swing и Qt используют собственные графические элементы управления, снабжая их сменяемыми темами для каждой платформы. Напротив, wxWidgets использует родные графические элементы пользовательского интерфейса всюду где это возможно. В результате они не только выглядят как родные для операционной системы — они на самом деле родные.


Т.е. все-же получается, что QT не использует родные виндовые фунуции для отрисовки окон, а свои. Насколько я знаю, QT все-таки зависит от каких-то системных длл, но более низкоуровнеых, чем те, что содержат CreateWindow().
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032803
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousВсе уже сказано до меня )
Повторюсь с уточнением (мне казалось это очевидным).

Чем wxWidget лучше Qt?

Плиз, обойдитесь без рекламных текстов. Иначе я повторю свой вопрос в третий раз.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032807
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravwxWidgets использует родные графические элементы
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032816
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ML380Т.е. все-же получается, что QT не использует родные виндовые фунуции для отрисовки окон, а свои. Насколько я знаю, QT все-таки зависит от каких-то системных длл, но более низкоуровнеых, чем те, что содержат CreateWindow().Использует Qt родные виндовые функции для отрисовки окон. Использует.
У Qt же код открыт. Ну загляни ты в него и сам все увидишь. А то что в Qt можно кучу разных стилей для окон задавать, так это все надстройки над все тем-же несчастным CreateWindowEx().
И нету в Виндах никаких "более низкоуровневых" dll.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032827
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЧем wxWidget лучше Qt?

Плиз, обойдитесь без рекламных текстов. Иначе я повторю свой вопрос в третий раз.Пора бы уже запустить поиск на слова wxWidgets & Qt.
Впрочем, тогда ты узнаешь чем wxWidgets хуже Qt...
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032832
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПора бы уже запустить поиск на слова wxWidgets & Qt.
Впрочем, тогда ты узнаешь чем wxWidgets хуже Qt...
Я запускал много раз. Ничего кроме флуда не нашел. А выбор делал по другому, что ли, не знаю как сказать. =)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032835
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseouspetravwxWidgets использует родные графические элементы
Плиз. Аккуратнее с цитатами - это же не мои слова, но это мелочь.

Я повторяю свой вопрос в третий раз: чем wxWidget лучше Qt - обоснованно ?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032847
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selfwxWidgets использует родные графические элементы операционной системы, а QT нетдля меня это основной довод, проще говоря соберите под скажем Windows простое QT приложение, и посмотрите на его размер, сделайте тоже самое при помощи скажем WxDev-C++ и вы все поймете )
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032849
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,

зачем ходить в гости со своим стулом?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032851
nauseous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravЯ повторяю свой вопрос в третий раз: чем wxWidget лучше Qt - обоснованно ? лично я против QT ничего не имею, просто считаю что о унаследовал ошибки borland(a) (VCL)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032881
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
off/2

А мне больше приглянулись подходы в DWT
Код: 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.
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.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
/*******************************************************************************
 * Copyright (c) 2000, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
module examples.addressbook.DataEntryDialog;

import dwt.DWT;
import dwt.events.ModifyEvent;
import dwt.events.ModifyListener;
import dwt.events.SelectionAdapter;
import dwt.events.SelectionEvent;
import dwt.layout.GridData;
import dwt.layout.GridLayout;
import dwt.widgets.Button;
import dwt.widgets.Composite;
import dwt.widgets.Display;
import dwt.widgets.Label;
import dwt.widgets.Shell;
import dwt.widgets.Text;

import dwt.dwthelper.ResourceBundle;
import dwt.dwthelper.utils;

/**
 * DataEntryDialog class uses <code>org.eclipse.swt</code>
 * libraries to implement a dialog that accepts basic personal information that
 * is added to a <code>Table</code> widget or edits a <code>TableItem</code> entry
 * to represent the entered data.
 */
public class DataEntryDialog {

    private static ResourceBundle resAddressBook;

    Shell shell;
    char[][] values;
    char[][] labels;

public this(Shell parent, ResourceBundle bdl ) {
    if( resAddressBook is null ){
        resAddressBook = bdl;//ResourceBundle.getBundle("examples_addressbook");
    }
    shell = new Shell(parent, DWT.DIALOG_TRIM | DWT.PRIMARY_MODAL);
    shell.setLayout(new GridLayout());
}

private void addTextListener(Text text) {
    text.addModifyListener(new class(text) ModifyListener {
        Text text;
        this( Text text ){ this.text = text; }
        public void modifyText(ModifyEvent e){
            Integer index = cast(Integer)(this.text.getData("index"));
            values[index.intValue()] = this.text.getText();
        }
    });
}
private void createControlButtons() {
    Composite composite = new Composite(shell, DWT.NONE);
    composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_CENTER));
    GridLayout layout = new GridLayout();
    layout.numColumns =  2 ;
    composite.setLayout(layout);

    Button okButton = new Button(composite, DWT.PUSH);
    okButton.setText(resAddressBook.getString("OK"));
    okButton.addSelectionListener(new class() SelectionAdapter {
        public void widgetSelected(SelectionEvent e) {
            shell.close();
        }
    });

    Button cancelButton = new Button(composite, DWT.PUSH);
    cancelButton.setText(resAddressBook.getString("Cancel"));
    cancelButton.addSelectionListener(new class() SelectionAdapter {
        public void widgetSelected(SelectionEvent e) {
            values = null;
            shell.close();
        }
    });

    shell.setDefaultButton(okButton);
}

private void createTextWidgets() {
    if (labels is null) return;

    Composite composite = new Composite(shell, DWT.NONE);
    composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    GridLayout layout= new GridLayout();
    layout.numColumns =  2 ;
    composite.setLayout(layout);

    if (values is null)
        values = new char[][labels.length];

    for (int i =  0 ; i < labels.length; i++) {
        Label label = new Label(composite, DWT.RIGHT);
        label.setText(labels[i]);
        Text text = new Text(composite, DWT.BORDER);
        GridData gridData = new GridData();
        gridData.widthHint =  400 ;
        text.setLayoutData(gridData);
        if (values[i] !is null) {
            text.setText(values[i]);
        }
        text.setData("index", new Integer(i));
        addTextListener(text);
    }
}

public char[][] getLabels() {
    return labels;
}
public char[] getTitle() {
    return shell.getText();
}
/**
 * Returns the contents of the <code>Text</code> widgets in the dialog in a
 * <code>char[]</code> array.
 *
 * @return  char[][]
 *          The contents of the text widgets of the dialog.
 *          May return null if all text widgets are empty.
 */
public char[][] getValues() {
    return values;
}
/**
 * Opens the dialog in the given state.  Sets <code>Text</code> widget contents
 * and dialog behaviour accordingly.
 *
 * @param   dialogState int
 *                  The state the dialog should be opened in.
 */
public char[][] open() {
    createTextWidgets();
    createControlButtons();
    shell.pack();
    shell.open();
    Display display = shell.getDisplay();
    while(!shell.isDisposed()){
        if(!display.readAndDispatch())
            display.sleep();
    }

    return getValues();
}
public void setLabels(char[][] labels) {
    this.labels = labels;
}
public void setTitle(char[] title) {
    shell.setText(title);
}
/**
 * Sets the values of the <code>Text</code> widgets of the dialog to
 * the values supplied in the parameter array.
 *
 * @param   itemInfo    char[][]
 *                      The values to which the dialog contents will be set.
 */
public void setValues(char[][] itemInfo) {
    if (labels is null) return;

    if (values is null)
        values = new char[][labels.length];

    int numItems = Math.min(values.length, itemInfo.length);
    for(int i =  0 ; i < numItems; i++) {
        values[i] = itemInfo[i];
    }
}
}


и в DFL
Код: 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.
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.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
// This code is public domain.

// To compile:
// 	dfl beginner -gui


private import std.conv;

private import dfl.all;


class MainForm: Form
{
	GroupBox myGroup;
	RadioButton likeDfl, okDfl, hateDfl, whatDfl;
	TextBox myTextBox;
	Button voteBtn;
	
	
	this()
	{
		// Initialize some of this Form's properties.
		width = 220;
		startPosition = FormStartPosition.CENTER_SCREEN;
		formBorderStyle = FormBorderStyle.FIXED_DIALOG; // Don't allow resize.
		maximizeBox = false;
		text = "DFL Beginner Example"; // Form's caption text.
		
		// Add a GroupBox.
		with(myGroup = new GroupBox)
		{
			bounds = Rect(4, 4, this.clientSize.width - 8, 120); // Set the x, y, width, and height.
			text = "DFL &Poll"; // Text displayed at the top of the box.
			parent = this; // Set myGroup's parent to this Form.
		}
		
		// Add some RadioButton`s to the GroupBox myGroup..
		
		with(likeDfl = new RadioButton)
		{
			bounds = Rect( 6 ,  18 ,  160 ,  13 ); // x, y, width and height within the GroupBox.
			text = "I Like DFL"; // Text displayed next to the selector thing.
			checked = true; // Check this one, but not the others.
			parent = myGroup; // Set likeDfl's parent to the GroupBox.
		}
		
		with(okDfl = new RadioButton)
		{
			bounds = Rect(6, likeDfl.bottom + 4, 160, 13); // 4px below likeDfl.
			text = "DFL is OK";
			//checked = false; // false is default. Set one to true per group.
			parent = myGroup;
		}
		
		with(hateDfl = new RadioButton)
		{
			bounds = Rect(6, okDfl.bottom + 4, 160, 13);
			text = "I hate DFL!";
			parent = myGroup;
		}
		
		with(whatDfl = new RadioButton)
		{
			bounds = Rect(6, hateDfl.bottom + 4, 160, 13);
			text = "What is DFL?";
			parent = myGroup;
		}
		
		// Update myGroup's height to fit all the RadioButtons.
		// The client size is the area inside the control, excluding the border.
		myGroup.clientSize = Size(myGroup.clientSize.width, whatDfl.bottom +  6 );
		
		// Add a Label for the following TextBox.
		Label myLabel;
		with(myLabel = new Label)
		{
			bounds = Rect( 4 , myGroup.bottom +  4 ,  200 ,  13 ); // 4px below myGroup.
			myLabel.text = "&Comments (one per line):";
			parent = this;
		}
		
		// Add a TextBox below the GroupBox.
		with(myTextBox = new TextBox)
		{
			bounds = Rect( 4 , myLabel.bottom +  4 , this.clientSize.width -  8 ,  100 ); // 4px below Label.
			multiline = true;
			acceptsReturn = true;
			parent = this;
		}
		
		// Add a button and a click event handler.
		with(voteBtn = new Button)
		{
			location = Point(this.clientSize.width - voteBtn.width -  4 , myTextBox.bottom +  4 ); // width/height are default.
			text = "&Vote";
			parent = this;
			
			click ~= &this.voteBtn_click;
		}
		
		// Set the Form's "accept button", or default button.
		acceptButton = voteBtn;
		
		// Update the Form's height to fit all the controls.
		// The client size is the area inside the Form, excluding the border and caption.
		clientSize = Size(clientSize.width, voteBtn.bottom +  4 );
	}
	
	
	// Click handler for voteBtn.
	private void voteBtn_click(Object sender, EventArgs ea)
	{
		string s;
		string[] comments;
		RadioButton voteOption;
		
		// Gather comments.
		comments = myTextBox.lines;
		if(!comments.length)
		{
			if(DialogResult.YES != msgBox("Are you sure that you do not want to comment on DFL?",
				"DFL Comments", MsgBoxButtons.YES_NO, MsgBoxIcon.QUESTION))
			{
				// They're not sure, they want to stop the vote and add a comment..
				return; // Abort.
			}
		}
		
		// See which option they voted for.
		if(likeDfl.checked)
			voteOption = likeDfl;
		else if(okDfl.checked)
			voteOption = okDfl;
		else if(hateDfl.checked)
			voteOption = hateDfl;
		else if(whatDfl.checked)
			voteOption = whatDfl;
		else
			assert( 0 );
		
		s = "You voted for \"" ~ voteOption.text ~ "\".\r\n\r\n";
		if(comments.length)
		{
			s ~= "Your comments are:";
			foreach(int i, string comment; comments)
			{
				s ~= "\r\n   " ~ std.conv.to!string(i +  1 ) ~ ") " ~ comment;
			}
		}
		else
		{
			s ~= "You did not add comments.";
		}
		
		msgBox(s, "Thanks for Voting!", MsgBoxButtons.OK, MsgBoxIcon.INFORMATION);
		
		// Now reset everything.
		voteOption.checked = false;
		likeDfl.checked = true;
		myTextBox.text = "";
	}
}


int main()
{
	int result =  0 ;
	
	try
	{
		Application.run(new MainForm);
	}
	catch(Object o)
	{
		msgBox(o.toString(), "Fatal Error", MsgBoxButtons.OK, MsgBoxIcon.ERROR);
		
		result =  1 ;
	}
	
	return result;
}



Впрочем, подход ближе к Яве, чем к плюсам.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032888
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, если бы не для души, а для работы - я бы брал надежные варианты - Qt, MFC, WinForms.

Пару ссылок нарыл - блог любителя wx и с него же ссылку на демку . Пошел смотреть.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032894
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nauseousselfwxWidgets использует родные графические элементы операционной системы, а QT нетдля меня это основной довод, проще говоря соберите под скажем Windows простое QT приложение, и посмотрите на его размер, сделайте тоже самое при помощи скажем WxDev-C++ и вы все поймете )
А... так вы пишите про 10 мегобайт библиотек Qt. Аж 10-ть мегобайт !!1

А почему они для вас так важны? На дискету не влезает? Или что-то специальное - узкоспециализированное пишите?

PS: И уж тем более это совсем не тот фактор, который мог бы обеспечить будущее wxWidgets... =)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032897
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglесли бы не для души, а для работы - я бы брал надежные варианты - Qt.к кьюту есть претензии по datalayer, очень хочетцо нормальной поддержки хранимых процедур, как минимум
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032903
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot petrav]nauseousпропущено...[/quotъА... так вы пишите про 10 мегобайт библиотек Qt. Аж 10-ть мегобайт !!!плюсую
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032905
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorych, сорри, накосячил с квотами
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032914
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032979
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychSiemarglесли бы не для души, а для работы - я бы брал надежные варианты - Qt.к кьюту есть претензии по datalayer, очень хочетцо нормальной поддержки хранимых процедур, как минимумА что такое "нормальная поддержка хранимых процедур"? Чем она отличается от поддержки обычных запросов?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37032984
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravWhite OwlПора бы уже запустить поиск на слова wxWidgets & Qt.
Впрочем, тогда ты узнаешь чем wxWidgets хуже Qt...
Я запускал много раз. Ничего кроме флуда не нашел. А выбор делал по другому, что ли, не знаю как сказать. =)Плохо искал. Но если настаиваешь...

Я к wxWidgets уже три года не прикасался, но тогда эта библиотека поразила меня свой раздробленностью. Там было много классов которые по хорошему должны были бы быть собраны в один общий универсальный модуль или хотя бы иметь общего предка, но на практике были совершенно независимыми.
Например даже такая мелочь как работа с файлами. Зачем в wxWidgets для этого аж три независимых класса wxFile, wxFFile и wxFSFile? На первый взгляд их существование кажется оправданным, но только пока не посмотришь на то как сделаны QFile или PHYSFS_File.
И таких фундаментальных ляпов в системном дизайне в wxWidgets очень много. Она создавалась (и создается) группой энтузиастов которые не желают подчиняться кому-то одному. Поэтому в ней и появляются параллельные подсистемы, которые не очень то хорошо могут (или вообще не могут) конвертироваться друг в друга.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37033724
Я другой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl...
И таких фундаментальных ляпов в системном дизайне в wxWidgets очень много...
А "Кьют" как тебе?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37034697
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно на основе windows.h создать свою библиотеку и создать форму?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37035166
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА что такое "нормальная поддержка хранимых процедур"? Чем она отличается от поддержки обычных запросов?хочется получать код возврата @RETURN_VALUE из процедуры и ещё хочется при срабатывании в процедуре RAISERROR получать что-либо более содержательное, чем пустая строка из lastError. вот собственно и всё, чего хочется
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37035451
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychWhite OwlА что такое "нормальная поддержка хранимых процедур"? Чем она отличается от поддержки обычных запросов?хочется получать код возврата @RETURN_VALUE из процедуры и ещё хочется при срабатывании в процедуре RAISERROR получать что-либо более содержательное, чем пустая строка из lastError. вот собственно и всё, чего хочетсяА в чем у тебя затык? Я их получаю без проблем.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37035591
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlegorychхочется получать код возврата @RETURN_VALUE из процедуры и ещё хочется при срабатывании в процедуре RAISERROR получать что-либо более содержательное, чем пустая строка из lastError. вот собственно и всё, чего хочетсяА в чем у тебя затык? Я их получаю без проблем.с первой проблемой затык в этом:
ODBC Stored Procedure SupportNote: The value returned by the stored procedure's return statement is discarded. а со второй, не знаю, что и сказать, затык в том, что не приходит ко мне никаких сообщений от сервера, exec только false возвращает, в lastError - тишина. Вполне может статься, что я не умею их готовить, конечно же.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37035618
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl, я создал отдельную тему поддержка ODBC-драйвером Qt хранимых процедур , не откажи в любезности, посмотри. Вопрос для меня важный.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37046752
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда у меня такой вопрос: на чем лучше всего написать такую прогу, но чтобы это выглядело не как использование средств(хедеров) языка, а что-то свое? И есть ли смысл?Или остается вариант только брать хедеры и копировать их структуры в прогу?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047018
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Niwalke:
Вы хотите сделать собственную GUI-библиотеку? Что-то типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include "niWidgets.h"

int main()
{
  niCreateWindow("заголовок окна");
  niCreateInputField(/*Id:*/ 1 ); // поле ввода
  niCreateButton(/*Id:*/ 2 , "нажми меня"); // кнопка
  niShowWindow();

  niMainLoop();

  return  0 ;
}
? Если да, то зачем? Вас не устраивают существующие GUI-библиотеки (Qt, GTK+, wxWidgets, и ещё много всего)? Или в качестве упражнения, чтобы понять, как сделать GUI-библиотеку на базе WinAPI? (Кстати, неоднократно здесь упоминавшаяся функция CreateWindow(Ex) -- часть WinAPI.)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047587
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вся проблема в том что чистое использование winapi в С++ я сделал( за счет CreateWindow и заголовочного файла windows.h). Но задача как видимо сводилось не к использованию готовых компонентов borland в чистом виде(windows.h) а написание своего приложения. В этом и заключается вся трудность. К сожалению свою GUI (как я понял ее мне надо реализовать) мне и не удается сделать. Поэтому и обратился за помощью. Что посоветуете?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047740
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Niwalke:
Уточните, что именно надо делать: использовать WinAPI напрямую (#include <windows.h>), или использовать самодельную GUI-библиотеку (#include "niWidgets.h"), реализованную поверх WinAPI. Второе -- сложнее, но вполне осуществимо: надо написать функции вроде niCreateWindow/niCreateButton, внутри которых будет вызов WinAPI-шной функции CreateWindowEx.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047780
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо написать свою библиотеку, и использовать функции по созданию окна и осльных элементов. Мною было реализовано обычное использование Api Borland CreateWindow из windows.h. А задача сводилась к использованию своей библиотеки. И как я понял что необходимо "переписать" windows.h в свою библиотеку и использовать свои функции CreateWindow. Но к сожалению на этом я и застрял, так как не имел с этим дело.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047783
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiwalkeНеобходимо написать свою библиотеку, и использовать функции по созданию окна и осльных элементов. Мною было реализовано обычное использование Api Borland CreateWindow из windows.h.А при чем здесь Борланд? Слово красивое?

Niwalke А задача сводилась к использованию своей библиотеки. И как я понял что необходимо "переписать" windows.h в свою библиотеку и использовать свои функции CreateWindow. Но к сожалению на этом я и застрял, так как не имел с этим дело.
Топик создан 17-го ноября. То есть ты имеешь с этим дело уже почти два месяца. Отмазка не катит.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047800
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да к моему большому сожалению и стыду за эти 2 месяца я не смог решить проблемы. Долгое время не понимал необходимость создать программу без использования "windows.h"- из которой многие апи функции и реализуется. Потом объяснили что надо написать свою библиотеку и исплоьзовать свои функции CreateWindow. Так что прошу прощения за глупые вопросы, я лишь хочу понять как это реализовать и все.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047864
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niwalke,

Как реализовать - смотри исходники любой GUI библиотеки - например Qt, wxWidgets, FoxToolkit, U++.
Как ты уже видел, там очень много кода и если ты захочешь сочинить свою собственную GUI библиотеку тебе придется сделать очень много работы - столько же, сколько уже сделано в этих библиотеках.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047908
floboss444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я учился по книгам братьев Фроловых - http://frolov-lib.ru/
У них всё просто и понятно. Очень рекомендую.
Знание API часто выручает. :)
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047940
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Niwalke,
тут рассматривается создание собственной маленькой объетно-орентированной графической библиотечки на С++.

ПРимер использования:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    int ret= 0 ;
    Application= new TApplication;
    Application->Initialize(hInstance,lpCmdLine,nCmdShow);
    TTestWindow *Wnd= new TTestWindow;
    Wnd->Create( 0L,NULL,"Пример Окна",WS_OVERLAPPEDWINDOW/WS_VISIBLE, CW_USEDEFAULT, 
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL);
    ret= Application->Run();
    delete Application;
    delete Wnd;
    return ret;

Но, внутри нее всеравно вызывается CreateWindow.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047944
Фотография ML380
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, интересно, а возможно ли вообще в винде создать окно не вызывая (даже косвенно) CreateWindow (или ее аналоги)?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047971
Niwalke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наткнулся на форуме : http://forum.sources.ru/index.php?showtopic=159560 . К сожалению не уловил идеи и смысла этой программы: это winApi только реализована сложнее. В чем преймущество или идея этой программы. В чем отличие от winApi?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047975
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiwalkeНаткнулся на форуме : http://forum.sources.ru/index.php?showtopic=159560 . К сожалению не уловил идеи и смысла этой программы: это winApi только реализована сложнее. В чем преймущество или идея этой программы. В чем отличие от winApi?
А вы почитайте ветку. Цитата:
А как на счет полета мысли от безделия в сторону изобретения очередного велосипеда? :) Так как реальная работа ооочень редко приносит интурес, она рутинна по большей своей части. А тут ;)

У людей не интересная работа, не позволяющая самовыражаться. В этом основное преимущество и идея. Впрочем... Действительно, почему бы и нет?
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37047996
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ML380Кстати, интересно, а возможно ли вообще в винде создать окно не вызывая (даже косвенно) CreateWindow (или ее аналоги)?Теоретически можно.
Используешь какую-нибудь графическую библиотеку (DirectX, OpenGL, SDL, etc) и рисуешь все самостоятельно. Впрочем, эти библиотеки тоже вызывают CreateWindow хотя-бы для запуска собственного view port.
Чтобы уж совсем-совсем не использовать CreateWindow: пишешь свой собственный видео-драйвер и работаешь напрямую с видео памятью.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37048096
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ML380:
ML380
Код: plaintext
1.
2.
    Wnd->Create( 0L,NULL,"Пример Окна",WS_OVERLAPPEDWINDOW/WS_VISIBLE, CW_USEDEFAULT, 
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL);

Делить один оконный стиль (WS = window style) на другой -- некорректно, это же bitfield-ы. Чтобы их комбинировать, нужен битовый or:
Код: plaintext
1.
WS_OVERLAPPEDWINDOW | WS_VISIBLE

2 White Owl:
White OwlИспользуешь какую-нибудь графическую библиотеку (DirectX, OpenGL, SDL, etc) и рисуешь все самостоятельно. Впрочем, эти библиотеки тоже вызывают CreateWindow хотя-бы для запуска собственного view port.
Нет, реализации DirectDraw, Direct3D и OpenGL не создают собственных окон. При инициализации этих API требуется указать handle (типа HWND) уже созданного (с помощью CreateWindow(Ex)) окна. А вот в реализации GLUT -- да, есть функция glutCreateWindow, которая создаёт собственное окно (с помощью CreateWindow(Ex)).
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37049073
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 06.01.2011 18:43, Niwalke wrote:
> Да к моему большому сожалению и стыду за эти 2 месяца я не смог решить проблемы.
> Долгое время не понимал необходимость создать программу без использования
> "windows.h"- из которой многие апи функции и реализуется. Потом объяснили что
> надо написать свою библиотеку и исплоьзовать свои функции CreateWindow.

CreateWindow и windows.h -- Это не API Borland, а API Microsoft Windows.
Самый что ни на есть нижний уровень программирования в Windows.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37049075
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 06.01.2011 21:48, Niwalke wrote:

> сожалению не уловил идеи и смысла этой программы:

Идея -- написать свою маленькую обёртку над Win32 API.
Смысл -- просто от нечего делать потренироваться в программировании.

это winApi только реализована
> сложнее.

Это не Win32 API, это над ней надстройка.
Программировать на Win32 API напрямую достаточно неудобно,
для этого и пишут всякие фреймворки.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37049077
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 06.01.2011 22:15, White Owl wrote:

> Теоретически можно.
> Используешь какую-нибудь графическую библиотеку (DirectX, OpenGL, SDL, etc) и
> рисуешь все самостоятельно. Впрочем, эти библиотеки тоже вызывают CreateWindow
> хотя-бы для запуска собственного view port.

Можно ещё на десктопе прямо окно рисовать средствами GDI. Правда, рисунок
сохраниться очень недолго.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37049472
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv:
MasterZivМожно ещё на десктопе прямо окно рисовать средствами GDI.
Здесь аккуратнее: некоторые анти-вирусы очень подозрительно смотрят на вызов GetDC(NULL), позволяющий снять screenshot и таким образом шпионить за пользователем.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37050930
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 08.01.2011 21:16, Пётр Седов wrote:

> Здесь аккуратнее: некоторые анти-вирусы очень подозрительно смотрят на вызов
> GetDC(NULL), позволяющий снять screenshot и таким образом шпионить за пользователем.

Ага, а DC одного окна снять уже можно, да ? Идиотизм.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #37051549
Пётр Седов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MasterZiv:
MasterZivАга, а DC одного окна снять уже можно, да ?
Получить DC чужого окна (которое в другом процессе) -- может, и нельзя. Я с этим реально не сталкивался, только понаслышке знаю.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Win API С++ создание формы со всеми элементами
    #38768535
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведите пожалуста пример кода чтобы создать форму где есть поле для ввода текста, а второе выводит некии результаты (типа label), например количество каждой буквы. Аналогично интересует как вывести диаграму результатов (при помощи opengl). Какое поле надо здесь использовать
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #38768551
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stut,

в MSDN полно примеров, bing их ищет. google их ищет тоже.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #38768553
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
open gl --тема отдельная, win api не использует open gl. и наоборот.
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #38768560
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю не было бы трудно привести примеры и линки. Касательно диаграм то тоже хотел бы увидеть примеры. А касательно Опен-Дж то там что вообще невозможно вывести рисунок кроме как окна Glut
...
Рейтинг: 0 / 0
Win API С++ создание формы со всеми элементами
    #38768738
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutА касательно Опен-Дж то там что вообще невозможно вывести рисунок кроме как окна Glut
это неправда
смотри WGL функции, wglCreateContext в частности
пример - http://www.cs.rit.edu/~ncs/Courses/570/UserGuide/OpenGLonWin-11.html
...
Рейтинг: 0 / 0
87 сообщений из 87, показаны все 4 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Win API С++ создание формы со всеми элементами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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