본문 바로가기
728x90

코딩취미/C,C++24

[MFC] Ribbon 구조 정의 XML 및 XML 정렬 사이트(Formatted XML) XML 로 정리된 문서의 내용을 수정해야하는데, 기존 문서에서 띄어쓰기나 줄바꿈 같은 정렬을 하지 않은 상태였습니다. 도저히 그상태로는 내용 파악이 어려워서 보기 좋게 변환해주는 사이트를 찾아서 사용했습니다. 사용하려고 했던 파일의 형태 해석이 어려워서 XML formatter 기능이 있는 사이트를 이용했습니다. 이걸 이용하니 해석하기 한결 수월해져서 작업속도가 빨라졌습니다. MFC의 Ribbon 구조 정의 이 XML은 MFC의 Ribbon 구조를 나타내는 것으로, 각 요소(Element)는 버튼, 카테고리, 패널 등을 정의하고 있습니다. 1 RibbonBar TRUE TRUE TRUE TRUE FALSE IDB_BUTTONS 113 Button_Main IDB_MAIN 112 Category_Main .. 2023. 12. 23.
[MFC] ribbon.mfcribbon-ms 리소스 xml 편집 : RibbonBarEditor, Application Buttion 수정관련 기존에 개발된 MFC GUI 변경요청으로, Application Button/윈도우스타일/퀵메뉴를 수정하는 일이 생겼습니다. 기본적으로 Application Button을 안보이게 하는 것은 간단한 코드로 해결될 것이라고 생각했는데, 코드로 해결이 되지 않아서 좀 더 확인해보니 리소스를 로드해서 적용하는 방식으로 구성이 되어있었습니다. 다음은 그런 과정을 거쳐서 변경한 내용에 대한 정리입니다. 방법1 : 상단의 Application Button & 퀵 메뉴 숨기기 MFC에서 상단의 Application 버튼과 퀵 메뉴를 보이지 않게 하는 방법은 주로 메인 프레임 윈도우의 초기화 코드에서 해당 요소들을 숨기는 것입니다. // 예제 코드에서는 CMainFrame 클래스를 기준으로 작성되었습니다. // 만약 .. 2023. 12. 22.
[C#] 멀티스레드(MTA) 환경에서 프로그램 재시작하는 방법 멀티스레드(MTA) 환경에서 프로그램 재시작하는 방법 GUI 프로그램을 만들면서, 프로그램을 재시작해야할 경우가 생겼습니다. 특정 버튼을 클릭하면, 다른 exe 프로그램을 실행시키고 이후에 다시 본래의 s/w를 시작하는 과정이 필요했는데, 이런 과정에서 필요했던 내용들입니다. 멀티스레드에서 재시작하는 경우: 특징: 다른 스레드에서 프로그램을 재시작할 때, 메인(UI) 스레드와 다른 작업 스레드 간의 동기화에 주의해야 합니다. 프로그램을 재시작하는 동안 다른 스레드에서 실행 중인 작업이 영향을 받을 수 있습니다. UI 스레드와 작업 스레드 간의 통신 및 동기화 문제를 고려해야 합니다. 차이점: 멀티스레드에서 프로그램을 재시작하면, UI 갱신 및 다른 스레드 간의 동기화 문제로 복잡성이 증가합니다. 다른 스.. 2023. 12. 20.
[c언어] 문자열에 특정 부분 문자열 찾는 함수(strstr)외 문자열 제어함수 9가지 문자열에 특정 부분 문자열 찾는 함수(strstr)외 문자열 제어함수 9가지 strstr strstr 함수는 문자열에서 특정 부분 문자열(substring)을 찾는 함수로, C 표준 라이브러리에 포함되어 있습니다. strstr 함수의 전달인자와 반환값, 그리고 사용 방법에 대해 설명하겠습니다. strstr 함수의 전달인자: 대상 문자열 (const char *haystack): 부분 문자열을 찾을 대상이 되는 문자열입니다. 찾을 부분 문자열 (const char *needle): 대상 문자열에서 찾고자 하는 부분 문자열입니다. strstr 함수의 반환값: 부분 문자열의 첫 번째 등장 위치 포인터 (const char *): 대상 문자열에서 찾은 부분 문자열의 첫 번째 문자에 대한 포인터를 반환합니다. 만.. 2023. 12. 18.
[c언어] fread, fseek, fwrite 전달인자와 사용방법 (파일 입출력) fread, fseek, fwrite 전달인자와 사용방법 (파일 입출력) fread 기능 : 파일에서 데이터를 읽어오는 함수. string fread(resource $handle, int $length); size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); fread 함수의 전달인자: 데이터를 저장할 버퍼 (void *ptr): 읽어온 데이터를 저장할 메모리 버퍼의 시작 주소를 가리키는 포인터입니다. void * 타입으로 선언되어 있어 어떤 데이터 타입의 버퍼든 사용할 수 있습니다. 각 요소의 크기 (size_t size): 각 요소의 크기를 바이트 단위로 지정합니다. 예를 들어, int 형식의 데이터를 읽을 때는 sizeof(int)와.. 2023. 12. 17.
파일 복사 시, copy 명령어를 쓰지 않고 버퍼를 사용하는 이유 파일 복사와 버퍼 사용 파일의 내용을 복사할 때 파일 카피(copy) 함수를 사용하는 것과 직접 버퍼를 만들어서 복사하는 방식은 각각의 장단점이 있습니다. 파일 카피 함수 사용: 간편성 및 효율성: 대부분의 프로그래밍 언어와 운영체제는 파일 복사를 위한 표준 라이브러리 함수를 제공합니다. 이러한 함수들은 내부적으로 최적화되어 있어 효율적으로 파일을 복사할 수 있습니다. 가독성 및 안정성: 표준 라이브러리 함수를 사용하면 일반적으로 코드가 간결하고 가독성이 좋아집니다. 또한, 표준 라이브러리 함수들은 안정성이 검증되어 있기 때문에 에러 처리 등에 대한 부분을 자동으로 처리할 수 있습니다. 직접 버퍼를 만들어 복사: 커스터마이징 가능성: 직접 버퍼를 만들어 복사하는 경우에는 복사하는 과정을 직접 제어할 수 .. 2023. 12. 16.
728x90