翻譯|使用教程|編輯:何躍|2022-01-13 13:53:58.870|閱讀 644 次
概述:這個VS2022 - VS2019 MFC C++圖表上機試用教程包括Visual Studio使用MFC的說明。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
ProEssentials DLL接口在創(chuàng)建獨立的桌面或嵌入式EXE時使用,這些EXE將被免費分發(fā)并在終端用戶機器上運行。這個VS2022 - VS2019 MFC C++圖表上機試用教程包括Visual Studio使用MFC的說明。如果你喜歡一個不使用MFC的絕對最小的Win32 Hello World類型的項目,請參閱Win32 C++圖表庫。該產(chǎn)品評估還安裝了一個大型的MFC示例項目。
	
 
 
重要提示:要想在我們的幫助系統(tǒng)中找到DLL的具體功能,請點擊左上角的內(nèi)容標(biāo)簽,然后在靠近底部的位置點擊ProEssentials Reference,然后查看字母列表。.Net Reference部分是研究屬性的最佳來源,仍然顯示DLL的具體語法。
在安裝ProEssentials時,安裝程序會將ProEssentials DLL安裝到System32目錄下,在64位系統(tǒng)上為SysWow64。它還將頭文件和導(dǎo)入庫安裝到C:\ProEssentials9\VC目錄中。下載 相關(guān)的文件是:
1) 啟動Visual Studio.NET并創(chuàng)建一個新項目,目標(biāo)是[C++][Windows][桌面]和[MFC應(yīng)用]。輸入一個項目名稱為[MyFirstMfc]。
	 
 
2) 輸入你的項目名稱后,應(yīng)用向?qū)筮M行其他設(shè)置,比如皮膚樣式、資源語言、窗體按鈕、打印和打印預(yù)覽等等。
	 
 
	 
 
	 
 
3)首先手動將'PEGRPAPI.H'和'PEGRP32G.LIB'從C:\ProEssentials9\VC演示目錄復(fù)制到[MyFirstMfc]項目文件的位置。
注意,如果使用標(biāo)準(zhǔn)版而不是專業(yè)版,使用'PEGRPSG.LIB'。
在Visual Studio頂層菜單中,使用[Project / Add Exiting Item...]菜單將'PEGRPAPI.H'和'PEGRP32G.LIB'添加到[MyFirstMfc]項目中。
圖片顯示了現(xiàn)有文件被添加到你的項目中。
	 
 
4) 打開文件'myfirstmfcview.cpp',在靠近頂部的地方添加一行。
#include "Pegrpapi.h"include語句添加了包含常量和函數(shù)聲明的ProEssentials頭文件。
	 
 
5)打開文件'myfirstmfcview.h'并添加這一行。
HWND hPE。
	 
 
	
MyFirstMfcView的每個實例都會有自己的句柄副本。
然后在文件'myfirstmfcview.cpp'中找到構(gòu)造函數(shù),將hPE初始化為NULL。
	hPE = NULL。

6) 在Visual Studio的頂層菜單中,使用[Project / Class Wizard...]菜單來打開Class Wizard對話框。
選擇類名CMyFirstMfcView。
選擇 "信息 "標(biāo)簽,雙擊 "信息"...
	
	 
 
選擇虛擬函數(shù)標(biāo)簽,雙擊函數(shù)...
	
	 
 
7) 在MyFirstMfcView.cpp最近添加的OnCreate, OnDestroy, OnSize和OnCommand部分,添加以下代碼,初始化一個示例圖表。請看下面的圖片來進一步參考。
OnCreate:在父類創(chuàng)建窗口后創(chuàng)建并初始化一個圖表
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;
}
然后整個代碼效果如下:
	
	 
 
	 
 

以上就是本次上機練習(xí)的效果。
關(guān)于其他DEMO體驗,可以點擊這里下載安裝獲得。請注意,我們的主要圖表演示是在WPF和Winform C#.NET、VB.NET、VC++ MFC、Delphi、Builder中復(fù)制的,都可以從你安裝ProEssentials的地方進入。 這些都非常適用于修改現(xiàn)有的演示,在你的應(yīng)用程序中實施之前測試潛在的修改。本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@ke049m.cn