소연의_개발일지
article thumbnail
[C++] MFC 버튼 생성, 에딧컨트롤 생성, 이벤트 연결, 계산기 만들기
개발공부/C++ 2023. 9. 16. 19:41

버튼 생성하기 드래그 - 앤 드롭 기능으로 버튼을 끌어와서 폼에 넣는다. 버튼 id는 중복이 불가하며 대문자로만 작성할 수 있다. (파이큐티의 객체명과 비슷한 듯) 캡션은 버튼에 작성되는 부분을 수정할 수 있다. BTN_TEST 라고 작성한 후 엔터를 치니 그에 맞게 버튼이 수정됨을 확인할 수 있다. 버튼 이벤트 생성하기 버튼에 클릭 이벤트를 설정하는 방법은 두 가지가 있다. 1. 버튼을 더블클릭해서 바로 더블클릭했을 때 코드로 이동한다. 2. 버튼을 우클릭 - [이벤트 처리 추가] 클릭 - 해당하는 설정값을 클릭한다. 이벤트처리기에서는 어떤 클래스에서 동작할 것인지, 버튼에 대한 이벤트 발생 유형은 어떻게 할 것인지(클릭, 더블클릭, 버튼에 FOCUS,,,)를 설정할 수 있다. 클릭을 의미하는 [BN_..

article thumbnail
[C++] MFC 콘솔창 띄우기, 특정 변수의 값 콘솔창 출력
개발공부/C++ 2023. 9. 16. 16:43

콘솔창 띄우기 디버그 헤더 파일에 #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") 을 작성해 주면 된다. 이렇게 작성해 주자 #ifdef _DEBUG #define new DEBUG_NEW #pragma comment(linker, "/entry:WinMainCRTStartup /subsystem:console") #endif /Debuf나 Release모드 상관없이 콘솔을 실행하고 싶으면 #ifdef, #endif 지우고 #pragma ~ 만 써주면 된다. 특정 변수의 값을 콘솔창에 출력 아래와 같이 함수 위에 추가해 준다. 파일 선언부에 작성해 줘도 됨 #include //cout으로 출력하기 위해 적용예시 #include..

article thumbnail
[C++] MFC 개발환경 설정하기
개발공부/C++ 2023. 9. 15. 17:24

개발환경 설정 C++ 로 새 프로젝트 만들기를 해서 mfc를 검색했는데 아무것도 나오지 않았다... 추가 도구 및 설치를 클릭하여 설치환경으로 들어간다. 왼쪽의 [C++을 사용한 데스크톱 개발] 을 클릭하고, 우측의 설치 세부 정보에서 MFC가 있는 체크박스를 클릭하여 하단의 [수정] 버튼을 눌러 설치해 준다. 다시 Visual studio를 열어서 [새 프로젝트 만들기] 버튼을 클릭하니 MFC앱 새로만들기가 나온다. [MFC 앱] 을 클릭하고 → [다음]을 눌러 프로젝트 구성으로 이동한다. 프로젝트 이름을 작성하고 위치를 설정한다. 그 다음 애플리케이션 종류 옵션을 설정한다. 어플리케이션 종류에서 단일문서, 여러문서, 대화상자 기반등이 있는데 가장 편한 [대화 상자 기반]을 선택한다. [마침]을 클릭하..

[Python] python에서 바이너리 형식의 파일 인코딩,디코딩하기
개발공부/Python 2023. 9. 14. 20:35

바이너리 디코딩이란? 바이너리 디코딩은 이진 데이터를 사람이 읽을 수 있는 형식으로 변환하는 프로세스를 의미한다. Python에서 디코딩하는 방법은 여러가지가 있는데, 그 중 3가지를 소개해 보려고 한다. 소켓통신할 때 이미지를 수신, 전송할 때 base64모듈을 사용해본적은 있지만 아직도 조금 생소한 감이 있다. struct 모듈 사용 struct 모듈은 Python에서 이진 데이터를 특정 형식에 따라 인코딩하는 데 사용되는 모듈이다. 이 모듈을 사용하여 바이너리 데이터를 인코딩하려면 struct.pack()함수를 사용한다. struct.pack()을 사용한 인코딩 struct.pack() 함수는 지정된 형식 문자열을 기반으로 바이너리 데이터를 패킹하여 인코딩한다. 형식 문자열은 인코딩하려는 데이터의 ..

article thumbnail
[c# 오류]System.InvalidOperationException: '많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다.'
개발공부/C# 2023. 9. 13. 16:17

오류 내용 System.InvalidOperationException: '많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다.' 오류 이유 WPF나 실버라이트에서 타이머는 다른 쓰래드기때문에 UI쓰래드를 접근할때 에러가 난다고 한다. 이럴때는 윈폼과 마찬가지로 인보크를 사용하여 작업을 해야 한다. 해결 방법 // 다른 쓰레드에서 UI 쓰레드 접근하기 => 윈폼과 마찬가지로 인보크를 사용하여 작업 Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { // 실행 할 부분 넣기 })); 이렇게 처리하니 해결되었다. invoke는 동기적으로 실행된다고 한다. 아직 c#이 어렵다.. 참고 링크 https://learn..