1. 程式人生 > >MFC改變滑鼠形狀的方法彙總

MFC改變滑鼠形狀的方法彙總

MFC程式設計改變滑鼠形狀的方法彙總
1: 修改方法一  過載CView裡的OnMouseMove函式 .     過載方法 :         “View” -> “ClassWizard” (Ctrl + W) -> 右側Messages欄選擇”WM_MOUSEMOVE” , 然後點”Add Function” , 點”OK” .     新增程式碼 :      在 CDocTestView::OnMouseMove()裡新增如下程式碼:                    HCURSOR hCur  =  LoadCursor( NULL  , IDC_CROSS ) ;                 ::SetCursor(hCur);     機制分析:            系統預設每次呼叫OnMouseMove函式 ,都會重新用程式預設自帶的游標
來重新繪製游標 ,所以 ,需要在OnMouseMove裡來進行游標的修改才有效 。 2: 修改方法二       過載CView裡的OnSetCursor函式 .       過載方法:        “View” -> “ClassWizard” (Ctrl + W) -> 右側Messages欄選擇”WM_SETCURSOR” , 然後點”Add Function” , 點”OK” .       新增程式碼 :            修改OnSetCursor 為如下程式碼:            BOOL CDocTestView:: OnSetCursor ()               {                       HCURSOR hCur  =  LoadCursor( NULL  , IDC_CROSS ) ;                      ::SetCursor(hCur);               return TRUE;                }       機制分析:            系統在設定游標時 ,會發送一個WM_SETCURSOR訊息 ,此訊息會觸發OnSetCursor函式 , 所以 ,可以在這個函式裡新增修改游標的程式碼 。 3:修改方法三    過載CView裡的PreCreateWindow函式 .    過載方法 :        “View” -> “ClassWizard” (Ctrl + W) -> 右側Messages欄選擇” PreCreateWindow” , 然後點”Add Function” , 點”OK” .    新增程式碼 :             在CDocTestView::PreCreateWindow函式裡新增如下程式碼:          cs.lpszClass = AfxRegisterWndClass(CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,                                                                                LoadCursor( NULL  , IDC_CROSS ) ,                                                                               (HBRUSH) (COLOR_WINDOW + 1));    機制分析:       預設視窗建立時 , 會以一個結構體WNDCLASS來描述窗體的屬性 ,並利用註冊機制 ,將此視窗屬性註冊到系統中 ,利用AfxRegisterWndClass可以改變窗體本身的屬性 ,並對它重新註冊 。 4:修改方法四       理論上利用SetCursor(…)函式 , 應該可以在任何時候,任何地方修改滑鼠形狀 ,但實際情況卻並非如此 , 每次呼叫OnMouseMove時候(即每次滑鼠移動時) , 系統會呼叫程式預設原來的一個游標來重新繪製滑鼠形狀
. 所以 , 你如果在其它地方修改游標 , 你會發現這根本不起作用 , 因為每次滑鼠一移動 , 它又恢復到原來的形狀了 . 這裡需要用到另一個API來實現這個功能  SetClassLong() .  .  .  你可以在任何地方呼叫下面的程式碼來修改游標形狀:                        SetClassLong(this->GetSafeHwnd(),                              GCL_HCURSOR ,                               (LONG)LoadCursor(NULL , IDC_CROSS)); 綜合比較:  方法三更加適合於一次性的將預設游標統一替換另一種 ,並不適合於多次頻繁替換。 方法一 ,方法二 ,可以實現游標的多次變換 ,但是都需要在函式中新增額外的變數來控制顯示為不同的游標 。  方法四是最靈活的一種方式 ,可以在任何時候 ,任何函式裡更換滑鼠形狀 。                                 附   錄 1: LoadStandardCursor使用方法 .            LoadStandardCursor用來載入系統自帶的游標 , 呼叫方式如下:                    HCURSOR hCursor = (HCURSOR)AfxGetApp()->LoadStandardCursor(IDC_CROSS);                    ::SetCursor(hCursor); 2: LoadCursor 使用方法             HCURSOR LoadCursor(HINSTANCE hInstance ,        // handle to application instance                                 LPCTSTR   lpCursorName); // name or resource identifier     lpCursorName指的是游標的名字 .     hInstance描述的是含有游標的模組控制代碼 . 這個模組可以是一個可執行檔案 , 也可以為空 . 當模組控制代碼指向一個檔案時 , LoadCursor則從這個檔案中獲取游標 . 當模組控制代碼為空時 , LoadCursor則從系統中獲取游標 .      所以如果你想載入系統自帶的游標 , 可以用下面的程式碼:                          HCURSOR hCur  =  LoadCursor( NULL  , IDC_CROSS ) ;                           ::SetCursor(hCur);      如果想載入資源中自己繪製的游標 , 可以用下面的程式碼:                        HCURSOR hCur  =  LoadCursor(AfxGetInstanceHandle() ,                           MAKEINTRESOURCE(IDC_CURSOR1));                        ::SetCursor(hCur); 轉載自:http://blog.csdn.net/shanzhizi

相關推薦

MFC改變滑鼠形狀方法彙總

MFC程式設計改變滑鼠形狀的方法彙總 1: 修改方法一  過載CView裡的OnMouseMove函式 .     過載方法 :         “View” -> “ClassWizard” (Ctrl + W) -> 右側Messages欄選擇”

Unity 中的滑鼠事件方法彙總(物體,UGUI)

本文將從遊戲物體(Gameobject),和UGUI,講解Unity—PC端開發中,滑鼠事件的常見功能實現 本文將幫你解決Unity中如下或者類似的事件響應問題: 遊戲物體篇 點選遊戲物體,物體消失; 滑鼠懸停在遊戲物體上,物體旋轉; 移入遊戲物體,遊戲物體變

QT 改變滑鼠形狀

改變滑鼠形狀,在繪製座標系的時候有用到,特此記下: 1 this->setMouseTracking(true); //設定為不按下滑鼠鍵觸發moveEvent 2 void mouseMoveEvent(QMouseEvent* event) 3 { 4 QPo

MFC改變滑鼠指標

Windows程式和Doc程式很大的不同 , 就在於Windows有一個亮麗的圖形介面和簡捷的操作方式 , 而滑鼠就是Windows程式中最重要的一個操作手段 .       有朋友向我諮詢如何修改滑鼠形狀 , 這本來是一個簡單的問題 ,但是當朋友向我詢問進一步的,更加深入

CSS/HTML改變滑鼠指標形狀方法 屬性說明

改變滑鼠指標形狀的方法有兩種;第一種:用的來改變滑鼠指標形狀。另一種是:利用第三方控制元件的方法,而我自己最常用的是第一種:用css樣式表來改變滑鼠指標形狀         我們先來看第一種:用來改變滑鼠指標形狀。 有些時候我們並不需要文字,圖片加連結,而且還想要加連

基於MFC對話方塊的圖示,滑鼠形狀,鍵盤訊息等處理的示例

標頭檔案 // MFC_ShowPointDlg.h : 標頭檔案 // #pragma once // CMFC_ShowPointDlg 對話方塊 class CMFC_ShowPointDlg : public CDialogEx { // 構造 public: CMFC

MFC改變按鈕的顏色,方法簡單,實用

手動新增訊息對映的方法實現改變按鈕的顏色,不必建立新的類! 1.將button修改為owner draw 型別 2.過載OnDrawItem函式,並對其改寫 在適當的位置新增下面的語句 afx_msg

監聽元素屬性改變事件的方法

process text aaaaa 賦值 obj src mark `` html5 一、onchange事件只在鍵盤或者鼠標操作改變對象屬性,且失去焦點時觸發,腳本觸發無效。(就是說你在輸入框中輸入完內容,輸入完了,然後鼠標點別的地方觸發該事件)二、oninput事件o

JS獲取客戶端IP地址、MAC和主機名的7個方法彙總

這篇文章主要介紹了JS獲取客戶端IP地址、MAC和主機名的7個方法彙總,JS本身是不支援獲取IP地址等資訊的,本文通過其它方法實現,需要的朋友可以參考下 今天在搞JS(javascript)獲取客戶端IP的小程式,上網搜了下,好多在現在的系統和瀏覽器中的都無效,很無奈,在C

深度學習之影象的資料增強方法彙總

參考:https://www.jianshu.com/p/99450dbdadcf 在深度學習專案中,尋找資料花費了相當多的時間。但在很多實際的專案中,我們難以找到充足的資料來完成任務。為了要保證完美地完成專案,有兩件事情需要做好:1、尋找更多的資料;2、資料增強。本篇主要描述資料增強。 有

JavaScript中陣列Array.prototype的常用的方法彙總

Array建構函式的API,我們可以通過控制檯列印Array.prototype可以知道有以下這些方法。這是Array的原型物件的所有方法,對陣列而言是可以繼承所有的這些方法的: 接下來,我們就以12個比較常見常用的API開始說起: 1. join() 將陣列轉化為字串,並且以某個

MFC 新增面板庫方法步驟

專案中使用的庫檔案,下載地址: https://download.csdn.net/download/byh371256/10741951 //VC面板庫檔案SkinPlusPlusDLL實現步驟: 1、在stdafx.h中  引入標頭檔案和庫檔案  並且工程中新增標

遍歷各種容器的方法彙總

遍歷List 方法一:普通for 迴圈: for(int i=0; i<list.size();i++){ String temp = (String)list.get(i); System.out.println(temp); } 遍歷List 方法二:增強f

瀏覽器相容問題及解決方法彙總(持續更新......)

一、出現相容問題的原因:         瀏覽器種類很多,但是區別主要在瀏覽器核心的不同,所以各核心對網頁的解析差異,是導致瀏覽器相容問題出現的主要原因。關於瀏覽器核心(browser kernel),是瀏覽器最為核心

JS陣列方法彙總

工具類方法 Array.from() :從一個類似陣列或者可迭代物件中建立一個新的陣列例項。用一種更通俗易懂的方式來說,就是Array.from方法用於將兩類物件轉為真正陣列:類陣列物件(array-like object)和可遍歷(iterable)的物件。實際應用中,常見的類陣列物件是 DOM 操作返回

C#生成唯一值的方法彙總

C#生成唯一值的方法彙總生成唯一值的方法很多,下面就不同環境下生成的唯一標識方法一一介紹 一、在 .NET 中生成 1、直接用.NET Framework 提供的 Guid() 函式,此種方法使用非常廣泛。GUID(全域性統一識別符號)是指在一臺機器上生成的數字,它保證對在同一時空中的任

js 陣列清空 方法 彙總

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>js清空陣列的方法</title> </he

VPS網路優化各種方法彙總——銳速-BBR-BBR魔改版一鍵安裝指令碼

雲主機網路優化各類方式彙總——銳速/BBR/BBR改裝版一鍵部署script       大夥的大有些雲主機都是放在海外的,在海外的伺服器上由於受各類要素影響,就算海外的伺服器都是百兆同享或者G口到大陸下載速率都不是很讓人滿足,而大有些的friend們都用的低廉Linux

python圖片生成gif方法彙總

一、使用 PIL 和 images2gif 庫     第一種方法主要是採用PIL和imagegif庫,由於版本的原因,可能有的imagegif對圖片進行處理的時候,以下語句會報錯 writeGif(outfilename

ubuntu 相關的亂碼問題的解決方法彙總

文章目錄 ubuntu 相關的亂碼問題的解決方法彙總。 如果在本地都是亂碼: 1.首先,安裝中文支援包language-pack-zh-hans: 2.修改/etc/environment(在檔案的末尾追