看了好幾天回呼函式使用,還是云里霧里,懇請老師們指導。類A計時器內容如下:
CString str1 = list1.GetItemText(1,2);
CString str2 = list2.GetItemText(0,2);
if(str == L"XXX" || str1 == L"XXX")
{
…………
}
上面在計時器里每100毫秒運行一次。
但是那兩個單元格字串是通過類B的edit改變的,改變的機會很小。
如何定義一個回呼函式在類B的edit失去焦點后,運行上述代碼,只把if判斷結果給定時器。
因為edit所在類是自定義的共用類,直接在edit的矢焦訊息函式里運行上述代碼會影響到其他的使用。
uj5u.com熱心網友回復:
在B類追加一個addCallback函式,引數是函式指標,并追加一個成員變數也是函式指標(或者是個函式指標的集合),addCallback函式就是把引數的函式指標賦給成員變數(或者追加到成員變數)在edit失去焦點訊息函式里追加,判斷如果成員變數的函式指標不為NULL(或集合不為空),就呼叫成員變數的函式指標的函式。
這樣,因為別的edit物件沒有呼叫過addCallback函式,成員變數的指標函式就是NULL(或集合就是空),就不會執行回呼函式,就不會影響到其他使用。當然,考慮到便利性,你還可以追加removeCallback函式來洗掉回呼函式(這些都是后話)。
uj5u.com熱心網友回復:
除了2樓說的方法,也可以在edit失去焦點的時候給父視窗發個自定義訊息...用訊息機制去實作轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/200465.html
標籤:新手樂園
上一篇:多執行緒緩沖buff
