如何将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
妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款到网站余额,超过2天...
Contabo自4月份在新加坡增设数据中心以后,这才短短的过去不到3个月,现在同时新增了美国纽约和西雅图数据中心。可见Contabo加速了全球布局,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。为了庆祝美国独立日和新增数据中心,自7月4日开始,购买美国地区的VPS、VDS和独立服务器均免设置费。Contabo是德国的老牌服务商,...
PacificRack在本月发布了几款特价产品,其中最低款支持月付仅1.5美元,基于KVM架构,洛杉矶机房,PR-M系列。PacificRack简称PR,QN机房旗下站点,主要提供低价VPS主机产品,基于KVM架构,数据中心为自营洛杉矶机房,现在只有PR-M一个系列,分为了2个类别:常规(Elastic Compute Service)和多IP产品(Multi IP Server)。下面列出几款秒...
implement_dyncreate为你推荐
中国学生网全国统一学籍号查询scriptmanagerscriptmanager.registerstartupscript是.net3.5吗youtube创始人比特币创始人到底是谁excel大写金额怎么用Excel将小写金额转换成人民币的大写金额pps官网pps官方下载,pps播放器下载国家法规数据库食品及食用农产品标准法规信息支撑和综合应用平台/食品安全标准与技术法规动态比对数据库如何查询标准netbios协议tcp/ip、ipx/spx、netbios这三个通信协议的区别音乐代码网页中怎么写自动播放mp3音乐的代码gas是什么意思gc是什么意思啊?ocr软件下载哪个图片转文字软件比较好用?
中国十大域名注册商 代理域名备案 3322动态域名 电信测速器 photonvps kvmla hostmonster 主机屋免费空间 seovip 2017年黑色星期五 长沙服务器 国内php空间 网通代理服务器 卡巴斯基免费试用 电信托管 域名dns lick 攻击服务器 阿里云个人邮箱 双十二促销 更多