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

杭州王小玉网-美国CERA 2核8G内存19.9元/月,香港,日本E3/16G/20M CN2带宽150元/月,美国宿主机1500元,国内宿主机1200元

官方网站:点击访问王小玉网络官网活动方案:买美国云服务器就选MF.0220.CN 实力 强 强 强!!!杭州王小玉网络 旗下 魔方资源池 “我亏本你引流活动 ” mf.0220.CNCPU型号内存硬盘美国CERA机房 E5 2696v2 2核心8G30G总硬盘1个独立IP19.9元/月 续费同价mf.0220.CN 购买湖北100G防御 E5 2690v2 4核心4G...

ftlcloud9元/月,美国云服务器,1G内存/1核/20g硬盘/10M带宽不限/10G防御

ftlcloud(超云)目前正在搞暑假促销,美国圣何塞数据中心的云服务器低至9元/月,系统盘与数据盘分离,支持Windows和Linux,免费防御CC攻击,自带10Gbps的DDoS防御。FTL-超云服务器的主要特色:稳定、安全、弹性、高性能的云端计算服务,快速部署,并且可根据业务需要扩展计算能力,按需付费,节约成本,提高资源的有效利用率。活动地址:https://www.ftlcloud.com...

hostkey荷兰/俄罗斯机房,GPU服务器

hostkey应该不用说大家都是比较熟悉的荷兰服务器品牌商家,主打荷兰、俄罗斯机房的独立服务器,包括常规服务器、AMD和Intel I9高频服务器、GPU服务器、高防服务器;当然,美国服务器也有,在纽约机房!官方网站:https://hostkey.com/gpu-dedicated-servers/比特币、信用卡、PayPal、支付宝、webmoney都可以付款!CPU类型AMD Ryzen9 ...

implement_dyncreate为你推荐
instagram电脑版iOS 有哪些优秀的照片处理软件mergefield邮件合并日期,想让电子表格中的日期格式与WORD中的日期格式一致scriptmanager怎么解决ScriptManager和Jqery冲突oledbdatareaderDataReader和IDataReader的区别?动态图片格式常见的动态图像文件格式有哪些?renderpartialrender farm 是什么意思avc是什么格式电厂AVC啥意思?淘码除了爱码,现在哪个验证码平台还能用动画分镜头脚本动漫脚本和分镜头的区别?懂的进动画分镜头脚本动画分镜头台本的作用?
西安域名注册 韩国服务器租用 webhostingpad 新世界电讯 windows2003iso 韩国网名大全 linux空间 微信收钱 电子邮件服务器 什么是刀片服务器 刀片服务器是什么 最好的免费空间 cdn加速原理 河南移动网 服务器监测 服务器硬件防火墙 全能空间 免备案cdn加速 forwarder 西部主机 更多