|
Программирование >> Процедурные приложения
EDITTEXT DM XLABEL, LTEXT y-axis EDITTEXT.DM YLABEL, 75, 60,8, NOT WS GROUP Bar #1 Bar #2 Bar #3 Bar #4 Bar #5 Bar #6 Bar #7 Bar #8 Bar #9 Bar #10: EDITTEXT DM P1, EDITTEXT DM P2, EDITTEXT DM P3, EDITTEXT DM P4, EDITTEXT DM P5, EDITTEXT DM P6, EDITTEXT DM P7, EDITTEXT DM P8, EDITTEXT DM P9, LTEXT LTEXT LTEXT LTEXT LTEXT LTEXT LTEXT LTEXT LTEXT LTEXT
NOT WS GROOP NOT WS GROUP NOT WS GROUP CTEXT By William H. Murray and Chris H. Pappas , -1,28/ 28,144, 8 CTEXT (c)Copyright 1998 ,-1, 68,38, 83, 8 DEFPUSHBUTTON 0K , IDOK, 84, 55, 32, 14, WS GROUP BARDLGBOX DIALOG DISCARDABLE 42,65526,223,209 STYLE WS POPUP I WS CAPTION CAPTION Bar Chart Data BEGIN GROUPBOX Bar Chart Title: ,100, 5, 11,212,89,WSJTABSTOP GROUPBOX Bar Chart Heights , 101, 5, 105, 212, 90,WSJTABSTOP LTEXT Title: , -1,43,35,28,8, NOT WS GROUP EDITTEXT DM TITLE, 75,30,137,12 LTEXT x-axis label: ,-1,15,55, 55,8, NOT WS GROUP 75,50,135, 12 label: ,-1,15, 75,70,135,12 -1,45,125, -1,45,140, -1,45,155, -1,45,170, -1,45,185, -1,130, 125> 40,8, -1,130, 140, 40,8, -1,130, 155, 40,8, -1,130, 170,40,8, NOT WS GROUP -1,130, 185, 45,8, NOT WS GROUP 90,120, 30,12 90,135,30, 12 90,150, 30,12 90,165,30, 12 90,180, 30,12 180, 120, 30,12 180, 135, 30,12 180, 150, 30,12 180, 165,30,12 EDITTEXT DM P10, 180, 180, 30,12 PUSHBUTTON 0K , IDOK, 54,195,24,14 END PUSHBUTTON Cancel , IDCANCEL, 124, 195,34,14 #ifdef APSTUDIO INVOKED
1 TEXTINCLUDE DISCARDABLE BEGIN resource.h\0 END 2 TEXTINCLUDE DISCARDABLE BEGIN #define APSTUDIO HIDDEN SYMBOLS\r\n #include windows.h \r\n #undef APSTUDIO HIDDEN SYMBOLS\r\n #include afxres.h \r\n \0 END 3 TEXTINCLUDE DISCARDABLE BEGIN \r\n \0 END #endif APSTUDIO INVOKED #endif Ресурсы для английского ( США) языка Ниже приведен текст файла BARCHART.CPP. barchart.cpp Построение гистограмм. #include <afxwin.h> #include <string.h> #include <math.h> #include <stdlib.h> #include barchartr.h идентификаторы ресурсов #include barchart.h #define maxnumbar 10 char szTString[80] = (barchart title area) ; char szXString[80]= x-axis label ; char szYString[80] = y-axis label ; int iBarSize[maxnumbar] = {20,10, 40, 50}; int m cxClient, m cyClient; CTheApp theApp; CMainWnd::CMainWnd() { Create(AfxRegisterWndClass(CS HREDRAW CS VREDRAW,LoadCursor(NULL, IDC CROSS), (HBRDSH)GetStockObject (WHITE BRUSH) , NULL) , Bar Chart Application with the MFC , WS OVERLAPPEDWINDOW, rectDefault, NULL, BarMenu ); void CMainWnd::OnSize(OINT, int x, int y) ( m cxClient = x; m cyClient = y; ) void CMainWnd::OnPaint() CPaintDC dc(this); static DWORD dwColorflO] = { RGB(0,0, d), черный RGB(245,0, 0), красный RGB(0,245,0), зеленый RGB(0,0, 245), синий RGB(245,245, 0), желт1й RGB(245,0, 245), пурпурный RGB(0,245,245), голубой RGB(0,80,80), голубовато-серый RGB(80,80,80), темно-серый RGB(245, 245, 245)}; белый CFont newfont; CFont* oldfont; CBrush newbrush; CBrush* oldbrush; int i, iNBars, iBarWidth, iBarMax; int ilenMaxLabel; int xl,x2,yl,y2; int iBarSizeScaled[maxnumbar] ; char sbuffer[10],*strptr; iNBars = 0; for(i=0;i < maxnumbar; i++){ iffiBarSize [i]!= 0) iNBars++; 346 iBarWidth = 400/iNBars; Поиск столбца, имеющего максимальную высоту iBarMax = iBarSize[0]; for(i=. 0; i < iNBars; if(iBarMax < iBarSize[i])iBarMax = iBarSize [i]; Преобразование максимального значения по у встроку strptr = itoa(iBarMax, sbuffer, 10); ilenMaxLabel = strlen(sbuffer); Масштабирование столбцов в массиве. Максимальная высота столбца - 270. for(i= 0; i < iNBars; i++) iBarSizeScaled[i] = iBarSize[i]* (270/iBarMax); Задание режима отображения и создание области просмотра dc.SetMapMode(MM ISOTROPIC) ; dc.SetWindowExt(640,400); dc.SetViewportExt(m cxClient, m cyClient); dc.SetViewportOrg(0, 0) ; Выводтекставокно, еслидлянегохватаетместаif(m cxClient > 200) ( newfont.CreateFont(12,12, 0, 0, FW BOLD, FALSE, FALSE, FALSE, OEM CHARSET, OOT DEFAULT PRECIS, CLIP DEFAULT PRECIS, DEFAOLT QUALITY, VARIABLE PITCH FF ROMAN, Roman ); oldfont = dc.SelectObject(Snewfont); dc.TextOut((300-(strlen(szTString)*10/2) ) , 15,szTString, strlen(szTString)); dc.TextOut((300-(strlen(szXString)* 10/2)) , 365,szXString, strlen(szXString)); dc.TextOut((90- ilenMaxLabel*12), 70,strptr, ilenMaxLabel); удалениеобъекташрифтаdc.SelectObject(oldfont); newfont.DeleteObject(), newfont.CreateFont(12,12,900,900,FW BOLD, FALSE, FALSE,.FALSE, OEM CHARSET, OUT DEFAULT PRECIS, CLIP DEFAULT PRECIS, DEFAULT QUALITY, VARIABLE PITCH FF ROMAN, Roman ); oldfont = dc.SelectObject(Snewfont) ; dc.TextOut(50,200+ (strlen(szXString)*10/2), szYString, strlen(szYString)); удаление объекта шрифта dc.SelectObject(oldfont) ; newfont.DeleteObj ect() ; } Рисование осей координат dc.MoveTo(99,49); dc.LineTo(99,350); dc.LineTo(500, 350); dc.MoveTo(99,350); Начальные значения xl = 100; yl = 350; x2 = xl + iBarWidth; Рисование столбцов for(i=0;i < iNBars; i++) { newbrush.CreateSolidBrush(dwColor[i]), oldbrush = dc.SelectObject(Snewbrush) y2 = 350 - iBarSizeScaled[i]; dc.Rectangle(xl,yl,x2, y2); xl = x2;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |