2012-04-29 3 views
0

Я использую .net framework 4 и visual studio 2010. Я работаю с формой C++. Мой код-то вроде этого:Как я могу удерживать свою текущую функцию до тех пор, пока я не нажму кнопку в форме C++?

int k = 0; 

void writeFunction(int &k){ 
    ++k; 
    textbox1->text = Convert::toString(k); 

    //i want to suspend writeFunction in there, until i click the button1 which is on Form1 
    //because i don't want to stop function, it has to wait to click 

    //after i clicked the button1 , the program continue to run code here 

    writeFunciton(k); 
} 
+2

Почему вы не можете просто вызвать эту функцию: 'void writeFunction (int & k) {++ k; textbox1-> text = Convert :: toString (k); } 'внутри вашего обработчика щелчка кнопки? – Vlad

ответ

0

Вы можете добавить более подробную информацию о вашей программе? Какую структуру вы используете для создания формы, и как нажатия кнопок взаимодействуют с вашим кодом?

Например, если вы используете Qt, вы можете использовать сигналы и слоты для ссылки, нажимая кнопку с помощью вашего метода. В зависимости от структуры могут быть другие соответствующие ответы.

Обычно я бы рекомендовал использовать библиотеку потоков для синхронизации вашего кода.

+0

Я использую .net framework 4 и visual studio 2010. На самом деле я нашел результат, когда вызываю свою функцию. Я хочу изменить текст TextBox, когда я нашел результат, и снова вызову свою функцию, когда я хочу нажать кнопку, которая находится в моей форме. Когда я вызываю функцию, я должен ждать ее, чтобы щелкнуть что-то на форме, потому что я должен приостановить свою функцию, чтобы щелкнуть кнопку, и снова вызвать эту функцию. –

+0

Я попытался синхронизировать свой код с библиотекой потоков, но я не смог –

0

Это не разумно приостановить GUI function..instead этой операции использование переменной состояния в вашем классе формы, такие как

enum OperationState 
{ 
    os_normal, 
    os_pointselection, 
    os_event1,... 
} 

После вызова текстового поля -> = ... Swicth в состоянии выбора и, используя это состояние, отслеживает состояние мыши, как щелчок после проверки mouseclick для состояния os_selection, а затем продолжайте работать.

+0

Трудность проблемы в том, что рекурсивная функция. Если я не нажимаю кнопку, она должна ждать, пока я нажму кнопку. Если я не нажму кнопку, тогда программа продолжит выполнение кода, я не хочу этой ситуации –

+0

для всех ваших целей - это как обрабатывать события GUI с непрерывным взаимодействием с пользователем ... просто удерживайте операционные состояния и/или оконные состояния, затем переключать их на отслеживание событий (если вы хотите заблокировать некоторые взаимодействия и заставить пользователя инициировать это событие), и получили входные данные и вернулись к нормальным состояниям. –

+0

Спасибо, Семих, я постараюсь сделать так, как вы сказали –

Смежные вопросы