#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最小框架窗口程序
基本思路 添加成员变量 记录左键按下次数 添加向量容器 保存点坐标
添加左键右键按下响应函数,对话框也差不多 没什吗好讲的
如何通过vc\/MFC平台实现多点画线?
dc.DrawText (_T ("Hello, MFC"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);*\/ }
用vc++6.0如何实现画点、画线、画圆?
1.HDC hdc = GetDC(HWND hWnd); 获得设备上下文的客户区一个指定的窗口或整个屏幕 eg:如果是在窗口类中可以:HDC hdc = GetDC(this->m_hWnd);2.在窗口区画点。SetPixel(hdc,x, \/\/ 横坐标 y , \/\/ 纵坐标 RGB(100,100,100)); \/\/点的颜色。3. 画线 MoveToEx(HDC hdc,...
用vc++6.0如何实现画点、画线、画圆,望给个代码。
1.HDC hdc = GetDC(HWND hWnd); 获得设备上下文的客户区一个指定的窗口或整个屏幕 eg:如果是在窗口类中可以:HDC hdc = GetDC(this->m_hWnd);2.在窗口区画点。SetPixel(hdc,x, \/\/ 横坐标 y , \/\/ 纵坐标 RGB(100,100,100)); \/\/点的颜色。3. 画线 MoveToEx(HDC hdc,...
用vc++6.0如何实现画点、画线、画圆?
以下方法可在MFC和控制台中都可以实现:\\x0d\\x0a1.HDC hdc = GetDC(HWND hWnd); 获得设备上下文的客户区一个指定的窗口或整个屏幕\\x0d\\x0aeg:如果是在窗口类中可以:\\x0d\\x0a HDC hdc = GetDC(this->m_hWnd); \\x0d\\x0a2.在窗口区画点。\\x0d\\x0a SetPixel(\\x...
MFC画线的问题,需要多点击一下,线才能画出来。
;dc.LineTo(point);CWnd::OnLButtonUp(nFlags, point);} 以上代码没有问题 你贴出来的代码除多了一行HDC hdc;无用之外没有问题 应该可以实现想要的功能 再找找其他原因吧, 你说的状况很奇怪, 因为m_ptOrigin 在LButtonDown的时候已经保存,第二次点击会更换它的值,还能画出线段实在可疑 ...
请问如何 在MFC,用最简单的方法画出两点一线?而且要持续显示~~_百度知...
1)API函数方法画线用HDC 2)用CDC类成员函数画线。此时别忘记ReleaseDC 3)用CClientDC 4)用CWindowDC,用它甚至可以整个屏幕区域画线。下面是上面4种方法的代码 \/*HDC hdc;hdc=::GetDC(m_hWnd);MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);LineTo(hdc,point.x,point.y);::ReleaseDC(m_...
vc++ MFC画直线的问题
你试试以下代码 , 测过, 没问题啊 void CChildView::OnLButtonUp(UINT nFlags, CPoint point){ CWindowDC dc (this);dc.MoveTo(point);dc.LineTo(m_pt);m_pt = point;CWnd::OnLButtonUp(nFlags, point);} void CChildView::OnLButtonDown(UINT nFlags, CPoint point){ m_pt = point;CWnd:...
...波形图画在同一个窗口上来显示,MFC AppWizard实现
数据就是通过AD转换得来的二进制信号,是TXT文档形式的,有频谱图和时域图,我想通过一个界面来打开这些数据并显示出来,实际上总体的实现如下图: 我目前想做的就是,我手中有了TXT文档信号,想像上面这个图形这样画两个坐标系统,然后打开我有的TXT文档信号并显示出来。 追答 非常不好意思,白拿了你那么多的分.如果仍...
用vc怎么实现画线、圆、矩形、抛物线?
这需要用到图形编程的知识,虽然在VC中没有图形编程的头函数graphics.h,但是现在有人编写了那个头函数,同时在VC中可以用MFC 来作图。用graphics.h作图来实现上述功能代码如下(你可以到网上去找到那个头文件):画线:line(int x1,int y1,int x2,int y2)\/*其中(x1,y1)组成了直线在窗口中的起始...
MFC如何画线
1,为××View类添加变量:BOOL m_bLButtonDown, m_bErase;CPoint p0, pm; \/\/起始点和动态的终点变量 CPen* pGeyPen, *pLinePen;2,在××View类构造函数中,m_bErase=false;m_bLButtonDown=false;pGeyPen=new CPen(PS_SOLID, 1, RGB(128, 128, 128));pLinePen=new CPen(PS_SOLID,...