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

小欢互联19元/月起, 即日起至10月底 美国CERA 促销活动 美国/香港八折

小欢互联成立于2019年10月,主打海外高性价比云服务器、CDN和虚拟主机服务。近期上线了自营美国CERA机房高速VPS,进行促销活动,为客户奉上美国/香港八折优惠码:Xxc1mtLB优惠码适用于美国CERA一区/二区以及香港一区/二区优惠时间:即日起至10月底优惠码可无限次使用,且续费同价!官网:https://idc.xh-ws.com购买地址:美国CERA一区:https://idc.xh-...

npidc:9元/月,cn2线路(不限流量)云服务器,金盾+天机+傲盾防御CC攻击,美国/香港/韩国

npidc全称No Problem Network Co.,Limited(冇問題(香港)科技有限公司,今年4月注册的)正在搞云服务器和独立服务器促销,数据中心有香港、美国、韩国,走CN2+BGP线路无视高峰堵塞,而且不限制流量,支持自定义内存、CPU、硬盘、带宽等,采用金盾+天机+傲盾防御系统拦截CC攻击,非常适合建站等用途。活动链接:https://www.npidc.com/act.html...

弘速云(28元/月)香港葵湾2核2G10M云服务器

弘速云怎么样?弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港vps、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统,目前推出全场vps新开7折,...

implement_dyncreate为你推荐
英文名网站介绍几个好的英语学习网站mergefield邮件合并中如何插入百分数oledbdatareader无法将带 [] 的索引应用于“OleDbDataReader”类型的表达式,求大神解答ico监管为何央行叫停代币发行?flash实例flash CS3 实例的属性面板里的实例名称是指什么databasenamefoxpro中的的命令格式java程序员招聘女java程序员好找工作嘛腾讯合作伙伴大会腾讯位置服务是什么?东兴证券网站东兴证券开户是假的吗?particular教程如何用AE做出花瓣从身体变出来的特效
动态域名解析软件 新网域名解析 已备案域名出售 骨干网 132邮箱 漂亮qq空间 美国主机推荐 l5520 ixwebhosting 新世界电讯 淘宝双十一2018 52测评网 双拼域名 泉州电信 傲盾官网 电信虚拟主机 湖南idc 德讯 防cc攻击 摩尔庄园注册 更多