翻譯|使用教程|編輯:何躍|2022-01-13 13:53:58.870|閱讀 618 次
概述:這個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。
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; }然后整個代碼效果如下:
以上就是本次上機練習的效果。
關于其他DEMO體驗,可以點擊這里下載安裝獲得。請注意,我們的主要圖表演示是在WPF和Winform C#.NET、VB.NET、VC++ MFC、Delphi、Builder中復制的,都可以從你安裝ProEssentials的地方進入。 這些都非常適用于修改現有的演示,在你的應用程序中實施之前測試潛在的修改。本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn