implement_dynamic(VC++)DECLARE_DYNAMIC(CDrawToolDlg)这个是什么意思?

implement_dynamic  时间:2021-06-14  阅读:()

求高手帮忙详细解说下这代码吧。。小生是初学者。万分感谢了

IMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) //{{AFX_MSG_MAP(CMainFrame) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code ! ON_WM_CREATE() ON_WM_SETFOCUS() //}}AFX_MSG_MAP END_MESSAGE_MAP() //消息映射,将相应的消息绑定相应的函数,类似于委托(c#中的),函数指针 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; // create a view to upy the client area of the frame if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) { TRACE0("Failed to create view window "); return -1; } //创建视图,也就是view BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if ( cs.hMenu != NULL ) { DestroyMenu( cs.hMenu ); cs.hMenu = NULL; } //在窗口创建前做的一些初始化工作,如果菜单句柄不为空,就释放菜单句柄 void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } //上面两个函数是debug模式下的断言,不用管 void CMainFrame::OnSetFocus(CWnd* pOldWnd) { UNREFERENCED_PARAMETER( pOldWnd ); m_wndView.SetFocus(); } //设置视图焦点 BOOL CMainFrame::OnCmdMs(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } //处理系统命令消息

在vs 2005里面如何像6里面添加CSplashWnd组件来设置启动菜单呢

我告诉你在vs2008下的做法。

项目-添加类-c++类,类名CSplashWnd 其他默认。

把SplashWnd.h的代码如下: #pragma once // CSplashWnd class CSplashWnd : public CWnd { DECLARE_DYNAMIC(CSplashWnd) private: CDC mMemDC; BITMAP bmBitmap; CBitmap m_Bitmap; CBitmap *Old_Bitmap; public: void CreateSplash(); public: CSplashWnd(); virtual ~CSplashWnd(); protected: afx_msg void OnPaint(); DECLARE_MESSAGE_MAP() }; 类的cpp代码: // SplasWnd.cpp : 实现文件 // #include "stdafx.h" #include "resource.h" #include "SplashWnd.h" // CSplashWnd IMPLEMENT_DYNAMIC(CSplashWnd, CWnd) CSplashWnd::CSplashWnd() { m_Bitmap.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1)); //Load Bitmap m_Bitmap.GetBitmap(&bmBitmap); //Get Bitmap Info } CSplashWnd::~CSplashWnd() { } BEGIN_MESSAGE_MAP(CSplashWnd, CWnd) ON_WM_PAINT() END_MESSAGE_MAP() // CSplashWnd 消息处理程序 void CSplashWnd::CreateSplash() { //Create Splash Window CWnd::CreateEx(0, AfxRegisterWndClass( 0, AfxGetApp()->LoadStandardCursor(IDC_UPARROW)), NULL, // "SplashWindow Sample", WS_POPUP, 0, 0, bmBitmap.bmWidth, //Bitmap Width = Splash Window Width bmBitmap.bmHeight, //Bitmap Height = Splash Window Height NULL, NULL, NULL); } void CSplashWnd::OnPaint() { CPaintDC dc(this); CBrush brush; brush.CreateSolidBrush(RGB(64,64,255)); dc.SelectObject(&brush); dc.Rectangle(0,0,bmBitmap.bmWidth,bmBitmap.bmHeight); mMemDC.CreateCompatibleDC(NULL); //Create Memory DC Old_Bitmap = mMemDC.SelectObject(&m_Bitmap); //Select DC int num = bmBitmap.bmWidth/40; dc.StretchBlt(0,0,bmBitmap.bmWidth,bmBitmap.bmHeight,&mMemDC,0,0,bmBitmap.bmWidth,bmBitmap.bmHeight,SRCCOPY); mMemDC.SelectObject(Old_Bitmap); //Select Bitmap } //IDB_BITMAP1是添加的位图资源。

然后在MainFrm.cpp中OnCreate函数开始处 m_pSplashWindow = new CSplashWnd(); // CRect rect(10,10,500,500); // m_pSplashWindow->Create(NULL,NULL,0,rect,NULL,0); m_pSplashWindow->CreateSplash(); m_pSplashWindow->CenterWindow(); m_pSplashWindow->ShowWindow(SW_SHOW); m_pSplashWindow->UpdateWindow(); // Sleep(2000); m_pSplashWindow->DestroyWindow(); //m_pSplashWindow 要在头文件中声明,并要在析构函数中delete。

