2009-12-19 34 views

回答

1

不,沒有這樣的功能。如果你真的需要這樣做,例如因爲您想在另一個應用程序中執行某些操作,您需要自己編寫特定於平臺的代碼(例如,在Windows下使用SendInput())。

如果你想使用這個在自己的應用程序,雖然執行一些代碼,有一個更好的解決方案:與其做不支持的,脆弱的和醜陋的

void MyClass::OnLeftUp(wxMouseEvent& event) 
{ 
    ... do something with click at event.GetPosition() ... 
} 

void MyOtherFunction() 
{ 
    wxMouseEvent event(...); 
    ... initialization not shown because there is no right way to do it anyhow ... 
    myObject->ProcessEvent(event); 
} 

只是重構代碼要做得像而不是:

void MyClass::OnLeftUp(wxMouseEvent& event) 
{ 
    HandleClick(event.GetPosition()); 
} 

void MyClass::HandleClick(const wxPoint& pos) 
{ 
    ... do something with click at pos ... 
} 

void MyOtherFunction() 
{ 
    myObject->HandleClick(position); 
} 
1

如果你只是在談論模仿在你的wxWidgets應用另一個按鈕點擊,我已經試過這之前:

創建正確類型的假wxEvent,告知事件關心對象 關於使用SetEventObject(),並將層次結構中的父級wxWindow告知 ProcessEvent(myNewEvent)。您可能想要使用wxGetTopLevelParent()獲取最上面的框架/對話框

如果您正在討論在另一個非wxWidgets進程中模擬點擊,則可以使用OS的可訪問性API執行此操作。 wxAccessibility應該能夠在Windows上爲此提供幫助 - 對於其他操作系統,上次我聽說(幾年前已獲准),您必須使用本機操作系統功能。