MFC: 孙鑫教程4笔记

这节课主要讲了消息映射和绘画的一些函数,结构体,消息映射使得我们不用去管WindowProc函数的调用,只要在类里面添加消息就可以对操作进行一定的反应了。让MFC变得简单。

绘画的这些函数比较多,到时候可以refer这堂视频

下面是DrawView.cpp里的一些消息映射函数,加成员变量的时候需要在CDrawView的声明中(.h文件)里手动添加变量(视频里可以直接在类视图里添加),然后再构造函数里进行赋值。

 1 void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
 2 {
 3     // TODO: 在此添加消息处理程序代码和/或调用默认值
 4     //MessageBox("view clicked");
 5     m_ptOrigin = m_ptOld = point;
 6     //m_ptOrigin = point;
 7     m_bDraw = TRUE;
 8     CView::OnLButtonDown(nFlags, point);
 9 }
10
11 void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
12 {
13     // TODO: 在此添加消息处理程序代码和/或调用默认值
14     /*HDC hdc;
15     hdc = ::GetDC(m_hWnd);
16     MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);
17     LineTo(hdc, point.x, point.y);
18     ::ReleaseDC(m_hWnd, hdc);*/
19     /*CDC *pDC = GetDC();
20     pDC->MoveTo(m_ptOrigin);
21     pDC->LineTo(point);
22     ReleaseDC(pDC);*/
23     //CClientDC dc(this);
24     /*CClientDC dc(GetParent());
25     dc.MoveTo(m_ptOrigin);
26     dc.LineTo(point);*/
27
28     /*CWindowDC dc(this);
29     CWindowDC dc(GetParent());
30     CWindowDC dc(GetDesktopWindow());
31     dc.MoveTo(m_ptOrigin);
32     dc.LineTo(point);*/
33
34     /*CPen pen(PS_DASH, 1, RGB(0, 255, 0));
35     CClientDC dc(this);
36     CPen *pOldPen = dc.SelectObject(&pen);
37     dc.MoveTo(m_ptOrigin);
38     dc.LineTo(point);
39     dc.SelectObject(pOldPen);*/
40
41     /*CBrush brush(RGB(255, 0, 0));
42     CClientDC dc(this);
43     dc.FillRect(CRect(m_ptOrigin, point), &brush);*/
44
45     /*CBitmap bitmap;
46     bitmap.LoadBitmapA(IDB_BITMAP1);
47     CBrush brush(&bitmap);*/
48
49     /*CClientDC dc(this);
50     //dc.FillRect(CRect(m_ptOrigin, point), &brush);
51     CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
52     CBrush *pOldBrush = dc.SelectObject(pBrush);
53     dc.Rectangle(CRect(m_ptOrigin, point));
54     dc.SelectObject(pOldBrush);*/
55
56     m_bDraw = FALSE;
57
58     CView::OnLButtonUp(nFlags, point);
59 }
60
61 void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
62 {
63     // TODO: 在此添加消息处理程序代码和/或调用默认值
64
65     CClientDC dc(this);
66     CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
67     CPen *pOldPen = dc.SelectObject(&pen);
68     if (m_bDraw == TRUE)
69     {
70         //dc.SetROP2(R2_MERGENOTPEN);
71         dc.SetROP2(R2_BLACK);
72         dc.MoveTo(m_ptOrigin);
73         //dc.LineTo(point);
74         dc.LineTo(m_ptOld);
75         //dc.MoveTo(m_ptOrigin);
76         dc.MoveTo(m_ptOld);
77         dc.LineTo(point);
78         //m_ptOrigin = point;
79         m_ptOld = point;
80     }
81     dc.SelectObject(pOldPen);
82     CView::OnMouseMove(nFlags, point);
83 }

时间: 2024-10-10 16:42:18

MFC: 孙鑫教程4笔记的相关文章

MFC: 孙鑫教程3笔记

CTestApp如何调用WinMain函数: 先调用CTestApp theApp; 再调用CTestApp constructor 再调用CTestApp的基类CWinApp的constructor (appcore.cpp, 地址C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\atlmfc\src\mfc) CWinApp constructor调用了appmodul.cpp里的_tWinMain函数,这里太复杂,看不出来 _tWinMa

MFC: 孙鑫教程11笔记

一.图形的保存与重绘 感觉没什么意义,不过CPtrArray还是比较有用的 图形的重绘要调用OnDraw函数 二.窗口滚动条 1. 在CGraphicView.cpp的文件中CView改成CScrollView.将基类CView改成了CScrollView. 三.坐标空间,映射方式,设备坐标与逻辑坐标的转换 没明白.. 这一节都是将画图,基本用不到..

MFC: 孙鑫教程1笔记

typedef struct tagMSG { HWND hwnd; UNIT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; int WINAPI WinMain { HINSTANCE hInstance; HINSTANCE hPrevInstance; LPWSTR lpCmdLine; int nShowCmd; }; http://msdn.microsoft.com/zh-cn/vstudio/

MFC: 孙鑫教程6笔记

这节课的主要内容是讲菜单,分为静态菜单和动态菜单 动态: CMainFrame::OnCreate 1 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 2 { 3 if (CFrameWnd::OnCreate(lpCreateStruct) == -1) 4 return -1; 5 6 if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | C

MFC: 孙鑫教程13笔记

一.用CArchive写入读取数据 1 void CFile2View::OnFileWrite() 2 { 3 // TODO: 在此添加命令处理程序代码 4 CFile file("1.txt", CFile::modeCreate | CFile::modeWrite); 5 CArchive ar(&file, CArchive::store); 6 int i = 4; 7 char ch = 'a'; 8 float f = 1.3f; 9 CString str(

MFC: 孙鑫教程5笔记

这节主要讲的是文本编程 1 // CTextView 绘制 2 3 void CTextView::OnDraw(CDC* pDC) 4 { 5 CTextDoc* pDoc = GetDocument(); 6 ASSERT_VALID(pDoc); 7 if (!pDoc) 8 return; 9 10 // TODO: 在此处为本机数据添加绘制代码 11 //CString str("南京熊猫电子装备有限公司"); 12 CString str; 13 str = "南

MFC: 孙鑫教程12笔记

这节课主要讲的是文件操作 一.写文件 1. 在menu里增加项,并产生相应的消息响应函数 2. 响应函数OnWrite里增加: 方法1: FILE *pFile = fopen("1.txt", "w"); fwrite("http://www.panda.org", 1, strlen("http://www.panda.org"), pFile); fclose(pFile); 如果不想关闭文件,可以用fflush(pFi

孙鑫VC++视频教程笔记

写在前面的话:在学习孙鑫老师的VC++视频时,为了加深自己对知识的深入理解,就做了下面的笔记. 第一讲: 第二讲: 第三讲: 第四讲: 第五讲: 第六讲: 第七讲: 第八讲: 第九讲: 第十讲: 第十一讲: 第十二讲: 第十三讲: 第十四讲: 第十五讲: 第十六讲: 第十七讲: 第十八讲: 第十九讲:动态链接库 第二十讲: 孙鑫VC++视频教程笔记,布布扣,bubuko.com

孙鑫VC学习笔记:多线程编程

SkySeraph Dec 11st 2010  HQU Email:[email protected]    QQ:452728574 Latest Modified Date:Dec.11st 2010 HQU ================================================================================= 程序&进程&线程 ================================================