问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何通过vc/MFC平台实现多点画线?

发布网友 发布时间: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最小框架窗口程序
基本思路 添加成员变量 记录左键按下次数 添加向量容器 保存点坐标
添加左键右键按下响应函数,对话框也差不多 没什吗好讲的

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
茶叶可以放在冰箱里吗茶叶能不能放冰箱 茶叶放冰箱里好吗茶叶放冰箱里好不好 茶叶可以放冰箱保存么 茶叶放冰箱放冷藏好吗 甲、乙两根绳子/,甲绳长63米,乙绳长29米、两根绳子前去同样的长度)剩下... 新华书店在送图书下乡活动中,送去的连环画战50%,余下的是故事书,故事书... 李老师带了300元钱去新华书店为学校图书室买《现代汉语词典》38.50.他... dnf55传承重甲套多少钱 dnf漫游55传承套叫什么名字 Dnf刺客五十五级刷图传承套多少钱?叫什么名字? DNF55级传承皮甲套多少钱,每个部位价格分别是多少,20分 利率6.37贷1000000一年多少利息 建行智慧食堂可以扫微信二维码吗 前几天宽带续费升到了500M,但下载速度都没什么变化,请教各位大神有什么... 80年代的淬火锄头值钱吗 武汉哪里有卖锄头的实体店 已婚女人在和已婚男人爱昧时说我是你的女人和到时啥都给你说明了... 偶尔大量饮酒的人该如何保持身体健康? qq炫舞手游羁绊徽章怎么展示 地梁砖砌体工程量计算公式。 何为打板三分 砌体工程量怎么算构造柱放哪里要扣 派征的词语派征的词语是什么 网络最大流的最大流量,最大流唯一吗? 合肥2号线几分钟一站? 浪琴名匠用针扣还是蝴蝶扣好看 漳州中考一检和二检哪个难度大 中考没考到好学校,高一质检排名靠前会被好的高中要走吗?(厦门)_百度知... 漳州市质检怎么算省排名 仿写心田上的百合花,作文题目:心田上的兰花!600字以上 2020年漳州立人高一最低录取线 赵庭长这名字怎样 后浪里的江州是哪里 安东尼罗宾能量咒语 全国最出名的dj音乐创作团体有那些? 请问上海白天 有哪些大的舞厅开着啊 譬如ROJAM白天有跳舞吗? 电影名忘记了 琼脂糖凝胶电泳最大上样量 不少“银发族”也走进的健身房,你觉得未来老年人的市场需求会提高... 我成了老师的眼中钉,怎么办? 为什么我特别容易成为别人的眼中钉?就没有一个和我类似的为伍?太孤独... 44岁马伊琍活得真实!白卫衣搭粉裤清新减龄,毛衣起球照样时髦 为什么在国内,很少有鼓励老年人去健身的广告? 马伊琍离婚后真会玩,把毛衣袖子剪了拼夹克上穿,表情咋不太开心_百度知... 如何在Jpanel上弹出一个JDialog 对话框? C#中如何使用一个对话框,可以输入数值 AWT中用来表示对话框的类是( )。 get马伊琍穿搭,毛衣配短靴保暖又时尚,应该如何学习她的穿搭技巧?_百度... C# 对Panel设置Mouseclick事件 4RadioButton触发跳出Messagebox 用英语写去超市买一个玩具熊的对话 Utah Leather 是LV的什么系列 叫什么名字