Читайте также:
|
|
В файле 24FOURR.H определены пять констант. IDM_FOUR, IDM_ABOUT и IDM_EXIT используются для обозначения пунктов меню, a IDD_TERMS и IDD_TITLE необходимы для окна диалога ввода данных.
файл WIN32MFCFOUR.DLG содержит описания окна диалога "О Программе" и окна диалога для ввода данных.
131. Научная графика с использованием ресурсов: меню, окна диалога и мультимедийного звука. Создание нового класса CMainWnd. Определение размера рабочей области окна. Рисование графика. Окно диалога "О Программе". Окно диалога для ввода данных. Обработка функции OnExit().
Приложение рисует в окне сумму ряда Фурье. Этот пример продемонстрирует, как с использованием Microsoft Foundation Classes для Windows 95 и Windows NT применить три ресурса: меню, окно диалога и мультимедийный звук. Чтобы воспроизвести звук, компьютер должен быть снабжен соответствующими средствами мультимедиа.
Для построения программы требуется несколько файлов. Звуковой двоичный файл WIN32MFCFOUR.WAV вам придется создать самостоятельно.
Ниже приведен заголовочный файл WIN32MFCFOURR.H.
#define IDM_FOUR 100
В следующем файле находятся описания классов для этой программы. Этот файл называется WIN32MFCFOUR.H.
class CMainWnd: public CFrameWnd
{
public:
CMainWnd();
afx_msg void OnPaint();
afx_msg void OnSize(UINT,int,int);
};
class CNTApp: public CWinApp
{
public:
virtual BOOL InitInstance();
};
Описания окна диалога программы приведены в файле WIN32MFCFOUR.DLG.
DLGINCLUDE RCDATA DISCARDABLE
{
"WIN32MFCFOURR.H\0"
}
AboutBox DIALOG 14,22,200,75
LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL
STYLE WS_BORDER|WS_CAPTION|WS_DLGFRAME|WS_POPUP
CAPTION "About Box"
FONT 8,"MS Sans Serif"
{
CTEXT "A MFC Fourier Series With",-1,30,5,144,8
}
FourierData DIALOG 74,21,142,70
LANGUAGE LANG_NEUTRAL,SUBLANG_NEUTRAL
STYLE DS_MODALFRAME|WS_POPUP|WS_VISIBLE|
WS_CAPTION|WS_SYSMENU
CAPTION "Forier Series Information"
FONT 8,"MS Sans Serif"
{
LTEXT "Title: ",-1,6,5,28,8
}
В файле описания ресурсов WIN32MFCFOUR.RC находится описание меню приложения.
#include <windows.h>
#include "WIN32MFCFOURR.H"
FourierMenu MENU
BEGIN
POPUP "Fourier Data"
BEGIN
MENUITEM "Fourier About...",IDM_ABOUT
END
END
rcinclude WIN32MFCFOUR.dlg
CNTApp theApp;
CMainWnd::CMainWnd()
{
Create((AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,
LoadCursor(NULL,IDC_CROSS),
(HBRUSH) GetStockObject(LTGRAY_BRUSH),NULL)),
"A 32-bit MFC Fourier Series Under Windows 95 and NT",
WS_OVERLAPPEDWINDOW,rectDefault,NULL,"FourierMenu");
}
void CMainWnd::OnPaint()
{
CPaintDC dc(this);
DWORD dwBColor= RGB(0,0,0); // черный
int i,j,ltitle,ang;
double y,yp;
CFont newfont;
CFont* oldfont;
// создание поля для рисования
dc.SetMapMode(MM_ISOTROPIC);
dc.SetWindowExt(500,500);
dc.SetViewportExt(m_cxClient,-m_cyClient);
dc.SetViewportOrg(m_cxClient/20,m_cyClient/2);
ang= 0;
yp= 0.0;
// оси координат
dc.MoveTo(0,240);
dc.LineTo(0,-240);
dc.MoveTo(0,0);
dc.LineTo(400,0);
dc.MoveTo(0,0);
// рисуем
for(i= 0; i<= 400; i++)
{
for(j= 1; j<= nterms; j++)
{
y= (150.0/((j*2.0)-1.0))*sin(((j*2.0)-1.0)*0.015708*ang);
yp= yp+ y;
}
dc.LineTo(i,(int) yp);
yp-= yp;
ang++;
}
// готовим ресурс для мультимедийного звука
// проигриваем звук после завершения рисования
sndPlaySound(szWave, SND_SYNC);
//oldfont= dc.SelectObject(&newfont);
// удалям шрифт
dc.SelectObject(oldfont);
newfont.DeleteObject();
}
Создание нового класса CMainWnd.
Можно задать параметры объекта CMainWnd путем создания регистрационного класса при помощи AlxRegisterWndClass(). Регистрационный класс имеет много полей, четыре из которых легко изменить: стиль, курсор, фон и значок свернутого окна.
Дата добавления: 2015-12-08; просмотров: 60 | Нарушение авторских прав