提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:何跃|2022-01-13 13:53:58.870|阅读 516 次
概述:这个VS2022 - VS2019 MFC C++图表上机试用教程包括Visual Studio使用MFC的说明。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
ProEssentials DLL接口在创建独立的桌面或嵌入式EXE时使用,这些EXE将被免费分发并在终端用户机器上运行。这个VS2022 - VS2019 MFC C++图表上机试用教程包括Visual Studio使用MFC的说明。如果你喜欢一个不使用MFC的绝对最小的Win32 Hello World类型的项目,请参阅Win32 C++图表库。该产品评估还安装了一个大型的MFC示例项目。
重要提示:要想在我们的帮助系统中找到DLL的具体功能,请点击左上角的内容标签,然后在靠近底部的位置点击ProEssentials Reference,然后查看字母列表。.Net Reference部分是研究属性的最佳来源,仍然显示DLL的具体语法。
在安装ProEssentials时,安装程序会将ProEssentials DLL安装到System32目录下,在64位系统上为SysWow64。它还将头文件和导入库安装到C:\ProEssentials9\VC目录中。下载 相关的文件是:
1) 启动Visual Studio.NET并创建一个新项目,目标是[C++][Windows][桌面]和[MFC应用]。输入一个项目名称为[MyFirstMfc]。
2) 输入你的项目名称后,应用向导会要求进行其他设置,比如皮肤样式、资源语言、窗体按钮、打印和打印预览等等。
3)首先手动将'PEGRPAPI.H'和'PEGRP32G.LIB'从C:\ProEssentials9\VC演示目录复制到[MyFirstMfc]项目文件的位置。
注意,如果使用标准版而不是专业版,使用'PEGRPSG.LIB'。
在Visual Studio顶层菜单中,使用[Project / Add Exiting Item...]菜单将'PEGRPAPI.H'和'PEGRP32G.LIB'添加到[MyFirstMfc]项目中。
图片显示了现有文件被添加到你的项目中。
4) 打开文件'myfirstmfcview.cpp',在靠近顶部的地方添加一行。
#include "Pegrpapi.h"include语句添加了包含常量和函数声明的ProEssentials头文件。
5)打开文件'myfirstmfcview.h'并添加这一行。
HWND hPE。
变量hPE用于存储ProEssentials图表控件的窗口句柄。我们创建的图表将是一个标准的Window;就像我们调用CreateWindow API调用一样。
MyFirstMfcView的每个实例都会有自己的句柄副本。
然后在文件'myfirstmfcview.cpp'中找到构造函数,将hPE初始化为NULL。
hPE = NULL。
6) 在Visual Studio的顶层菜单中,使用[Project / Class Wizard...]菜单来打开Class Wizard对话框。
选择类名CMyFirstMfcView。
选择 "信息 "标签,双击 "信息"...
选择虚拟函数标签,双击函数...
7) 在MyFirstMfcView.cpp最近添加的OnCreate, OnDestroy, OnSize和OnCommand部分,添加以下代码,初始化一个示例图表。请看下面的图片来进一步参考。
OnCreate:在父类创建窗口后创建并初始化一个图表
RECT r; int s, p, dwColor; float f[] = {10, 30, 20, 40, 30, 50, 15, 63, 74, 54, 25, 34}; GetClientRect(&r); // PEcreate is similar to CreateWindow API call, returns a Window Handle // hPE = PEcreate(PECONTROL_GRAPH, 0, &r, this->m_hWnd, 1000); PEszset(hPE, PEP_szMAINTITLE, TEXT("Hello World")); PEszset(hPE, PEP_szSUBTITLE, TEXT("")); PEnset(hPE, PEP_nSUBSETS, 2); // Subsets = Rows // PEnset(hPE, PEP_nPOINTS, 6); // Points = Columns // // Passing data one piece at a time // for (s=0; s<2; s++) { for (p=0; p<6; p++) { // (s*6)+p or (SubsetIndex * NumberPoints) + PointIndex // PEvsetcellEx(hPE, PEP_faYDATA, s, p, &f[(s*6)+p]); } } // or Passing data in one call is much faster: PEvset(hPE, PEP_faYDATA, f, 12); // PEvsetcell(hPE, PEP_szaPOINTLABELS, 0, TEXT("Jan")); PEvsetcell(hPE, PEP_szaPOINTLABELS, 1, TEXT("Feb")); PEvsetcell(hPE, PEP_szaPOINTLABELS, 2, TEXT("Mar")); PEvsetcell(hPE, PEP_szaPOINTLABELS, 3, TEXT("Apr")); PEvsetcell(hPE, PEP_szaPOINTLABELS, 4, TEXT("May")); PEvsetcell(hPE, PEP_szaPOINTLABELS, 5, TEXT("June")); PEvsetcell(hPE, PEP_szaSUBSETLABELS, 0, TEXT("For .Net Framework")); PEvsetcell(hPE, PEP_szaSUBSETLABELS, 1, TEXT("or MFC, ActiveX, VCL")); PEszset(hPE, PEP_szYAXISLABEL, TEXT("Simple Quality Rendering")); PEszset(hPE, PEP_szXAXISLABEL, TEXT("")); dwColor = PERGB(60, 0, 180, 0); PEvsetcell(hPE, PEP_dwaSUBSETCOLORS, 0, &dwColor); dwColor = PERGB(180, 0, 0, 130); PEvsetcell(hPE, PEP_dwaSUBSETCOLORS, 1, &dwColor); // Quick way to set many colors via QuickStyle property // PEnset(hPE, PEP_bBITMAPGRADIENTMODE, FALSE); PEnset(hPE, PEP_nQUICKSTYLE, PEQS_LIGHT_SHADOW); PEnset(hPE, PEP_nGRAPHPLUSTABLE, PEGPT_BOTH); PEnset(hPE, PEP_nDATAPRECISION, 0); PEnset(hPE, PEP_bLABELBOLD, TRUE); PEnset(hPE, PEP_nPLOTTINGMETHOD, PEGPM_BAR); PEnset(hPE, PEP_nGRADIENTBARS, 8); PEnset(hPE, PEP_bBARGLASSEFFECT, TRUE); PEnset(hPE, PEP_nLEGENDLOCATION, PELL_LEFT); PEnset(hPE, PEP_nDATASHADOWS, PEDS_3D); PEnset(hPE, PEP_bFIXEDFONTS, TRUE); PEnset(hPE, PEP_nFONTSIZE, PEFS_LARGE); // You will likely set these for all charts // PEnset(hPE, PEP_bPREPAREIMAGES, TRUE); PEnset(hPE, PEP_bCACHEBMP, TRUE); PEnset(hPE, PEP_nRENDERENGINE, PERE_DIRECT2D); PEnset(hPE, PEP_bANTIALIASGRAPHICS, TRUE); PEnset(hPE, PEP_bANTIALIASTEXT, TRUE); // Setting this TRUE will enable Data HotSpots, // // but we need to add code to respond to hot spot message // PEnset(hPE, PEP_bALLOWDATAHOTSPOTS, TRUE); // Always finish your property settings with these function calls // PEreinitialize(hPE); PEresetimage(hPE, 0, 0);OnDestroy: 资源销毁
if (hPE) { PEdestroy(hPE); hPE = 0; }OnSize: 图表随父窗体尺寸变化
if (hPE) { RECT r; GetClientRect(&r); ::MoveWindow(hPE, 0, 0, r.right, r.bottom, FALSE); }
OnCommand:事件监听
int wmId = LOWORD(wParam); int wmEvent = HIWORD(wParam); switch (wmEvent) { case PEWN_CLICKED: HOTSPOTDATA hsd; TCHAR buffer[128]; float yvalue; PEvget(hPE, PEP_structHOTSPOTDATA, &hsd); if (hsd.nHotSpotType == PEHS_DATAPOINT) { PEvgetcellEx(hPE, PEP_faYDATA, hsd.w1, hsd.w2, &yvalue); swprintf_s(buffer, TEXT(“DataPoint %d value %.2f“), hsd.w2, yvalue); ::MessageBox(this->m_hWnd, buffer, TEXT(“Hello World“), 0); } break; }然后整个代码效果如下:
8) 保存并运行该项目。你的项目将显示一个图像,如下。将鼠标移到一个条形图上,然后点击以触发DataHotSpot事件。
以上就是本次上机练习的效果。
关于其他DEMO体验,可以点击这里下载安装获得。请注意,我们的主要图表演示是在WPF和Winform C#.NET、VB.NET、VC++ MFC、Delphi、Builder中复制的,都可以从你安装ProEssentials的地方进入。 这些都非常适用于修改现有的演示,在你的应用程序中实施之前测试潜在的修改。本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