翻譯|使用教程|編輯:何躍|2022-01-13 13:53:58.870|閱讀 618 次
概述:這個(gè)VS2022 - VS2019 MFC C++圖表上機(jī)試用教程包括Visual Studio使用MFC的說(shuō)明。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
ProEssentials DLL接口在創(chuàng)建獨(dú)立的桌面或嵌入式EXE時(shí)使用,這些EXE將被免費(fèi)分發(fā)并在終端用戶機(jī)器上運(yùn)行。這個(gè)VS2022 - VS2019 MFC C++圖表上機(jī)試用教程包括Visual Studio使用MFC的說(shuō)明。如果你喜歡一個(gè)不使用MFC的絕對(duì)最小的Win32 Hello World類型的項(xiàng)目,請(qǐng)參閱Win32 C++圖表庫(kù)。該產(chǎn)品評(píng)估還安裝了一個(gè)大型的MFC示例項(xiàng)目。
重要提示:要想在我們的幫助系統(tǒng)中找到DLL的具體功能,請(qǐng)點(diǎn)擊左上角的內(nèi)容標(biāo)簽,然后在靠近底部的位置點(diǎn)擊ProEssentials Reference,然后查看字母列表。.Net Reference部分是研究屬性的最佳來(lái)源,仍然顯示DLL的具體語(yǔ)法。
在安裝ProEssentials時(shí),安裝程序會(huì)將ProEssentials DLL安裝到System32目錄下,在64位系統(tǒng)上為SysWow64。它還將頭文件和導(dǎo)入庫(kù)安裝到C:\ProEssentials9\VC目錄中。下載 相關(guān)的文件是:
1) 啟動(dòng)Visual Studio.NET并創(chuàng)建一個(gè)新項(xiàng)目,目標(biāo)是[C++][Windows][桌面]和[MFC應(yīng)用]。輸入一個(gè)項(xiàng)目名稱為[MyFirstMfc]。
2) 輸入你的項(xiàng)目名稱后,應(yīng)用向?qū)?huì)要求進(jìn)行其他設(shè)置,比如皮膚樣式、資源語(yǔ)言、窗體按鈕、打印和打印預(yù)覽等等。
3)首先手動(dòng)將'PEGRPAPI.H'和'PEGRP32G.LIB'從C:\ProEssentials9\VC演示目錄復(fù)制到[MyFirstMfc]項(xiàng)目文件的位置。
注意,如果使用標(biāo)準(zhǔn)版而不是專業(yè)版,使用'PEGRPSG.LIB'。
在Visual Studio頂層菜單中,使用[Project / Add Exiting Item...]菜單將'PEGRPAPI.H'和'PEGRP32G.LIB'添加到[MyFirstMfc]項(xiàng)目中。
圖片顯示了現(xiàn)有文件被添加到你的項(xiàng)目中。
4) 打開文件'myfirstmfcview.cpp',在靠近頂部的地方添加一行。
#include "Pegrpapi.h"include語(yǔ)句添加了包含常量和函數(shù)聲明的ProEssentials頭文件。
5)打開文件'myfirstmfcview.h'并添加這一行。
HWND hPE。
MyFirstMfcView的每個(gè)實(shí)例都會(huì)有自己的句柄副本。
然后在文件'myfirstmfcview.cpp'中找到構(gòu)造函數(shù),將hPE初始化為NULL。
hPE = NULL。
6) 在Visual Studio的頂層菜單中,使用[Project / Class Wizard...]菜單來(lái)打開Class Wizard對(duì)話框。
選擇類名CMyFirstMfcView。
選擇 "信息 "標(biāo)簽,雙擊 "信息"...
選擇虛擬函數(shù)標(biāo)簽,雙擊函數(shù)...
7) 在MyFirstMfcView.cpp最近添加的OnCreate, OnDestroy, OnSize和OnCommand部分,添加以下代碼,初始化一個(gè)示例圖表。請(qǐng)看下面的圖片來(lái)進(jìn)一步參考。
OnCreate:在父類創(chuàng)建窗口后創(chuàng)建并初始化一個(gè)圖表
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:事件監(jiān)聽
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; }然后整個(gè)代碼效果如下:
以上就是本次上機(jī)練習(xí)的效果。
關(guān)于其他DEMO體驗(yàn),可以點(diǎn)擊這里下載安裝獲得。請(qǐng)注意,我們的主要圖表演示是在WPF和Winform C#.NET、VB.NET、VC++ MFC、Delphi、Builder中復(fù)制的,都可以從你安裝ProEssentials的地方進(jìn)入。 這些都非常適用于修改現(xiàn)有的演示,在你的應(yīng)用程序中實(shí)施之前測(cè)試潛在的修改。本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn