LTW-2

 

Source

#include<afxwin.h>

#include "Header.h"

#include "resource.h"

#include "Dialog1.h"

#include "CObjTest.h"

 

CMyApp myApp;

float x = 800, y = 800;

int c_vuong = 0;

int m_vitrix = 0, m_vitriy = 100;

int _x = 0, _y = 0;

 

BOOL CMyApp::InitInstance() {

       m_pMainWnd = new CMainWindow;

       m_pMainWnd->ShowWindow(m_nCmdShow);

       m_pMainWnd->UpdateWindow();

       return TRUE;

}

 

BEGIN_MESSAGE_MAP(CMainWindow, CFrameWnd)

       ON_COMMAND(ID_CONFIG, &CMainWindow::OnUpdateConfig)

       ON_COMMAND(ID_LOAD, &CMainWindow::OnUpdateLoad)

       ON_COMMAND(ID_SAVE, &CMainWindow::OnUpdateSave)

       ON_WM_KEYDOWN()

       ON_WM_PAINT()

END_MESSAGE_MAP()

CMainWindow::CMainWindow()

{

       //Create(NULL, _T("Chao NHD"));

       LoadFrame(IDR_MENU1, WS_SYSMENU, NULL, NULL);

}

void CMainWindow::OnUpdateConfig() {

       Dialog1 myDlg;

       myDlg.DoModal();

       if (IDOK) {

             c_vuong = myDlg.d_canh;

             m_vitrix = myDlg.d_vitrix;

             m_vitriy = myDlg.d_vitriy;

             Invalidate();

       }

}

void CMainWindow::OnUpdateLoad() {

       CFile file;

       file.Open(L"infoStatus.txt", CFile::modeRead);

       CArchive ar(&file, CArchive::load);

       CObjTest info;

       info.Serialize(ar);

       ar.Close();

       file.Close();

 

       c_vuong = info.c_canh;

       m_vitrix = info.c_vitrix;

       m_vitriy = info.c_vitriy;

       _x = info.c_x;

       _y = info.c_y;

       Invalidate();

       MessageBox(CString(_T("Da cap nhat trang thai!")), _T("Thong bao"), MB_OK);

}

void CMainWindow::OnUpdateSave() {

       CObjTest info;

       CFile file;

       file.Open(L"infoStatus.txt", CFile::modeCreate | CFile::modeWrite);

       CArchive ar(&file, CArchive::store);

       info.c_canh = c_vuong;

       info.c_vitrix = m_vitrix;

       info.c_vitriy = m_vitriy;

       info.c_x = _x;

       info.c_y = _y;

       info.Serialize(ar);

       ar.Close();

       MessageBox(CString(_T("Luu trang thai thanh cong!")), _T("Thong bao"), MB_OK);

}

void CMainWindow::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {

       if (nChar == VK_F1) {

             _x += 30;

             m_vitrix += 30;

       }

       if (nChar == VK_F2) {

             _x -= 30;

             m_vitrix -= 30;

       }

       if (nChar == VK_F3) {

             _y += 30;

             m_vitriy += 30;

       }

       if (nChar == VK_F4) {

             _y -= 30;

             m_vitriy -= 30;

       }

 

       Invalidate();

}

void CMainWindow::OnPaint() {

       CPaintDC dc(this);

       CRect crect;

       GetClientRect(&crect);

       x = crect.Width();

       y = crect.Height();

       dc.Rectangle(x - 200, 0, x, 100);//vung 2, kich thuoc 100x200

       CString msg;

       msg.Format(_T("kich thuoc:%dx%d"), c_vuong, c_vuong);

       dc.TextOut(x - 155, 45, msg);

       dc.Rectangle(0, 0, x - 200, 100);//vung 3

       dc.TextOut((x - 200) / 2 - 50, 45, CString(_T("NHD")));

       dc.Rectangle(0 + _x, 100 + _y, x + _x, y + _y);//vung 1

       if (m_vitrix >= (0 + _x) && m_vitrix <= (x + _x)

             && m_vitriy >= (100 + _y) && m_vitriy <= (y + _y)) {

             dc.Rectangle(m_vitrix, m_vitriy, m_vitrix + c_vuong, m_vitriy + c_vuong);

       }

       else {

             MessageBox(CString(_T("hinh vuong khong duoc ve ben ngoai vung 1!")), _T("Thong bao"), MB_OK);

       }

}

-------------------------------------

Header.h

#pragma once

class CMainWindow : public CFrameWnd

{

public:

       CMainWindow();

       afx_msg void OnPaint();

       afx_msg void OnUpdateConfig();

       afx_msg void OnUpdateLoad();

       afx_msg void OnUpdateSave();

       afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);

       DECLARE_MESSAGE_MAP()

};

class CMyApp : public CWinApp

{

public:

       virtual BOOL InitInstance();

};

----------------------------------------------------------------

Dialog1.h

#pragma once

#include "resource.h"

class Dialog1 : public CDialog

{

public:

       Dialog1(CWnd* pParent = nullptr);   // standard constructor

       virtual ~Dialog1();

       enum { IDD = IDD_DIALOG1 };

 

protected:

       virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

       DECLARE_MESSAGE_MAP()

public:

       int d_canh = 100;

       int d_vitrix = 100;

       int d_vitriy = 100;

};

-------------------------------------------------

Dialog1.cpp

#include <afxwin.h>

#include "resource.h"

#include "Dialog1.h"

#include "afxdialogex.h"

 

Dialog1::Dialog1(CWnd* pParent /*=nullptr*/)

       : CDialog(IDD_DIALOG1, pParent)

{

 

}

 

Dialog1::~Dialog1()

{

}

 

void Dialog1::DoDataExchange(CDataExchange* pDX)

{

       DDX_Text(pDX, IDC_EDIT1, d_canh);

       DDX_Text(pDX, IDC_EDIT2, d_vitrix);

       DDX_Text(pDX, IDC_EDIT3, d_vitriy);

 

       CDialog::DoDataExchange(pDX);

}

 

BEGIN_MESSAGE_MAP(Dialog1, CDialog)

END_MESSAGE_MAP()

 

---------------------------------------------------------

CObjTest.h

#pragma once

#include <afx.h>

 

class CObjTest :public CObject

{

public:

       int c_canh, c_vitrix, c_vitriy, c_x, c_y;

       CObjTest(void);

       void Serialize(CArchive& ar);

       DECLARE_SERIAL(CObjTest);

};

 

---------------------------------------------------------12

CObjTest.cpp

#include "CObjTest.h"

#include "afxwin.h"

 

CObjTest::CObjTest() {

 

}

IMPLEMENT_SERIAL(CObjTest, CObject, 0)

void CObjTest::Serialize(CArchive& ar) {

       CObject::Serialize(ar);

       if (ar.IsStoring()) ar << c_canh << c_vitrix << c_vitriy << c_x << c_y;

       else ar >> c_canh >> c_vitrix >> c_vitriy >> c_x >> c_y;

}

txt

Mới hơn Cũ hơn