Вы сказали «и при этом я не хочу трогать любой исходный файл» ... честную игру, если вы позволите сценарию сделать это за вас?
Запустите это на всех ваших файлах .cpp
sed 's/^{/{ENTRY/'
Чтобы преобразовать их в это:
void foo()
{ENTRY
// code here
}
Поместите это в заголовок, который может быть # # включен каждой единицей:
#define ENTRY EntryRaiiObject obj ## __LINE__ (__FUNCTION__);
struct EntryRaiiObject {
EntryRaiiObject(const char *f) : f_(f) { printf("Entered into %s", f_); }
~EntryRaiiObject() { printf("Exited from %s", f_); }
const char *f_;
};
Возможно, вам придется стать более изощренным со скриптом sed
. Вы также можете поместить макрос ENTRY в любое другое место, где хотите исследовать, например, в какую-то глубоко вложенную область видимости функции.
Если вы пытаетесь использовать WinForms, вы можете реализовать настраиваемое событие в своей «дочерней» форме. Это событие может срабатывать при нажатии кнопки в вашей «дочерней» форме.
Затем ваша «родительская» форма будет прослушивать событие и обрабатывать его собственное обновление TextBox.
public class ChildForm : Form
{
public delegate SomeEventHandler(object sender, EventArgs e);
public event SomeEventHandler SomeEvent;
// Your code here
}
public class ParentForm : Form
{
ChildForm child = new ChildForm();
child.SomeEvent += new EventHandler(this.HandleSomeEvent);
public void HandleSomeEvent(object sender, EventArgs e)
{
this.someTextBox.Text = "Whatever Text You Want...";
}
}
Примерно; одна форма должна иметь ссылку на некоторый базовый объект, содержащий текст; этот объект должен запускать событие при обновлении текста; TextBox в другой форме должен иметь делегата, подписывающегося на это событие, которое обнаружит, что основной текст изменился; как только делегат TextBox будет проинформирован, TextBox должен запросить у базового объекта новое значение текста и обновить TextBox новым текстом.
Предполагая WinForms;
Если текстовое поле привязано к свойству объекта, вы должны реализовать интерфейс INotifyPropertyChanged для объекта и уведомить об изменении значения строки.
public class MyClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string title;
public string Title {
get { return title; }
set {
if(value != title)
{
this.title = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Title"));
}
}
}
Если вы выполняете привязку к свойству Title, обновление будет проходить «автоматически» для всех форм / текстовых полей, которые привязаны к объекту. Я бы рекомендовал вышеупомянутую отправку определенных событий, так как это обычный способ уведомления привязки обновлений к свойствам объекта.