Я несколько дней искал ответ на свой вопрос, но, похоже, я не могу найти какое-либо решение, которое работает для меня ... Возможно, потому что я могу думать, что все это неправильно.
Я пытаюсь создать базовое окно c, которое выскакивает строку текста крупным красным шрифтом, используя WIN32 API в C ++.
Я пытался использовать элемент управления WM_CTLCOLORSTATI C в моей WindowProcedure, но я не могу заставить текст изменить цвет. Тем не менее, я могу создавать текст с помощью WM_CREATE, поэтому я не понимаю, что я делаю неправильно ...
Вот что я написал до сих пор.
#include <iostream>
#include <windows.h>
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
HWND textfield;
HDC hdc;
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR args, int nccmdshow) {
WNDCLASSW wc = { 0 };
wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hInstance = hInst;
wc.lpszClassName = L"myWindowClass";
wc.lpfnWndProc = WindowProcedure;
if (!RegisterClassW(&wc))
return -1;
CreateWindowW(L"myWindowClass", L"My Window", WS_OVERLAPPEDWINDOW | WS_VISIBLE, 500, 200, 1000, 500,
NULL, NULL, NULL, NULL);
MSG msg = {0};
while (GetMessage(&msg, NULL, NULL, NULL)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
switch (msg) {
case WM_CREATE:
textfield = CreateWindow(L"STATIC", L"DEBOODAH!", WS_VISIBLE | WS_CHILD , 500, 100, 300, 25, hWnd, NULL, NULL, NULL);
break;
case WM_CTLCOLORSTATIC:
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProcW(hWnd, msg, wp, lp);
}
}
Любой помощь будет принята с благодарностью!