0001:
0002:
0003:
0004: #include "stdafx.h"
0005: #include "main.h"
0006: #include "mainDlg.h"
0007: #include "render.h"
0008:
0009: #ifdef _DEBUG
0010: #define new DEBUG_NEW
0011: #undef THIS_FILE
0012: static char THIS_FILE[] = __FILE__;
0013: #endif
0014:
0015:
0016:
0017:
0018: class CAboutDlg : public CDialog
0019: {
0020: public:
0021: CAboutDlg();
0022:
0023:
0024:
0025: enum { IDD = IDD_ABOUTBOX };
0026:
0027:
0028:
0029:
0030: protected:
0031: virtual void DoDataExchange(CDataExchange* pDX);
0032:
0033:
0034:
0035: protected:
0036:
0037:
0038: DECLARE_MESSAGE_MAP()
0039: };
0040:
0041: CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
0042: {
0043:
0044:
0045: }
0046:
0047: void CAboutDlg::DoDataExchange(CDataExchange* pDX)
0048: {
0049: CDialog::DoDataExchange(pDX);
0050:
0051:
0052: }
0053:
0054: BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
0055:
0056:
0057:
0058: END_MESSAGE_MAP()
0059:
0060:
0061:
0062:
0063: CMainDlg::CMainDlg(CWnd* pParent )
0064: : CDialog(CMainDlg::IDD, pParent)
0065: {
0066:
0067:
0068:
0069: m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
0070: }
0071:
0072: void CMainDlg::DoDataExchange(CDataExchange* pDX)
0073: {
0074: CDialog::DoDataExchange(pDX);
0075:
0076:
0077: }
0078:
0079: BEGIN_MESSAGE_MAP(CMainDlg, CDialog)
0080:
0081: ON_WM_SYSCOMMAND()
0082: ON_WM_PAINT()
0083: ON_WM_QUERYDRAGICON()
0084: ON_BN_CLICKED(IDC_BUTTON1, OnButtonRender)
0085:
0086: END_MESSAGE_MAP()
0087:
0088:
0089:
0090:
0091: BOOL CMainDlg::OnInitDialog()
0092: {
0093: CDialog::OnInitDialog();
0094:
0095:
0096:
0097:
0098: ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
0099: ASSERT(IDM_ABOUTBOX < 0xF000);
0100:
0101: CMenu* pSysMenu = GetSystemMenu(FALSE);
0102: if (pSysMenu != NULL)
0103: {
0104: CString strAboutMenu;
0105: strAboutMenu.LoadString(IDS_ABOUTBOX);
0106: if (!strAboutMenu.IsEmpty())
0107: {
0108: pSysMenu->AppendMenu(MF_SEPARATOR);
0109: pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
0110: }
0111: }
0112:
0113:
0114:
0115: SetIcon(m_hIcon, TRUE);
0116: SetIcon(m_hIcon, FALSE);
0117:
0118:
0119:
0120: return TRUE;
0121: }
0122:
0123: void CMainDlg::OnSysCommand(UINT nID, LPARAM lParam)
0124: {
0125: if ((nID & 0xFFF0) == IDM_ABOUTBOX)
0126: {
0127: CAboutDlg dlgAbout;
0128: dlgAbout.DoModal();
0129: }
0130: else
0131: {
0132: CDialog::OnSysCommand(nID, lParam);
0133: }
0134: }
0135:
0136:
0137:
0138:
0139:
0140: void CMainDlg::OnPaint()
0141: {
0142: if (IsIconic())
0143: {
0144: CPaintDC dc(this);
0145:
0146: SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
0147:
0148:
0149: int cxIcon = GetSystemMetrics(SM_CXICON);
0150: int cyIcon = GetSystemMetrics(SM_CYICON);
0151: CRect rect;
0152: GetClientRect(&rect);
0153: int x = (rect.Width() - cxIcon + 1) / 2;
0154: int y = (rect.Height() - cyIcon + 1) / 2;
0155:
0156:
0157: dc.DrawIcon(x, y, m_hIcon);
0158: }
0159: else
0160: {
0161: CDialog::OnPaint();
0162:
0163: RECT r;
0164: int offset = 10;
0165: int x = 120;
0166: CDC *pCdc= this->GetDC();
0167: this->GetClientRect(&r);
0168: int h = r.bottom-r.top - 2*offset;
0169: int w = r.right-r.left - offset - x;
0170: if(h<0)h=0;
0171: if(w<0)w=0;
0172: if(h<w)w=h;else h=w;
0173: char *pData = Render::GetDataPointer();
0174:
0175: for(int j=0;j<h;j++){
0176: for(int i=0;i<w;i++){
0177: int no = (j*Render::RENDER_HEIGHT/h)*Render::RENDER_WIDTH
0178: + i*Render::RENDER_WIDTH/w;
0179: pCdc->SetPixel(i+x,j+offset,RGB(
0180: pData[4*no+0],
0181: pData[4*no+1],
0182: pData[4*no+2],
0183: ));
0184: }
0185: }
0186: ReleaseDC(pCdc);
0187: }
0188: }
0189:
0190:
0191:
0192: HCURSOR CMainDlg::OnQueryDragIcon()
0193: {
0194: return (HCURSOR) m_hIcon;
0195: }
0196:
0197: void CMainDlg::OnButtonRender()
0198: {
0199:
0200: Render::Render();
0201: this->OnPaint();
0202: }
0203:
0204: