У меня возникли проблемы с выходом из цикла while при использовании клавиатуры.Вот мой код:
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT key = (PKBDLLHOOKSTRUCT)lParam;
if (wParam == WM_KEYDOWN && nCode == HC_ACTION)
{
}
if (wParam == WM_KEYUP)
{
if (key->vkCode == VK_CAPITAL) {
capslockState = GetKeyState(VK_CAPITAL) & 0x0001;
myLoop(capslockState);
}
}
return CallNextHookEx(keyboardHook, nCode, wParam, lParam);
}
А вот моя функция:
int myLoop(int a) {
while (a == 1) {
for (i = 0; i < n; i++) {
// do some stuff
}
if (a == 0) {
break;
return 0;
}
else {
i = 0;
}
}
}
Я попробовал еще несколько способов достичь своей цели, но не смог этого сделать.Моя цель: я хочу открыть программу, не имеет значения, включена ли Caps Lock, если я нажму Caps Lock, она запустит мой цикл, и если я нажму ее снова, она остановится.Я каким-то образом смог сделать это, используя множество циклов и потоков «while», но он использовал почти всю мощность моего процессора.Как создать динамичный цикл, ориентированный на производительность, при использовании ввода с клавиатуры?Спасибо.