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

华为云年中聚惠618活动,新用户专区,云服务器低至88元/年,3年仅580.98元,热销抢购中,最后2天!

华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...

LightNode(7.71美元),免认证高质量香港CN2 GIA

LightNode是一家位于香港的VPS服务商.提供基于KVM虚拟化技术的VPS.在提供全球常见节点的同时,还具备东南亚地区、中国香港等边缘节点.满足开发者建站,游戏应用,外贸电商等应用场景的需求。新用户注册充值就送,最高可获得20美元的奖励金!成为LightNode的注册用户后,还可以获得属于自己的邀请链接。通过你的邀请链接带来的注册用户,你将直接获得该用户的消费的10%返佣,永久有效!平台目前...

器安装环境和运维管理工具推荐

今天看到一个网友从原来虚拟主机准备转移至服务器管理自己的业务。这里问到虚拟主机和服务器到底有什么不同,需要用到哪些工具软件。那准备在下班之间稍微摸鱼一下整理我们服务器安装环境和运维管理中常见需要用到的软件工具推荐。第一、系统镜像软件一般来说,我们云服务器或者独立服务器都是有自带镜像的。我们只需要选择镜像安装就可以,比如有 Windows和Linux。但是有些时候我们可能需要自定义镜像的高级玩法,这...

implement_dyncreate为你推荐
财务系统软件常用财务软件有哪些?存储区域网络网络存储技术的SAN(存储区域网络)的优点郭列90后三无人物,如何创业?如何去实现人生价值?comexceptionapro exception是什么意思腾讯合作伙伴大会腾讯位置服务是什么?怎么查微信注册时间怎么知道微信上次登录时间btest进入北大青鸟需要什么学历呢ibooks支持什么格式iPhone4的ibooks怎么导入电子书 还有支持什么格式flv转avi为什么将flv格式转换成avi格式就不太清楚啦空间刷人气空间怎么刷人气?一天最高可以刷多少?
com域名注册 域名出售 域名服务器是什么 godaddy域名解析教程 老鹰主机 谷歌香港 主机合租 双十一秒杀 免费防火墙 秒杀汇 服务器是干什么的 qq云端 中国电信测速网 电信虚拟主机 安徽双线服务器 路由跟踪 监控服务器 学生服务器 国外网页代理 cdn加速 更多