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

DiyVM(50元起)老牌商家,香港沙田CN2直连vps/不限流量/五折终身优惠

diyvm怎么样?diyvm是一家国内成立时间比较久的主机商家了,大约在6年前站长曾经用过他家的美国机房的套餐,非常稳定,适合做站,目前商家正在针对香港沙田机房的VPS进行促销,给的是五折优惠,续费同价,香港沙田机房走的是CN2直连的线路,到大陆地区的速度非常好,DiyVM商家采用小带宽不限流量的形式,带宽2Mbps起步,做站完全够用,有需要的朋友可以入手。diyvm优惠码:五折优惠码:OFF50...

Friendhosting全场VDS主机45折,虚拟主机4折,老用户续费9折

Friendhosting发布了今年黑色星期五促销活动,针对全场VDS主机提供45折优惠码,虚拟主机4折,老用户续费可获9折加送1个月使用时长,优惠后VDS最低仅€14.53/年起,商家支持PayPal、信用卡、支付宝等付款方式。这是一家成立于2009年的老牌保加利亚主机商,提供的产品包括虚拟主机、VPS/VDS和独立服务器租用等,数据中心可选美国、保加利亚、乌克兰、荷兰、拉脱维亚、捷克、瑞士和波...

RAKsmart推出7.59美元/月,云服务器产品Cloud Server,KVM架构1核1G内存40G硬盘1M带宽基础配置

近期RAKsmart上线云服务器Cloud Server产品,KVM架构1核1G内存40G硬盘1M带宽基础配置7.59美元/月!RAKsmart云服务器Cloud Server位于美国硅谷机房,下单可选DIY各项配置,VPC网络/经典网络,大陆优化/精品网线路,1-1000Mbps带宽,支持Linux或者Windows操作系统,提供Snap和Backup。RAKsmart机房是一家成立于2012年...

implement_dyncreate为你推荐
dell服务器维修dell维修服务外国最火开放的直播app手机上看国外电视直播软件哪个好郭列90后的杰出代表有那些?youtube创始人卜秋静 有关生平介绍listviewitem怎么获取ListView里Item中的控件broadcast播播……拼音云输入法QQ云输入法怎样进行中英文切换?东兴证券网站东兴证券开户是假的吗?泛微协同办公系统泛微oa怎么样?我想了解一下,有用过的同仁帮忙!发表下自己的观点(天津)particular教程AE的particular的particle设置
紧急升级请记住新域名 openv 香港bgp机房 NetSpeeder 大容量存储 申请个人网页 丹弗 日本bb瘦 hostker 怎么测试下载速度 网站木马检测工具 169邮箱 河南移动网 流媒体加速 超级服务器 新睿云 华为云盘 东莞idc 空间登入 海外空间 更多