不过这破程序没必要,不知道自己当时为什么要这样写,动态内存使用麻烦容易出错,直接在这个函数中构造对象就可以了,不用什么动态申请,也就不用在头文件中声明什么指针了。

自己懒得改,你觉得有必要就改下吧

mfc为什么一个类要派生出很多类???请说清楚点

其实很简单,比如说一个画笔类,所谓术业有专攻,铅笔类和钢笔类的功能是不一样的,使用场景也不一样。

所以MFC派生出来的类非常庞大,目的就在于不需要程序员去做重复性开发的工作,而是选择适合自己的工具。

(VC++)DECLARE_DYNAMIC(CDrawToolDlg)这个是什么意思?

这个是VC的宏,一般不常遇到. 从CObject派生一个类时,此宏增加关于一个对象类的访问运行时间功能。

把DECLARE_DYNAMIC宏加入类的头文件中,然后在全部需要访问词类对象的.CPP文件中都包含此模块。

如果像所描述那样使用DELCARE_DYNAMIC和IMPLEMENT_DYNAMIC宏,那么用户便可使用RUNTIME_CLASS宏和CObject::IsKindOf函数以在运行时间决定对象类。

如果DECLARE_DYNAMIC包含在类定义中,那么IMPLEMETN_DYNAMIC必须包含在类工具中。

  • implement_dynamic(VC++)DECLARE_DYNAMIC(CDrawToolDlg)这个是什么意思?相关文档

云如故枣庄高防(49元)大内存2H2G49元8H8G109元

云如故是一家成立于2018年的国内企业IDC服务商,由山东云如故网络科技有限公司运营,IDC ICP ISP CDN VPN IRCS等证件齐全!合法运营销售,主要从事自营高防独立服务器、物理机、VPS、云服务器,虚拟主机等产品销售,适合高防稳定等需求的用户,可用于建站、游戏、商城、steam、APP、小程序、软件、资料存储等等各种个人及企业级用途。机房可封UDP 海外 支持策略定制 双层硬件(傲...

腾讯云2核4GB内存8M带宽 年74元

一般大厂都是通过首年才有可以享受爆款活动,然后吸引我们注册他们商家达到持续续费和购买的目的。一般只有大厂才能有这样的魄力和能力首年亏本,但是对于一般的公司和个人厂家确实难过,这几年确实看到不少的同类商家难以生存。这里我们可以看到有对应的套餐方案。不过这两个套餐都是100%CPU独享的,不是有某云商家限制CPU的。但是轻量服务器有个不好的就是带宽是较大且流量是限制的额,分别是1GB和1.2TB月流量...

美国高防云服务器 1核 1G 10M 38元/月 百纵科技

百纵科技:美国云服务器活动重磅来袭,洛杉矶C3机房 带金盾高防,会员后台可自助管理防火墙,添加黑白名单 CC策略开启低中高.CPU全系列E52680v3 DDR4内存 三星固态盘列阵。另有高防清洗!百纵科技官网:https://www.baizon.cn/联系QQ:3005827206美国洛杉矶 CN2 云服务器CPU内存带宽数据盘防御价格活动活动地址1核1G10M10G10G38/月续费同价点击...

implement_dynamic为你推荐
sql四舍五入sql 查询出的结果进行除法运算,结果无法四舍五入。求助!mergefield合并邮件,最后怎么生成呢?snake模型图像分割与边缘处理有什么区别?请大侠回答,谢谢了。oledbdatareaderDataReader和IDataReader的区别?国家法规数据库哪个常用的法律APP比较好用?刷ip流量免费刷流量软件有哪些?哪个免费刷流量工具最好?云输入法QQ云输入法怎样调整候选词的个数?微信网页版登陆首页微信网页版怎么用?微信网页版怎么登陆?gas是什么意思gc是什么意思啊?飞信发信息要钱吗在飞信中发消息和发飞信短信有什么不同?要收费吗?
查询ip 最新代理服务器ip 免费申请域名和空间 mach wdcp gateone godaddy tk域名 私有云存储 申请空间 免费ftp站点 ca4249 微信收钱 howfile 河南移动m值兑换 免费网页申请 空间登录首页 备案空间 电信宽带测速软件 netvigator 更多