Итак, у меня есть начальные знания C ++ (4 месяца в день, так что, может быть, немного больше, чем у новичка, но определенно новичок), и я начал смотреть на некоторые вещи, связанные с Win API, и у меня есть несколько пробелов в голове.
Я уверен, что есть много вещей, которые не так с приведенным ниже, или более эффективные способы сделать это, и это придет вовремя, но я хотел бы знать, почему, когда я перехожу через этот код, это делает, например, l oop a несколько раз через первое определение WndPro c перед передачей управления в другое место и, по-видимому, перестают когда-либо вступать в контакт с другими частями программы.
windows циклически просматривает код для проверки событий на высокой скорости, а затем перемещает управление в другое место?
Я уверен, что вы знаете, что вы можете даже исправить мой вопрос, поэтому все информация, которую вы находите, относящаяся к тому, что, я думаю, я спрашиваю здесь, ценится.
Простите за комментарии, они относятся к будущему себе;)
#include <Windows.h>
#include <string>
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch (msg)
{
case WM_CLOSE:
PostQuitMessage(69);
break;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int CALLBACK WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
const auto CLASSNAME = "hwWindow";
//register window class
WNDCLASSEX wc = {};
wc.cbSize = sizeof(wc);
wc.style = CS_OWNDC;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = nullptr;
wc.hIcon = nullptr;
wc.hCursor =nullptr;
wc.hbrBackground = nullptr;
wc.lpszMenuName = nullptr;
wc.lpszClassName = CLASSNAME;
wc.hIconSm = nullptr;
RegisterClassEx(&wc);
//create window instance
HWND RyanWin = CreateWindowEx(
0,
CLASSNAME,
"Hacker",
WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
1200, 1200, 640, 480,
nullptr,
nullptr,
hInstance,
nullptr);
HWND hWnd = CreateWindowEx(
0,
CLASSNAME,
"Happy HW Windows",
WS_CAPTION | WS_MINIMIZEBOX | WS_SYSMENU,
200, 200, 640, 480,
nullptr,
nullptr,
hInstance,
nullptr);
ShowWindow(hWnd, SW_SHOW);
ShowWindow(RyanWin , SW_SHOW);
MSG msg;
BOOL gResult;
while ((gResult = GetMessage(&msg, nullptr, 0, 0)) > 0)
{
TranslateMessage(&msg);
UINT m = msg.message;
DispatchMessage(&msg);
}
if (gResult == -1) { return -1; }
else { return msg.wParam; }
return 0;
}