|
Программирование >> Процедурные приложения
Круговые диаграммы широко применяются в коммерческих приложениях при создании различного рода презентаций. В представленной ниже программе будут объединены многие приемы, рассмотренные в этой и предыдущей главах. В частности, в программе задействованы меню и разработанные нами диалоговые окна Aboutи PieChartData. В окне ввода данных пользователю будет предложено задать до десяти значений, определяющих размеры секторов. На основании введенных целочисленных значений будут вычислены угловые размеры секторов в пропорции к общему размеру круга - 360 градусов. Минимальный размер сектора - 1 градус. Для закрашивания секторов определен массив IColor[] с набором цветов. Пользователь может также ввести подпись к диаграмме. Для работы над данным приложением необходимо иметь четыре файла: PIE.H, PIE.RC, PIE.Cи PIE.CUR. Последний, содержащий изображение указателя мыши, вы можете разработать самостоятельно с помощью редактора ресурсов. Ниже показан текст файла заголовков PIE.H, в котором содержатся идентификаторы команд меню и элементов управления диалоговых окон:
В файле ресурсов PIE.RC описываются меню и два диалоговых окна (более подробно об этих ресурсах говорилось в предыдущей главе), а также ряд вспомогательных ресурсов. #include resource.h #define APSTUDIO READONLY SYMBOLS / #include pie.h #define APST0DIO HIDDEN SYMBOLS #include windows. h tundef APSTUDIO HIDDEN SYMBOLS tundef APSTUDIO READONLY SYMBOLS Ресурсы для английского (США) языка #if !defined(AFX RESOURCE DLL) defined (AFX TARG END) - tifdef WIN32 LANGUAGE LANG ENGLISH, SUBLANG ENGLISH US tpragma code page (1252) #endif WIN32
Указатель м1ши PIECURSOR CURSOR DISCARDABLE pie.cur
Меню I WS CAPTION I WS SYSMENU PIEMENU MENU DISCARDABLE BEGIN POPUP Pie Chart Data BEGIN MENUITEM About... , IDM ABOUT MENUITEM Input... , IDM INPUT MENUITEM Exit , IDM EXIT END END / Диалоговые окна ABOUTDLGBOX DIALOG DISCARDABLE 50,300, 180, STYLE DS MODALFRAME WS POPUP WS VISIBLE CAPTION About FONT 8, MS Sans Serif BEGIN CTEXT Microsoft GPie Chart Program , -1,3, 29,176,10 CTEXT by William H. Murray and Chris H. Pappas , -1, 3, 16,176,10 PUSHBUTTON ОК , IDOK, 74,51,32,14 PIEDLGBOX DIALOG DISCARDABLE 93,37,195,159 STYLE DS MODALFRAME WS POPUP I WS VISIBLE CAPTION Pie Chart Data FONT 8, MS Sans Serif BEGIN GROUPBOX Chart Title: ,100, 5, 3, 182, 30, GROUPBOX Pie Wedge Sizes: ,101, 3, 34,187, LTEXT Title: , -1,10,21,30,8 EDITTEXT DMJTITLE, 40,18,140, 12 WS CAPTION WS SYSMENU WSJTABSTOP 95,WS TABSTOP LTEXT Wedge #1 LTEXT Wedge #2 LTEXT Wedge #3 LTEXT Wedge t4 LTEXT Wedge #5 LTEXT Wedge #6 LTEXT Wedge #7 LTEXT Wedge #8 LTEXT Wedge #9 LTEXT Wedge #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, EDITTEXT DM P10, PUSHBUTTON ОК , -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 10, 10, 10, 10, 106,50, 106,65, 106,80, 106,95, 50, 65, 80, 95, 110, -1,102, 110, 40,8, NOT WS GROUP 40,8. NOT WS GROUP 40, 8, NOT WS GROUP 40, 8, NOT WS GROUP 40,8, NOT WS GROUP 40,8, NOT WS GROUP 40,8. NOT WS GROUP 40,8, NOT WS GROUP 40, 45, , NOT WS GROUP NOT WS GROUP 55, 55, 55, 55, 55, 150, 150, 45, 60, 75, 90, 105, 44, 61, 30,12 30, 12 30, 12 30, 12 30, 12 30,12 30,12 150, 76, 30,12 149,91, 30,12 149,106,30, 12 IDOK, 39,135, 24,14 PUSHBUTTON Cancel , IDCANCEL, 122, END tifdef APSTUDIO INVOKED 304 136,34,14 / 1 TEXTINCLUDE DISCARDABLE BEGIN resource.h\0 END 2 TEXTINCLUDE DISCARDABLE BEGIN #include pie.h \r\n #define APSTUDIO HIDDEN SYMBOLS\r\n #include windows.h \r\n . #undef APSTUDIO HIDDEN SYMBOLS\r\n \0 END 3 TEXTINCLUDE DISCARDABLE BEGIN \r\n \0 END #endif APSTUDIO INVOKED #endif Ресурсы для английского (США) языка Следует помнить, что файл PIE.RC- это просто текстовый эквивалент описаний меню и диалоговых окон, созданных с помощью редактора ресурсов (см. предыдущую главу). Файл PIE.С содержит основной текст программы. Несмотря на достаточно большой его размер, вы легко можете найти здесь знакомые блоки из файла SWP.C. * PIE.С * Создание круговых диаграмм. #include <windows.h> #include <string.h> #include <math.h> #include pie.h #define radius 180 #define maxnurawedge 10 #define pi 3.14159265359 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK AboutDlgProc(HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK PieDlgProc(HWND, UINT, WPARAM, LPARAM); char szProgName[] = ProgName ; char szApplName[] = PieMenu ; char szCursorName[] = PieCursor ; char szTString[80] = (piechart title area) ; unsigned int iwedgesize[maxnumwedge] = {5,20,10,15}; long IColor[maxnumwedge] = {OxOL,OxFFL, OxFFOOL, OxFFFFL, OxFFOOOOL, OxFFOOFFL, OxFFFFOOL, OxFFFFFFL, OxSOSOL, Ox808080L); int WINAPI WinMain(HINSTANCE hlnst, HINSTANCE hPrelnst, LPSTR IpszCmdLine, int nCmdShow) { HWND hWnd; MSG IpMsg; WNDCLASS wcApp; wcApp.lpszClassName = szProgName; wcApp.hlnstance = hlnst; wcApp.lpfnWndProc = WndProc; wcApp.hCursor = LoadCursor (hlnst, szCursorName); wcApp.hlcon = Ldadlcon(hlnst,szProgName); wcApp.lpszMenuName szApplName; wcApp.hbrBackground = GetStockObject(WHITE BRUSH); wcApp.style = CS HREDRAW CS VREDRAW; wcApp.cbClsExtra = 0; wcApp.cbWndExtra 0; if (IRegisterClass(SwcApp)) return 0;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |