목록분류 전체보기 (138)
개발자 '쑥말고인절미'
https://sosobaba.tistory.com/8
계산 기록을 텍스트 파일로 생성해서 저장하는 것까지 성공했는데 계산식이 저장된 텍스트 파일을 불러오는 과정에서 계산식이 다 깨져서 출력됐다. 찾아보니 CStdioFile에는 유니코드 문자열 읽는 기능이 없다고 한다. 즉, 유니코드를 읽기 위해서는 CSdtioFile로 읽으려면 CStdioFileEx 이런걸 사용해야 한다고 한다. 흠... 아래 소스를 사용해서 텍스트 깨지는 현상을 해결했는데 뭐가 뭔지 잘 모르겠어서 기록으로 남기기로 했다. CString m_strPath, str; FILE* m_pFile; TCHAR BASED_CODE szFilter[] = _T("텍스트 파일(*.TXT) | *.TXT;*.txt; | 모든파일(*.*) |*.*|"); CFileDialog dlg(FALSE, _T("..

성공소스 if (nSelected == 1) { m_editResult.Format(_T("%f"), arithmetic.Add(m_editNum1, m_editNum2)); CString str; str.Format(_T("%f+%f="),m_editNum1,m_editNum2); file.WriteString(str+m_editResult + L"\n"); } 덧셈이 실행 됐을 때 CString의 결과값 이외에도 double값인 입력값 두개와 +, = 문자를 어떻게 텍스트 파일로 저장하는지가 문제였다. 한참 해매다가 책임님께서 해결해주셨는데 왜인지 나랑 동일하게(?) 소스를 작성하신거 같은데 돌아간다. 자 다음의 Format메소드를 보자 CString m_editResult; double m_edit..
MFC에서 사용하는 약자 - win : OS를 의미하는 Windows의 약자 - wnd : 프로그램의 영역을 표시하는 Window의 약자 CWinApp 클래스와 CWnd 클래스의 조합이 MFC 응용 프로그램을 구성하는 가장 최소 단위여서 이 두 클래스만 사용해도 MFC 응용 프로그램을 만들 수 있다. 단, 두 클래스를 직접 사용하면 기능에 대한 재정의가 불가능하기 때문에 파생클래스를 사용해야 한다. CWinApp 클래스로 윈도우 클래스를 등록하고, CWnd 클래스를 사용하여 메인 윈도우를 생성하면 프로그램에서 사용할 Window를 화면에 출력할 수 있다. CWinApp 클래스 : 응용 프로그램과 관련된 작업(Window Class 등록, 메인 윈도우 생성, 메시지 처리)을 처리하는 클래스이다. Windo..
MFC : 독자적인 개발 솔루션이 아니라 Win32 API를 C++문법을 사용해서 클래스화 해놓은 것 응용프로그램(Application Program) : OS에서 제공하는 프로그램과는 별도로 개발자들이 해당 OS에서 동작하는 프로그램을 개발한 것 Windows 데스크톱 응용 프로그램 : Windows OS에서 항상 볼 수 있는 그림판, 메모장, 탐색기 같은 프로그램들이다. 오랜기간동안 이런 프로그램들이 Win32 계열의 API 함수를 사용했기 때문에 Win32 API 응용 프로그램 또는 Win32 프로그램이라고 불렸는데 지금은 Windows 데스크톱 응용 프로그램이라고 명칭이 변경됐다. Win32 응용 프로그래밍 = Win32 프로그래밍 = Windows 데스크톱 응용 프로그래밍 Windows 프로그래..
noexcp : 생성자에는 예외가 없어야한다. 뭐 그런... 의미..? 생성자에 noexcp 붙어있던거 지우고 변수 추가할거 다 추가한 다음에 다시 noexcp을 붙여주면 변수추가가 안되게 바꿀 수 있다.... 왜 갑자기 2017부터 그런게 생겼는지 모르겠지만 하여튼 noexcp은 그런 아이다 noexcp은 사실 버그랍니다. 커뮤니티에서도 noexcp 없애달라고 싸웠다고한다(?) 22년도 버전 비쥬얼스튜디오에서는 없어졌다고 한다. CalculatorView.h와 CalculatorView.cpp에 noexcp 키워드가 있다. -------------------------------- Doc, View, MainFrm 클래스들은 MVC패턴의 모델, 뷰, 컨트롤러같은 역할을 한다. 근데 MVC패턴처럼 역할이..
MFC 컨트롤과 변수는 값을 고쳤다고 알아서 갱신되지 않기 때문에 UpdateData()를 호출해서 갱신해준다. UpdateData(TRUE)는 현재 컨트롤에 적힌 값을 변수로 넣어 갱신해준다. UpdateData(FALSE)는 변수에 적힌 값을 컨트롤에 표시하도록 갱신해준다. 참고링크 https://redssin.tistory.com/11 [ MFC ] UpdateData()함수란? UpdateData(TRUE); // 컨트롤의 값을 변수로 전송 UpdateData(FALSE); // 변수의 값을 컨트롤로 전송 UpdateData()는 컨트롤과 변수의 값이 변경 되면 갱신시켜주는 함수다. 기본값은 TRUE로 설정 되어있다. TRUE.. redssin.tistory.com
CArithmetic::Add(m_editNum1, m_editNum2); 위같이 작성하면 에러가 발생한다. 다른 소스파일의 클래스를 호출할 때 인스턴스를 생성하지 않고 호출해서 발생하는 것이다. 해결방법 CArithmetic arithmetic; arithmetic.Add(m_editNum1, m_editNum2); 참고링크 https://blog.naver.com/wlvkddlwkd/221357697892 [C/C++] error: 비정적 멤버 참조는 특정 개체에 상대적이어야 합니다 증상 원인 다른 소스파일의 클래스를 호출할 때 인스턴스 생성 없이 호출 해결방법 blog.naver.com