implement_dyncreate利用C语言编写 能够画出任意斜率的直线算法程序(利用中点画线法改编)

implement_dyncreate  时间:2021-06-29  阅读:()

如何将CView窗口中动态生成的按钮子控件数据传送给CView

动态的不需要DoDataExchange关联。

直接用对象操作。

如在View中加入一个编辑框(CEdit类对象),和一个按钮,显示后,在编辑框输入, 在按钮事件函数中就可以提取编辑框中内容。

头文件 class CtestjdtView : public CView { protected: // 仅从序列化创建 CtestjdtView(); DECLARE_DYNCREATE(CtestjdtView) CButton *m_pTestButton; CEdit *m_pedtMyInput; // 属性 public: CtestjdtDoc* GetDocument() const; 。





映射表 IMPLEMENT_DYNCREATE(CtestjdtView, CView) BEGIN_MESSAGE_MAP(CtestjdtView, CView) // 标准打印命令 ON_BN_CLICKED(IDB_TEST_BUTTON, &CtestjdtView::OnTestButton) ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CtestjdtView::OnFilePrintPreview) ON_WM_CREATE() ON_WM_TIMER() END_MESSAGE_MAP() Oncreate()中加入 int CtestjdtView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: Add your specialized creation code here CRect rct(20,20,80,40); m_pTestButton = new CButton(); m_pTestButton->Create(_T("开始"),WS_CHILD|BS_PUSHBUTTON,rct,this, IDB_TEST_BUTTON); m_pTestButton->ShowWindow(SW_SHOW); rct.SetRect(80,80,110,100); m_pedtMyInput = new CEdit(); m_pedtMyInput->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER,rct,this, 88888); m_pedtMyInput->ShowWindow(SW_SHOW); 。





在按钮事件中提取编辑框内容 void CtestjdtView::OnTestButton() { CString str; if (NULL != m_pedtMyInput) { m_pedtMyInput->GetWindowText(str); } 。





有问题随时找我。

CRuntimeClass中m_pBaseClass和m_pNextClass的作用?

CRuntimeClass 是一个结构。

它用于运行时获得一个对象的信息及这个对象的基本类。

如果程序链接是静态链接,m_pBaseClass指向它的基类的CRuntimeClass型结构。

如果程序链接是动态链接,要用 m_pfnGetBaseClass 返回 m_pBaseClass。

m_pNextClass 指向与它有关的下一个类,从而使一个对象有了一个大的类信息表。

用途是好封装到 DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE里, 让一个类能有动态创建类鹤类的对象的功能。

下面是用visual studio (VC++中MFC)编译的一个程序,出了几个错误,不知道怎么解决,恳请高手帮忙。谢谢

楼上说的对,要是SelectGdiObject还有错,可以将SelectGdiObject换成SelectObject,很可能是这个错误,我在MSDN上未找到这个函数,可能是它错了。

要是是说sin,cos未找到标识符,可以在 stdafx.h中加入#include <math.h> ,但是一般的MFC程序会包含这个头文件,这就很奇怪 pdc->MoveTo (px=(int)x,py); 中的=应该是+吧 pdc->DeleteDC ();这句是错了的,因为原来使用new用堆来动态构造CClient对象,不用了的话, 应该用delete掉,而pdc->DeleteDC ();释放了pdc->m_hDC这个成员变量而已,其他成员数据以及 本身均并没有删除,会发生内存泄露。

还有就是【猪无为】说的 “或者根本就不要new出来CClientDC,给人感觉怪怪的,一般都是直接构造对象,如 CClientDC clientDC(this); CClientDC* pdc = &clientDC; “ 这个说法是不对的,使用new或直接用栈来构造对象都是可以的,没有什么怪不怪的,只是 用new构造对象是一件很复杂的事,需要额外动用很多资源,所以在一般情况下不建议使用 堆(new)来构造对象,再说释放也得自己释放,是件麻烦事。

另外x=30 - 30 * cos(a)句是后边少了“;”的(猪无为)。

关于MFC下把CView类替换为CSCrollView的问题

ew,包括头文件和源文件。

最好用[查找替换]全部替换。

这时运行程序,它会出现一个非法操作,原因是因为CScrollView类要求一些初始信息,你再这个视类中添加一个虚函数OnInitialUpdate(),再里面添加一句初始化代码 SetScrollSizes(MM_TEXT, CSize(800, 600));

利用C语言编写 能够画出任意斜率的直线算法程序(利用中点画线法改编)

将DDA算法改成中点划线算法即可 // DDA画线View.cpp : implementation of the CDDAView class // #include "stdafx.h" #include "DDA画线.h" #include "DDA画线Doc.h" #include "DDA画线View.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDDAView IMPLEMENT_DYNCREATE(CDDAView, CView) BEGIN_MESSAGE_MAP(CDDAView, CView) //{{AFX_MSG_MAP(CDDAView) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP // Standard mands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDDAView construction/destruction CDDAView::CDDAView() { // TODO: add construction code here } CDDAView::~CDDAView() { } BOOL CDDAView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CDDAView drawing void CDDAView::OnDraw(CDC* pDC) { CDDADoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); int xx,yy,x2,y2,m,n; float dx,dy,k,x,y; int x0=50,y0=500,x1=50,y1=50; if(x0>x1) { m=x0;x0=x1;x1=m; m=y0;y0=y1;y1=m; } dx=x1-x0; dy=y1-y0; k=dy/dx; if(x0==x1) { if(y0>y1) { n=y0; y0=y1; y1=n; } for(y2=y0;y2<=y1;) { for(n=-10;n<11;) { pDC->SetPixel(x0+n,y2,255); n++; } y2=y2+3; } } if(k>=-1&&k<=1.0) { y=y0; for(x2=x0;x2<=x1;) { yy=(int)(y+0.5); for(n=-10;n<11;) { pDC->SetPixel(x2,yy+n,255); n++; } y=y+k; x2++; } } else if(k>1) { x=x0; k=dx/dy; for(y2=y0;y2<=y1;) { xx=(int)(x+0.5); for(n=-10;n<11;) { pDC->SetPixel(xx+n,y2,255); n++; } x=x+k; y2++; } } else if(k<-1) { x=x1; k=dx/dy; for(y2=y1;y2<=y0;) { xx=(int)(x+0.5); for(n=-10;n<11;) { pDC->SetPixel(xx+n,y2,255); n++; } x=x+k; y2++; } } // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CDDAView printing BOOL CDDAView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CDDAView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CDDAView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CDDAView diagnostics #ifdef _DEBUG void CDDAView::AssertValid() const { CView::AssertValid(); } void CDDAView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CDDADoc* CDDAView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDDADoc))); return (CDDADoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CDDAView message handlers

趣米云(18元/月)香港三网CN2云服器低至;1核1G/30G系统盘+20G数据盘/10M带宽

趣米云怎么样?趣米云是创建于2021年的国人IDC商家,虽然刚刚成立,但站长早期为3家IDC提供技术服务,已从业2年之久,目前主要从事出售香港vps、香港独立服务器、香港站群服务器等,目前在售VPS线路有三网CN2、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。由于内存资源大部分已售,而IP大量闲置,因此我们本月新增1c1g优惠套餐。点击进入:趣米云官方网站地址香港三网CN2云服务器机型活...

萤光云(16元/月)高防云服务器自带50G防御

螢光云官網萤光云成立于2002年,是一家自有IDC的云厂商,主打高防云服务器产品。在国内有福州、北京、上海、台湾、香港CN2节点,还有华盛顿、河内、曼谷等海外节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。本次萤光云中秋云活动简单无套路,直接在原有价格上砍了一大刀,最低价格16元/月,而且有没有账户限制,新老客户都可以买,就是直接满满的诚意给大家送优惠了!官网首页:www....

HostKvm开年促销:香港国际/美国洛杉矶VPS七折,其他机房八折

HostKvm也发布了开年促销方案,针对香港国际和美国洛杉矶两个机房的VPS主机提供7折优惠码,其他机房业务提供8折优惠码。商家成立于2013年,提供基于KVM架构的VPS主机,可选数据中心包括日本、新加坡、韩国、美国、中国香港等多个地区机房,均为国内直连或优化线路,延迟较低,适合建站或者远程办公等。下面列出几款主机配置信息。美国洛杉矶套餐:美国 US-Plan1CPU:1core内存:2GB硬盘...

implement_dyncreate为你推荐
sql四舍五入SQL中如何以0.5为单位进行四舍五入计算instagram电脑版苹果macbook pro做摄影拍照后期有什么优势吗?为什么很多摄影师用它?和thinkpad W系列比呢?网络视频下载器谁能给我找个网络视频下载器和转换器?excel大写金额EXCEL如何显示出汉字大写金额renderpartialrender farm 是什么意思flash实例Flash元件和实例的概念及关系?comexception5种常见的Exception!java程序员招聘女java程序员好找工作嘛cursorlocation如何用ENVI把不同图像中的相同地点的某个像素点的值读出来。按时间把这个点的值连起来,。谢谢好人。在线沟通有效沟通的六个要点
南通服务器租用 域名交易网 dns是什么 42u标准机柜尺寸 sub-process 北京双线机房 什么是刀片服务器 789电视 电信虚拟主机 免费mysql数据库 海外空间 监控服务器 成都主机托管 云销售系统 免费赚q币 zcloud 建站技术 服务器机柜 美国西雅图独立 以下 更多