CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案
生活随笔
收集整理的這篇文章主要介紹了
CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| |
| ? |
| 一 使用方法? 1 定義成員變量? CRectTracker m_RectTracker;? 2 構造函數設置樣式? m_RectTracker.m_nStyle = CRectTracker::resizeOutside|CRectTracker::solidLine;? m_RectTracker.m_nHandleSize = 6;? m_RectTracker.m_rect.SetRect(0,0,0,0);? 3 覆蓋OnSetCursor 函數,顯示鼠標指針形狀,修改為如下? BOOL CXX::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)? {? if (pWnd == this && m_RectTracker.SetCursor(this, nHitTest))? {? return TRUE;? }? return CXX::OnSetCursor(pWnd, nHitTest, message);? }? 4 覆蓋OnLButtonDown函數,添加如下代碼? void CXX::OnLButtonDown(UINT nFlags, CPoint point)? {? if(m_RectTracker.HitTest(point)<0) // 畫選擇框? {? m_RectTracker.TrackRubberBand(this,point,TRUE);? m_RectTracker.m_rect.NormalizeRect();? }? else // 點矩形選擇框? {? m_RectTracker.Track(this,point,TRUE);? m_RectTracker.m_rect.NormalizeRect();? }? Invalidate(); //刷新窗口? return; // 由于鼠標被接管,所以可以直接返回。? CXX::OnLButtonDown(nFlags, point);? }? 5 在OnPaint或者OnDraw函數添加? m_RectTracker.Draw(&dc); // 畫矩形框? 二 解決非控件(對話框,單文檔等)靜態庫中鼠標不見的問題(轉自微軟)? 1 原因:當應用程序通過使用靜態庫鏈接到 MFC 時, MFC 資源被編譯到應用程序的可執行文件。 應用程序的可執行文件將包括在 Afxres.rc 文件。 若要檢查這,單擊 資源包含 在 視圖 菜單上。 在 Afxres.rc 文件擁有 CRectTracker 使用 MFC 源代碼中的資源。 這些資源不是是 _AFX_NO_TRACKER_RESOURCES 時,包括只定義的。 BLOCKS32 項目具有 _AFX_NO_TRACKER_RESOURCES 定義的。 因此,它確實不置于應用程序的可執行映像 CRectTracker 需要的資源。 因此,沒有任何所使用的 CRectTracker 游標會在生成該示例通過使用 MFC 靜態時顯示。? 2 解決方案? 在資源視圖中,在rc中點擊 Resource Includes,然后 刪除以下行: #define _AFX_NO_TRACKER_RESOURCES。? 三 解決控件中靜態庫鼠標不見的問題? 由于在控件的資源里沒有_AFX_NO_TRACKER_RESOURCES,所以需要添加#undef _AFX_NO_TRACKER_RESOURCES\r\n。? 在資源視圖中,在rc中點擊 Resource Includes,在3 TEXTINCLUDE 下面添加如下語句,注意斜體部分,一定要有。? 3 TEXTINCLUDE? BEGIN? "1 TYPELIB ""test.tlb""\r\n"? "\r\n"? "#define _AFX_NO_SPLITTER_RESOURCES\r\n"? "#define _AFX_NO_OLE_RESOURCES\r\n"? "#define _AFX_NO_PROPERTY_RESOURCES\r\n"? "#undef _AFX_NO_TRACKER_RESOURCES\r\n"? "\r\n"? "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"? "LANGUAGE 9, 1\r\n"? "#pragma code_page(1252)\r\n"? "#include ""afxres.rc"" // Standard components\r\n"? "#endi\0"? END |
總結
以上是生活随笔為你收集整理的CRectTracker类的使用方法及其静态库下CRectTracker无法显示鼠标光标解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国航天科技集团:新一代火箭“心脏”工厂
- 下一篇: 1%超级富豪拿走全球三分之二新财富:穷人