发布网友 发布时间:2023-07-18 04:12
共1个回答
热心网友 时间:2024-02-28 14:15
#include <afxwin.h>
#include <vector>//添加,用stl之vector保存点的坐标
using namespace std;//命名空间你懂
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
};
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
int cntLBtn;//添加 鼠标左键按下次数
vector <CPoint> vec;//添加,用stl之vector保存点的坐标
protected:
afx_msg void OnPaint ();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//参考类向导自动添加代码添加
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);//同上
DECLARE_MESSAGE_MAP ()
};
CMyApp myApp;
/////////////////////////////////////////////////////////////////////////
// CMyApp member functions
BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functions
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_PAINT ()
ON_WM_LBUTTONDOWN()//参考类向导紫铜添加代码添加
ON_WM_RBUTTONDOWN()//同上
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
{
Create (NULL, _T ("The Hello Application"));
cntLBtn = 0;
}
void CMainWindow::OnLButtonDown(UINT nFlags, CPoint point) //参考类向导紫铜添加代码添加--直接copy来改下类名,注释掉不需要的
{
// TODO: Add your message handler code here and/or call default
//CDialog::OnLButtonDown(nFlags, point);
cntLBtn++;
if(cntLBtn==1)
{
vec.clear();
}
vec.push_back(point);
}
void CMainWindow::OnRButtonDown(UINT nFlags, CPoint point) //同上
{
// TODO: Add your message handler code here and/or call default
//CDialog::OnLButtonUp(nFlags, point);
CClientDC dc(this);
int i = 0;
if(cntLBtn>1)
{
for(i=0;i<cntLBtn-1;i++)
{
dc.MoveTo(vec[i]);
dc.LineTo(vec[i+1]);
}
}
cntLBtn = 0;
}
void CMainWindow::OnPaint ()
{
/*CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);*/
}
追答以上程序参看mfc程序设计第二版第一章hello改的 mfc最小框架窗口程序
基本思路 添加成员变量 记录左键按下次数 添加向量容器 保存点坐标
添加左键右键按下响应函数,对话框也差不多 没什吗好讲的
热心网友 时间:2024-02-28 14:15
#include <afxwin.h>
#include <vector>//添加,用stl之vector保存点的坐标
using namespace std;//命名空间你懂
class CMyApp : public CWinApp
{
public:
virtual BOOL InitInstance ();
};
class CMainWindow : public CFrameWnd
{
public:
CMainWindow ();
int cntLBtn;//添加 鼠标左键按下次数
vector <CPoint> vec;//添加,用stl之vector保存点的坐标
protected:
afx_msg void OnPaint ();
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);//参考类向导自动添加代码添加
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);//同上
DECLARE_MESSAGE_MAP ()
};
CMyApp myApp;
/////////////////////////////////////////////////////////////////////////
// CMyApp member functions
BOOL CMyApp::InitInstance ()
{
m_pMainWnd = new CMainWindow;
m_pMainWnd->ShowWindow (m_nCmdShow);
m_pMainWnd->UpdateWindow ();
return TRUE;
}
/////////////////////////////////////////////////////////////////////////
// CMainWindow message map and member functions
BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd)
ON_WM_PAINT ()
ON_WM_LBUTTONDOWN()//参考类向导紫铜添加代码添加
ON_WM_RBUTTONDOWN()//同上
END_MESSAGE_MAP ()
CMainWindow::CMainWindow ()
{
Create (NULL, _T ("The Hello Application"));
cntLBtn = 0;
}
void CMainWindow::OnLButtonDown(UINT nFlags, CPoint point) //参考类向导紫铜添加代码添加--直接copy来改下类名,注释掉不需要的
{
// TODO: Add your message handler code here and/or call default
//CDialog::OnLButtonDown(nFlags, point);
cntLBtn++;
if(cntLBtn==1)
{
vec.clear();
}
vec.push_back(point);
}
void CMainWindow::OnRButtonDown(UINT nFlags, CPoint point) //同上
{
// TODO: Add your message handler code here and/or call default
//CDialog::OnLButtonUp(nFlags, point);
CClientDC dc(this);
int i = 0;
if(cntLBtn>1)
{
for(i=0;i<cntLBtn-1;i++)
{
dc.MoveTo(vec[i]);
dc.LineTo(vec[i+1]);
}
}
cntLBtn = 0;
}
void CMainWindow::OnPaint ()
{
/*CPaintDC dc (this);
CRect rect;
GetClientRect (&rect);
dc.DrawText (_T ("Hello, MFC"), -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER);*/
}
追答以上程序参看mfc程序设计第二版第一章hello改的 mfc最小框架窗口程序
基本思路 添加成员变量 记录左键按下次数 添加向量容器 保存点坐标
添加左键右键按下响应函数,对话框也差不多 没什吗好讲的