powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / GUI-приложения
14 сообщений из 39, страница 2 из 2
GUI-приложения
    #38356523
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Сотня сток кода, чтобы получить пустое окошко.

Или один вызов DialogBox() чтобы получить окошко со всеми контролами, натыканными в
дизайн-тайме мышкой. Это ведь зависит от степени прочтения документации...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GUI-приложения
    #38356548
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Да да мне бы как раз хотелось почитать о создании GUI-приложений на чистом С++ без использования RAD и визуального программирования.
А какая цель? От чего должен быть очищен C++ зачем?
...
Рейтинг: 0 / 0
GUI-приложения
    #38356827
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Dimitry SibiryakovИли один вызов DialogBox() чтобы получить окошко со всеми контролами, натыканными в
дизайн-тайме мышкой. Это ведь зависит от степени прочтения документации...
Не, мышкой в дизайн-тайме не пойдет, ему же надо "без использования RAD и визуального программирования"
...
Рейтинг: 0 / 0
GUI-приложения
    #38356848
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Не, мышкой в дизайн-тайме не пойдет, ему же надо "без использования RAD и визуального программирования"
ну пусть в нотепаде rc файл нарисует
...
Рейтинг: 0 / 0
GUI-приложения
    #38358767
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kab18Да да мне бы как раз хотелось почитать о создании GUI-приложений на чистом С++ без использования RAD и визуального программирования.
А нафига тебе этот геморой?
В чистом с++ нет никакой графики. Это надо помнить.
Думаю автору сюда
Подробнее:

В этом шаге мы создадим окно используя только структуры и функции Win Api. Это позволит нам посмотреть как все-таки устроена программа для Windows на другом уровне. Создаем приложение Win 32 Application и далее как Simple application. А вот код:

Код: 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.
// СWin.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "windows.h"
#include "windowsx.h"


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int APIENTRY WinMain(
		HINSTANCE hInstance,
		HINSTANCE hPrevInstance,
		LPSTR lpCmdLine,
		int nCmdShow)
{
	HWND hwnd;
	MSG msg;
	WNDCLASS w;
		memset(&w,0,sizeof(WNDCLASS));
	w.style = CS_HREDRAW | CS_VREDRAW;
	w.lpfnWndProc = WndProc;
	w.hInstance = hInstance;
	w.hbrBackground = GetStockBrush(WHITE_BRUSH);
	w.lpszClassName = "C Windows";
	RegisterClass(&w);
	hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,
		10,10,600,480,NULL,NULL,hInstance,NULL);
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
	if (Message == WM_DESTROY )
	{
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,Message,wparam,lparam);
}

Как видите приложение начинается с функции WinMain. Далее мы заполняем структуру окна WNDCLASS, в которую передаем функцию обработки сообщений w.lpfnWndProc = WndProc; после этого создаем окно CreateWindow, выводим на экран ShowWindow(hwnd,nCmdShow); и запускаем обработчик сообщений. Сначала сообщения попадают на обработку в окно, и если это сообщение закрытия, то if (Message == WM_DESTROY ) прекращает выполнение программы.

Этот код можно компилировать и запускать.


...
Рейтинг: 0 / 0
GUI-приложения
    #38358771
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПС. Интересно, а что в спулере текст в nowrap блоке сидит???
Это немного неправильно ИМХО.
...
Рейтинг: 0 / 0
GUI-приложения
    #38358772
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm_Это немного неправильно ИМХО.А ещё блоке кода игнорируются почти все тэги. Тоже неправильно?
...
Рейтинг: 0 / 0
GUI-приложения
    #38358776
trdm_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovtrdm_Это немного неправильно ИМХО.А ещё блоке кода игнорируются почти все тэги. Тоже неправильно?
Да там не так, как ты думаешь.
там
+спулер
тупо текст << тут проблема
тупо код на с++
тупо текст << тут проблема
+спулер
...
Рейтинг: 0 / 0
GUI-приложения
    #38358785
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm_Да там не так, как ты думаешьНе так думаете именно вы.
В этом шаге мы создадим окно используя только структуры и функции Win Api. Это позволит нам посмотреть как все-таки устроена программа для Windows на другом уровне. Создаем приложение Win 32 Application и далее как Simple application. А вот код:

// СWin.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "windows.h"
#include "windowsx.h"


LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int APIENTRY WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS w;
memset(&w,0,sizeof(WNDCLASS));
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = WndProc;
w.hInstance = hInstance;
w.hbrBackground = GetStockBrush(WHITE_BRUSH);
w.lpszClassName = "C Windows";
RegisterClass(&w);
hwnd = CreateWindow("C Windows","C Windows", WS_OVERLAPPEDWINDOW,
10,10,600,480,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
if (Message == WM_DESTROY )
{
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hwnd,Message,wparam,lparam);
}

Как видите приложение начинается с функции WinMain. Далее мы заполняем структуру окна WNDCLASS, в которую передаем функцию обработки сообщений w.lpfnWndProc = WndProc; после этого создаем окно CreateWindow, выводим на экран ShowWindow(hwnd,nCmdShow); и запускаем обработчик сообщений. Сначала сообщения попадают на обработку в окно, и если это сообщение закрытия, то if (Message == WM_DESTROY ) прекращает выполнение программы.

Этот код можно компилировать и запускать.
Текст просто использует всю ширину, которую определил ваш блок кода.
...
Рейтинг: 0 / 0
GUI-приложения
    #38358889
Кстати, в виндах GUI на нижнем уровне пишется на WinAPI. А в линуксах как аналогичное API называется?
...
Рейтинг: 0 / 0
GUI-приложения
    #38358988
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в линуксах аналогичное APIКстати, в виндах GUI на нижнем уровне пишется на WinAPI. А в линуксах как аналогичное API называется?Уточни сначала о каком линуксе идет речь? И кстати, ты в курсе что Линукс это вообще не ОС?

А аналогом WinAPI для абстрактной ОС основанной на Линкусе можно пожалуй назвать набор функций Xlib. Но ничто не мешает послать X11 лесом и писать на SDL или на OpenGL.
Но так как это все-же будет уж очень суровые решения, то обычно пишут на GTK или Qt.
...
Рейтинг: 0 / 0
GUI-приложения
    #38359441
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trdm_,

Спулер и спойлер — немного разные вещи.

Вам в ОНС, товарищи....
...
Рейтинг: 0 / 0
GUI-приложения
    #38359444
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в линуксах аналогичное APIКстати, в виндах GUI на нижнем уровне пишется на WinAPI. А в линуксах как аналогичное API называется?

X-window.
Но на нем никто не пишет, слишком маломощный. Пишут на китах, а их уже много.
...
Рейтинг: 0 / 0
GUI-приложения
    #38359453
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlв линуксах аналогичное APIКстати, в виндах GUI на нижнем уровне пишется на WinAPI. А в линуксах как аналогичное API называется?Уточни сначала о каком линуксе идет речь? И кстати, ты в курсе что Линукс это вообще не ОС?

А аналогом WinAPI для абстрактной ОС основанной на Линкусе можно пожалуй назвать набор функций Xlib. Но ничто не мешает послать X11 лесом и писать на SDL или на OpenGL.
Но так как это все-же будет уж очень суровые решения, то обычно пишут на GTK или Qt.

Скоро такие суровые решения будут уже нормой жизни. Уже сейчас Intel graphics есть в каждом компе, а без compiz-а операционки почти не работают.

Opengl - bios 21го века!
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / GUI-приложения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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