MFC簡單的畫線


在電腦中繪圖,我們首先需要思考的事情是電腦會怎么做。

首先,當鼠標左鍵點下去的那一時刻,屏幕會撲捉到用戶點擊的坐標,此時用戶不松開鼠標左鍵在屏幕上面移動就形成了線,當用戶松開鼠標,系統會撲捉到用戶松開鼠標的坐標點,此時代表划線結束。

步驟:

1)創建項目:文件——新建——項目——MFC應用程序

 

 

點擊確定

 

 

點擊下一步,這一步有兩個需要改變的地方

 

 

之后點擊完成,如果不小心點成下一步的話也沒有關系,后面的一直下一步,或者點擊完成就好!創建成功!!!

 

2)工作:

 

 

 

 在旁邊的工具欄里面,默認打開的是類視圖,選擇類視圖

 

 

 

 
點擊下方的1箭頭所指的“屬性”,再找到2箭頭所指的WM_LBUTTONDOWN,點擊右邊的空行,會出現如圖所示,點擊<Add>OnLButtonDown

 

之后就會出現如圖所示的樣子

 

接下來要做的就是測試一下我們的鼠標按下是不是真的有效

所以在里面添加代碼: MessageBox(TEXT("這是框架!"));//這句話的意思是彈出一個對話框,里面的內容為“這是框架!”

 

 按F5鍵運行,事實上能夠運行出來,但是當按下鼠標左鍵的時候卻沒有任何的反應,那么這是為什么呢?

 

接下來我們以同樣的方法在類視圖中選擇

CLineationView,這個類的意思是視圖類,以同樣的方法添加函數WM_ONBULLTONDOWN;

之后再在里面天價代碼:MessageBox(TEXT("視圖類!"));//以對話框的樣式彈出“視圖類!”;

之后按F5鍵,得到如圖所示的東東:

 

這說明一個什么樣的問題呢?就像蓋房子一樣,首先要有框架,之后添上磚頭,再塗上水泥和顏料。

而我們第一次添加的CMainFrame就是在框架里面寫東西,現在的CLineationView就是在外面塗刷的白漆上面寫東西。試問你認為能在哪里看到這個消息呢,是看到磚頭里面,還是白漆上面呢?(This my view,so this is possible wrong!)

接下來我們要做什么?那就是刪除掉框架里面剛剛寫的東西!

你想一行一行刪除?不,不用這么麻煩,

 鼠標放在CMainFrame上面, 右鍵點擊類向導 找到方法 然后選擇你要刪除的函數 刪除就可以了;(目前我知道的是這種方法,如果你有更方便的可以交流一下

 

接下來就要開始完成最終的部分了:

首先注釋掉你在view視圖類里面的messagebox函數;

接着寫

在view類的名字上面左鍵, 添加,添加函數,類型:CPoint,變量名:m_ptOrigin,私有成員。創建之后系統會自動生成初始化的數據的代碼,之后: 

 

HDC hdc;
hdc = ::GetDC(m_hWnd);
MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);
LineTo(hdc, point.x, point.y);

 

::ReleaseDC(m_hWnd, hdc);//釋放hdc

 

 HDC是繪圖的一個類型,getdc是得到當前多要繪圖窗口的句柄,之后呢movetoex就是鼠標左鍵不斷移動的新的一個地址,也就是畫線兩點中的起始點。你可以注釋掉這句話再運行就會明白了。

而下面的lineto就是划線了,它會把兩點連接起來畫一條直線。最后的releasedc就是釋放掉hdc,避免內存泄漏。

自己動手試一下吧,你將會發現新的問題哦!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM