Маргарита Молотковец
Маргарита Молотковец

Как создать простое Виндовское окно с помощью DevC++?

Хотелось бы создать Диалоговое окно Виндовс с надписью "HelloWorld!" желательно с пояснениями

Оксана
Оксана

#include

char WindowClass[] = "win32app";
char Title[] = "Hello";

HINSTANCE hInst;

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

int WINAPI WinMain(HINSTANCE Instance, HINSTANCE, LPSTR, int CmdShow) {
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = Instance;
wcex.hIcon = LoadIcon(Instance, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = WindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, IDI_APPLICATION);

if (!RegisterClassEx(&wcex)) {
MessageBox(NULL, "Call to RegisterClassEx failed!", "Error", 0);
return 1;
}

hInst = Instance;

HWND hWnd = CreateWindow(WindowClass, Title, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, 500, 100, NULL, NULL, Instance, NULL);

if (!hWnd) {
MessageBox(NULL, "Call to CreateWindow failed!", "Error", 0);
return 1;
}

ShowWindow(hWnd, CmdShow);
UpdateWindow(hWnd);

MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}

return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
PAINTSTRUCT ps;
HDC hdc;
char greeting[] = "Hello, World!";

switch (message) {
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
TextOut(hdc, 5, 5, greeting, sizeof(greeting));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}

return 0;
}

Пояснения: http://msdn.microsoft.com/ru-ru/library/bb384843

> Саша Коньков
> Учи WinAPI.
Адепты пюревасиков учат API, вместо того, чтобы просто почитать документацию по API?
Вообще, странно, WinAPI надо учить, а .NET -- это "очередная поделка микросовта" (С) Саша Коньков. Будто и то и другое не является разработкой MicroSoft.

> А лучше на PureBasic.
Ага, чтобы потом учить API. А почему именно пюревасик, а, к примеру, не тикль, в нем еще короче:

pack [ttk::label .l -text "Hello, World!"] -pady 5
pack [ttk::button .b -text "Exit"] -pady 5


И к тому же надпись "Hello, World!" присутствует и кнопка для выхода, в отличие от примера на пюревасике, в котором голое окно. И при этом без всяких ручных циклов обработки сообщений -- в этом плане на пюревасике, как на якобы высокоуровневом языке, приходится делать "закат солнца руками", что говорит об убогости его стандартной библиотеки для создания GUI-приложений.

ЮХ
Юля Хан

Учи WinAPI.
В частности изучи функцию CreateWindowEx и все что с ней связанно.

А лучше на PureBasic. http://nnm-club.ru/forum/viewtopic.php?t=634155
Вот код окна с обработчиком события его закрытия.

OpenWindow(0, 0,0,200,100,"Окно", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

Похожие вопросы
Как или с помощью какой программы можно создать область на картинке, при нажатии на которую вылезет окно?
Как создать лаунчер? С помощью какой программы?
Поменял неудачно тему, после этого все виндовские окна стали чёрными.
с помощью какой программы можно создать мувик?
Как создаются рисунки с помощью кодов?
Помогите при установке виндовск синий экран!
подскажите) как и с помощь чего можно создать простую программку
Люди помогите мне создать popup окно !
Как создать простой сайт?
как создать нового пользователя с помощью BIOS? как создать нового пользователя с помощью BIOS?