Другие языки программирования и технологии

оконное приложение c++

здравствуйте у меня вопрос. Когда я создаю консольное приложение меня имеется только консоль а как мне сделать оконное или же точнее стандартное окно когда я это пытался сделать у меня было окно но в файле cpp уже есть какой-то код (текст) так куда мне вставлять свой код? или есть другой способ создать окно. я работа в программе visual studio 2017.
Используя WinAPI:

#include < Windows.h >

LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM w, LPARAM l) {
switch (msg)
case WM_CLOSE: DestroyWindow(wnd); break;
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(wnd, msg, w, l);
}
return 0;
}

WCHAR *classname = L"MyWindow";
WCHAR *title = L"My application";

int _tmain(int argc, _TCHAR* argv[]) {
WNDCLASS wc;
SecureZeroMemory(&wc, sizeof(WNDCLASS));
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszClassName = classname;
wc.lpfnWndProc = WndProc;
RegisterClass(&wc);
HWND wnd = CreateWindow(classname, title, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, GetModuleHandle(NULL), 0);
ShowWindow(wnd, SW_SHOWNORMAL);
UpdateWindow(wnd);
MSG msg; BOOL ret;
while ((ret = GetMessage(&msg, wnd, 0, 0)) != 0) {
if (ret == -1) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}

"куда мне вставлять свой код?" - зависит от того, что это за код. В общем случае работа оконных приложений строится на событиях - вот и пиши свой код в обработчике сообщения, соответствующего нужному событию. Например, если хочешь чтобы код выполнялся в ответ на клик по кнопке, можно изменить оконную процедуру (из кода выше) таким образом:

#define BUTTON1 1 // идентификатор кнопки

LRESULT CALLBACK WndProc(HWND wnd, UINT msg, WPARAM w, LPARAM l) {
switch (msg) {
case WM_CREATE: // при создании окна создаём в окне кнопку:
CreateWindow(L"BUTTON", L"Нажми меня", WS_CHILD | WS_VISIBLE,
30, 30, 100, 40, wnd, (HMENU)BUTTON1, GetModuleHandle(NULL), 0);
break;
case WM_COMMAND:
if (HIWORD(w) == BN_CLICKED // сообщение о клике по кнопке
&& LOWORD(w) == BUTTON1) { // проверка, что клик был по нужной кнопке
// тут пиши нужный код, например:
MessageBox(wnd, L"Нажата кнопка", L"Сообщение", MB_OK | MB_ICONINFORMATION);
}
break;
case WM_CLOSE: DestroyWindow(wnd); break;
case WM_DESTROY: PostQuitMessage(0); break;
default: return DefWindowProc(wnd, msg, w, l);
}
return 0;
}
Rnikola
Rnikola
24 295
Лучший ответ
делаешь MFC проект пустой, там по умолчанию уже будет окно
Сергей Бурима
Сергей Бурима
30 477
Окна можно по-разному создавать, есть библиотеки, можно на чистом Win API. Я бы пример скачал (или в книжке посмотрел) и видоизменял его.
Dmitriy Karelin
Dmitriy Karelin
23 766