본문 바로가기

MFC39

MFC ] 통계자료, 스레드 Thread 를 사용하여 로드하기 깃허브 주소 : https://github.com/joeteo/CarAccidentList.git GitHub - joeteo/CarAccidentList Contribute to joeteo/CarAccidentList development by creating an account on GitHub. github.com 무거운 프로세스나 무한루프로 동작해야할 작업이 있다면 쓰레드를 생성해서 백그라운드로 작업을 넘기면 된다. 이전에 만든 교통사고 통계조사 프로그램에서 시간이 오래 걸릴 수 있는 파일 불러오기 부분을 스레드를 사용한 버전으로 수정하였다. UINT Load(LPVOID LpData) { CCarAccidentListDlg* target = (CCarAccidentListDlg*)(LpData.. 2022. 7. 9.
MFC ] 통계자료, 자식 다이얼로그 생성하고 부모 다이얼로그와 상호참조하기 리소스뷰 다이얼로그에서 리소스 추가 다이얼로그 새로 만들기 자식 다이얼로그 ID 바꿔주기 자식 다이얼로그의 클래스 추가 CNewDlg 라는 이름으로 생성하고 기본 클래스는 CDialogEx가 된다. 자식 다이얼로그에도 리스트 컨트롤을 만들고 변수 추가 자식 다이얼로그에는 처음 클래스 생성시 생성자, 소멸자, DoDataExchange 함수밖에 없다. 필요한 경우 가상함수에서 OnInitDialog와 메시지에서 Ondestroy를 추가한다. 부모 다이얼로그 .cpp 파일에서 자식 다이얼로그의 헤더를 추가하고 코드를 작성한다. 자식 다이얼로그 클래스를 생성하고 자식에게 부모 다이얼로그의 포인터를 넘겨주고 키워드 검색결과가 담긴 벡터를 주소로 넘긴 후 DoModal() 을 호출하여 새 창을 연다. Modal .. 2022. 7. 8.
MFC ] new 로 동적할당 한 건 창이 닫히기 전에 OnDestroy() 에서 delete로 해제하기 생성자에서 동적할당한건 소멸자에서 해제하면 될텐데 생성자가 아닌 곳에서 동적할당 한 것인데 할당해제할 시기가 마땅치 않은 경우 창이 닫히기 전에 해제하면 다음과 같이 해제하면 메모리 누수를 막을 수 있다. 프로젝트 - 클래스 마법사 해당되는 다이얼로그에서 메시지, WM_DESTORY 를 추가한다. 아래와 같이 OnDestory() 함수 안에 new 로 동적할당 한 것을 모두 delete 하는 코드를 추가한다. 큰 의미는 없지만 delete 후에 .clear() 까지 해줬다. void CCarAccidentListDlg::OnDestroy() { if (DC.getList().size() != 0) { for (int i = 0; i < DC.getList().size(); i++) { delete DC... 2022. 7. 6.
MFC ] CString -> string 변환, string-> CString 변환 CString -> string변환 CString cstr = _T("hello"); string str = CT2CA(cstr); string -> CString 변환 string str = "HELLO"; CString cstr; cstr = str.c_str(); 참고로 이거는 CString 타입을 선언 동시 초기화로 변환하면서 대입할 수가 없어서 위에처럼 단계를 거쳐서 했다. 2022. 7. 4.
MFC ] 통계 데이터 List Control (리스트 컨트롤) 에 로드하기 Data.h #pragma once #include #include using namespace std; #define COLUMN_NUMBER 13 #define LOCATION_NUMBER 11 class Data { private: CString siDo; CString siGunGoo; int accidentCount[LOCATION_NUMBER]; public: Data(string _siDo, string _siGunGoo, string* _accidentCount); CString& GetSiDo(); CString& GetSiGunGoo(); int GetAccidentCount(int idx); }; Data.cpp #include "pch.h" #include "Data.h" Data:.. 2022. 7. 4.
MFC ] CString -> int 변환, int -> CString 변환 CString -> int 변환 CString m_val1 = _T("1234"); int temp=0; temp = _ttoi(m_val1); int -> CString 변환 int result = 4321; CString m_result; m_result.Format(_T("%d"), result); 2022. 7. 2.
MFC ] 간단한 음료수 자판기 + Static Text 글씨 크기 키우기 + 버튼 캡션 개행(\n)하기 해당 Static Text의 ID를 변경하여 특정하고 OnInitDialog()에 다음 내용 추가 CFont font; LOGFONT logfont; ::ZeroMemory(&logfont, sizeof(logfont)); logfont.lfHeight = 18; font.CreateFontIndirect(&logfont); GetDlgItem(IDC_STATIC_TITLE)->SetFont(&font);; font.Detach(); 버튼 캡션에 개행 넣기 // VDMachineDlg.h: 헤더 파일 // #pragma once #define COLA_PRICE500 #define CIDAR_PRICE600 #define FANTA_PRICE700 #define WATER_PRICE400 // CVDMa.. 2022. 7. 2.
MFC ] 간단한 계산기 + 라디오 버튼 체크상태 확인하기 라디오 버튼 체크상태 확인하기 ((CButton*)GetDlgItem(IDC_RADIO1))->GetCheck() // SimpleCalDlg.h: 헤더 파일 // #pragma once // CSimpleCalDlg 대화 상자 class CSimpleCalDlg : public CDialogEx { // 생성입니다. public: CSimpleCalDlg(CWnd* pParent = nullptr);// 표준 생성자입니다. // 대화 상자 데이터입니다. #ifdef AFX_DESIGN_TIME enum { IDD = IDD_SIMPLECAL_DIALOG }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 지원입니.. 2022. 7. 2.
MFC ] 새 프로젝트 만들기, 환경설정 비주얼 스튜디오에서 새 프로젝트로 MFC앱을 선택하고 없으면 '추가 도구 및 기능 설치'를 한다. 애플리케이션 종류는 대화 상자 기반 선택 C++ 개발환경으로 바꾸기 나중에 다시 일반 설정으로 돌아갈 수 있다. 화면 오른쪽에 자주 쓰는 도구상자와 속성 도킹해두기 리소스 뷰 아래 경로 또는 리소스파일.rc를 클릭해 GUI를 볼 수 있다. 2022. 7. 2.