在電腦中繪圖,我們首先需要思考的事情是電腦會怎么做。
首先,當鼠標左鍵點下去的那一時刻,屏幕會撲捉到用戶點擊的坐標,此時用戶不松開鼠標左鍵在屏幕上面移動就形成了線,當用戶松開鼠標,系統會撲捉到用戶松開鼠標的坐標點,此時代表划線結束。
步驟:
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,避免內存泄漏。
自己動手試一下吧,你將會發現新的問題哦!!!!