摘錄:[開始] 關於
pretranslatemessage
有乙個常見的問題就是與此有關:如果編寫了乙個
mfc dll
並從另外的乙個
mfc主工程之中呼叫這個
mfc dll
中的modeless dialog
的話,modeless dialog
的pretranslatemessage
不會被調。因為
mfc dll
和這個mfc
工程擁有不同的
afxmodulethreadstate
,因此在
mfc dll
中建立的
modeless cdialog
物件不在
mfc工程的控制代碼表中(
cwnd::fromhandlepermanent
返回null
),因此雖然
mfc主工程中的
的pretranslatemessage
會被調(注意此時
dialog
的訊息迴圈在
mfc主工程裡面),但是不會呼叫
mfc dll
中建立的那個
modeless cdialog
的pretranslatemessage
函式。因此需要特殊處理。一般有兩種方法,一種是直接在
mfc主工程中的
裡面呼叫
mfc dll
的(可以專門在
mfc dll
中export
乙個專門的函式來做這件事情)。另外的方法是使用鉤子,在鉤子訊息處理函式之中,判斷目標視窗是否是當前具有焦點的視窗,如果是,則直接呼叫目標視窗的
pretranslatemessage
函式(前提是你有要儲存這個物件的指標)。
摘錄 [結束]
解決[原創http://blog.csdn.net/hongjie7117/]:
作者修改了cxinfotip類中**使其能夠支援在多重介面都可以使用的方法。relayevent
過載cxinfotip中的relayevent函式;
函式如下
void
cxinfotip::relayevent( cwnd
*pwnd, cpoint point)}}
//hide the tooltip
if(point
!=m_ptorigin)}
在呼叫處 或是主程式或是dll中的無模式對話方塊中響應wm_setcursor訊息;
bool 類名::onsetcursor(cwnd
*pwnd, uint nhittest, uint message)
問題終於解決了。發出以便大家參考,其他cxinfotip類使用方法等資訊
請參考
控制項提示資訊 滑鼠懸停時
label.settooltip 標籤提示資訊 滑鼠懸停在指定控制項上時,控制項旁邊提示的資訊 s label.tooltip 返回滑鼠在指定控制項上時,控制項旁邊提示的資訊 label.settooltipduration 2000 設定 滑鼠在指定控制項上時,提示資訊顯示的時間 單位 毫秒 s ...
關於DataGrid等控制項中的自動編號
序號內容1 taye 2box 3glass 4starcraft 一 正序 a allowpaging false情況下 container.itemindex 1 itemtemplate asp templatecolumn asp datagrid 就可以實現 不過更有趣的方法是使用這個方法...
關於DataGrid等控制項中的自動編號
序號內容 1taye 2box 3glass 4starcraft 一 正序 a allowpaging false情況下 container.itemindex 1 itemtemplate asp templatecolumn asp datagrid 就可以實現 不過更有趣的方法是使用這個方法...