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