Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

//---------------------------------------------------------------------------

#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 в 19:14.
2Lui вне форума   Ответить с цитированием
Старый 28.01.2018, 15:01   #2
Bugrimov
C/C++, Java
Профессионал
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Адрес: Москва
Сообщений: 1,617
Репутация: 703

skype: bugrimovjava
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


22:40.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru