본문 바로가기

Program/C++ MFC14

[C++ MFC] DLLNotFoundException 오류 해결 방법 [문제상황]필자는 제어 프로그래머입니다. C++ 프로젝트를 갈아엎고 C#으로 리빌딩하는 중 발생한 문제에 대한 해결책 기록입니다. 개인적으로 기록하여 기억에 오래 남기기 위함으로 두서가 없을 수 있습니다.일단 문제가 발생된 시점은 서보드라이버 컨트롤을 위하여 해당되는 보드의 라이브러리를 끌어와 사용하는 과정에서 발생된 오류입니다. 문제점이 발생된 계기는 새로운 PC를 셋업 하며 발견되었다는 점 참고 부탁드립니다.기존에 셋업된 PC에서는 정상 동작하지만 새로운 PC에서는 동작하지 않아서 디버깅을 진행하였습니다. 결과적으로 문제는 컨트롤보드 제조사에서 제공하는 API를 불러오는 과정에서 참조 오류가 발생되었습니다.  [해결 순서]구글링을 진행하다보니 유용한 글을 발견했습니다. 먼저 삽질을 통해 해결 방법을 .. 2024. 6. 30.
[C++ MFC] OnCtlColor 메모리 누수 확인 방법 및 조치 [OnCtlColor 함수란]MFC 프로그램을 하다 보면 화면 구성을 조금 더 깔끔하고 간략하면서 직관적으로 구성하기 위해 노력을 많이 하게 됩니다. 그러다 보면 꼭 마주칠 수밖에 없는 메시지 함수가 바로 OnCtlColor함수입니다. OnCtlColor함수는 시스템 메시지를 이용해서 컨트롤의 속성을 변경해 주는 함수입니다. 해당 부분에서 컨트롤의 nID (Resource.h 참조)를 가져와서 해당 컨트롤의 속성값을 변경할 수 있는 겁니다. 여기서 변경되는 색상 관련 속성값은 리소스뷰에서 작업할 수 없어 별도로 코드를 구성해야 합니다. 그런데 OnCtlColor를 사용할 때 매우 중요하게 고려해야 하는 부분이 있습니다. 이 함수를 잘못 사용하게 되면 치명적인 메모리 누수가 발생되어 프로그램이 종료되어도 .. 2024. 6. 27.
[C++ MFC] UpdateData() 함수 사용하는 이유 / 사용하는 방법 [UpdateData 함수]이 함수는 MFC를 개발하면 필수적으로 알고 있어야 하는 함수입니다. 보통 C#이나 다른 언어는 이벤트, 비동기 시퀀스, 바인딩을 거치면 별도로 업데이트를 진행하지 않아도 변수와 컨트롤이 연동되어 데이터가 자동으로 갱신되는데 MFC는 직접 업데이트를 지시해야만 연동이 될 수 있습니다.참으로 불편하기 그지없지만 C# 내부코드로 들어가보면 비동기나 이벤트 등도 모두 Update와 같은 시퀀스를 내포하고 있음을 알 수 있습니다. 일단 별로 알고싶진 않지만 함수 원형은 알고 있어야 합니다. BOOL UpdateData (BOOL bSaveAndValidate = TRUE); 함수 원형에서 알 수 있듯 리턴은 Boolean 변수로 나오고 요구하는 인자도 역시 Boolean 타입인 걸 알.. 2024. 6. 25.
[C++ MFC] Dialog RadioButton Item 배경 투명하게 만들기 [개요]MFC를 접한 지 얼마 안 되었습니다. 당장 UIUX를 구현해야 하는 상황이 되어 급하게 공부를 하면서 구성중입니다. 근데 라디오버튼이 네모지게 Backcolor가 유지되는 게 border와 함께 굉장히 거슬리더군요.단순히 속성에서 제어가 가능할 줄 알았는데 생각보다 요구하는 시퀀스가 복잡해서 추후에 또 참고할 자료 정리가 필요할 것 같았습니다. 그래서 직접 지우는 방법을 정리해봤습니다. [순서 정리]전체적인 순서는 아래와 같습니다.1. 라디오 버튼 생성2. Resource.h 확인해서 라디오버튼 넘버링 독립적으로 픽스3. .h 파일에 CButton 배열 변수 선언4. .cpp 파일에 DDX_Control 선언해서 CButton 변수와 1번에서 생성한 라디오버튼 바인딩 5. 라디오버튼 속성옵션에서.. 2024. 6. 21.