DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决
生活随笔
收集整理的這篇文章主要介紹了
DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
公司一個大型的項目中使用了 DELPHI 來開發 OCX 控件做數據庫的管理,但是GIS圖形系統使用 MFC 開發,最后將 OCX 嵌入到 MFC 程序中作為一個完整的系統交付用戶使用,但是在使用過程中發現一個問題:當啟動 DELPHI 開發的管理程序使用 OCX 時, "剪貼、復制、黏貼"的快捷鍵都是好使的,但是當 MFC 程序加載 OCX 后,OCX 中的文本框只能使用右鍵菜單來完成這些事情,使用快捷鍵毫無反應(當然對于 MFC 中的文本框是好使,即使沒有設置加速鍵表),幾經嘗試,最終靈光一閃突然想到了一個簡單的方法,經過測試該問題已經解決,代碼如下;
BOOL?CAppEntry::PreTranslateMessage(MSG*?pMsg){
????int?Key?=?pMsg->wParam?;?UINT?Msg?=?pMsg->message?;
????if(?Msg?==?WM_KEYDOWN?&&?::GetFocus(?)?&&?::GetAsyncKeyState(?VK_CONTROL?)?)
????{
????????if(?Key?==?'Z'?){?::SendMessage(?::GetFocus(?)?,?WM_UNDO?,?0?,?0?);?return?TRUE;?}
????????if(?Key?==?'X'?){?::SendMessage(?::GetFocus(?)?,?WM_CUT??,?0?,?0?);?return?TRUE;?}
????????if(?Key?==?'C'?){?::SendMessage(?::GetFocus(?)?,?WM_COPY?,?0?,?0?);?return?TRUE;?}
????????if(?Key?==?'V'?){?::SendMessage(?::GetFocus(?)?,?WM_PASTE,?0?,?0?);?return?TRUE;?}
????}
????return?CWinApp::PreTranslateMessage(pMsg);
}
需要注意的是:在 WM_KEYDOWN 消息中的字符都是大寫的,小寫字母是在 WM_CHAR 中結合 CAPS LOCK 和 SHIFT 按鍵的狀態轉換出來的,所以上面代碼中的按鍵判斷只需要判斷大寫字母即可(實際情況中小寫字母是不會進來的)
?
轉載于:https://www.cnblogs.com/WonKerr/archive/2009/09/11/MFC_OCX_SHORTCUT.html
總結
以上是生活随笔為你收集整理的DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于HttpModule
- 下一篇: 创新工场董事长兼首席执行官 李开复 发