Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2018, 13:25   #1
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию Как выйти из бесконечного цикла?

Собственно сам код, и как выйти из цикла через кнопку?
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <dos.h>
#include <vector>
#include <conio.h>
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
std::vector<int> myVector;

//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
	: TForm(Owner)
{
		RegisterHotKey(NULL, HOTKEY0, NULL , 0x70); //bindkey
		RegisterHotKey(NULL, HOTKEY1, NULL, 0x71); //start / stop
		RegisterHotKey(NULL, HOTKEY2, NULL, 0x72); //clearALL
}
//---------------------------------------------------------------------------
void __fastcall TForm2::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
		switch (Msg.message)
		{
			case WM_HOTKEY:
			{
				switch (Msg.wParam)
				{
				case HOTKEY0:  {curPos();break;}
				case HOTKEY1:  {setPos();break;}  //запуск функции
				case HOTKEY2:  {myVector.clear(), Memo1->Lines->Clear();break;}
				}
				break;
			}
		}
}
//---------------------------------------------------------------------------
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
UnregisterHotKey(Handle,0), UnregisterHotKey(Handle,1), UnregisterHotKey(Handle,3);
}
//---------------------------------------------------------------------------
void TForm2::curPos(void)
{
		POINT p;
		GetCursorPos(&p);
		myVector.push_back((int)p.x);
		myVector.push_back((int)p.y);
		Form2->Memo1->Lines->Add("x - "+ IntToStr((int)p.x) +" "+ "y - "+ IntToStr((int)p.y));
}


void TForm2::setPos(void)
{
		switch(CheckBox2->Checked)
		{
			case true:
			{
				while (GetAsyncKeyState(0x73) != -32767 || GetAsyncKeyState(0x73) != -32768) //Это работает но не всегда и медленно, нужно что то глобальное типа с Таймером.
				{
					for (int i = 0; i < myVector.size(); i+=2)
					{
					Sleep(StrToInt(Edit1->Text));
					SetCursorPos(myVector[i],myVector[i+1]);
					}

				}
			case false:
			{
				for (int i = 0; i < myVector.size(); i+=2)
				{
					Sleep(StrToInt(Edit1->Text));
					SetCursorPos(myVector[i],myVector[i+1]);
				}
			break;
			}
			}
		}
}
//--------------------------------------------------------------------------

void __fastcall TForm2::CheckBox1Click(TObject *Sender)
{
	switch(CheckBox1->Checked)
	{
		case true : Form2->FormStyle = fsStayOnTop;break;
		default : Form2->FormStyle = fsNormal;break;
	}
}
//---------------------------------------------------------------------------




void __fastcall TForm2::Timer1Timer(TObject *Sender)
{

}
//---------------------------------------------------------------------------

Последний раз редактировалось 2Lui; 28.01.2018 в 18:14.
2Lui вне форума Ответить с цитированием
Старый 28.01.2018, 14:01   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

А что вы пытаетесь сделать? ))) Чтобы понимать, какой результат вам нужен.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 28.01.2018, 17:47   #3
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

я пытаюсь сделать автокликер
2Lui вне форума Ответить с цитированием
Старый 28.01.2018, 17:53   #4
2Lui
Пользователь
 
Аватар для 2Lui
 
Регистрация: 14.03.2017
Сообщений: 68
По умолчанию

клавиши у меня сделаны через ApplicationEvents1Message , есть простое воспроизведение кликов и зацикленое только вот не знаю как этот цикл остановить(Хорошо было бы на одну кнопку старт/стоп)case HOTKEY1: {setPos();break;} //запуск функции.
2Lui вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выйти с цикла for, если условие было сделано ранее чем закончился оператор for laketych Общие вопросы C/C++ 1 14.09.2017 19:47
пробую запустить в emu8086, но не могу выйти с бесконечного цикла - Ассемблер chuVbaka Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 23.12.2016 09:09
C++ Как выйти из цикла при нажатии enter? Seede1 Помощь студентам 2 06.12.2011 14:50
Как выйти из цикла по нажатию горячей клавиши? suslik_ Помощь студентам 2 06.07.2011 16:20
Как выйти из бесконечного цикла! Эдуард Общие вопросы C/C++ 11 02.03.2008 19:15