본문 바로가기

컴퓨터219

포인터, 참조, 값 형식에 관한 개인적 관례 함수를 만들 때 사용하는 매개변수의 형태를 포인터, 참조, 값 형식 중 어느 것을 사용할 것인가, 에 관한 개인적인 관례(convention) 를 설명하면 다음과 같다. 삶의 다른 많은 것이 그렇듯, 이 관례 역시 이러함을 지양하는 것일 뿐 반드시 이래야 하는 것은 아니다. 우선 두드러지는 특징은 포인터로 호출할 경우 함수 내부에서 그 값을 변경시킨다는 암묵적인 가정이 있고, 참조로 호출할 경우에는 함수 내부에서 그 값을 변경시키지 않는다는 가정이 존재한다. 따라서 참조를 이용하여 호출할 경우 const 지시자가 붙는 경우가 많다. 물론 포인터 역시 동일한 목적으로 사용할 수 있지만(const type const * ) 문법이 살짝 번거로워 이런 식으로 사용하지는 않는다. 이런 식의 구분을 이용하면 함수.. 2014. 5. 9.
CRichEditCtrl 에서 유니코드 표시 지금 RTF 파일에 글자(한문)를 저장해 놓은 후 읽어들여서 CRichEditCtrl instance 에 표시를 해주고 있는데, 이게 종종 글자가 깨진 것이 보인다. 이 경우, RTF 파일을 읽을 때 그 부분의 format 까지 같이 읽어서 저장해 놓은 후 표시할 때 그 format 을 사용하는 방법으로 우회하고 있다. 보다 정확한 방법은 사실 이론상으로 하기 힘든 듯 한데 확실하진 않다. RTF 파일은 글자 개별적으로 code-page 를 지정할 수 있게끔 되어 있다. 따라서 한 RTF 파일이라 하더라도 각 글자마다 서로 다른 code-page를 사용할 수 있다. CRichEditCtrl-derived view 를 이용해서 무조건 글자를 출력해버리면 code-page 가 맞지 않아서 글자가 깨져 나올 .. 2014. 5. 2.
유니코드로 작업시 ? 는 정말로 ? 인가? unicode 로 작업을 하거나 unicode 로 되어 있는 자료를 다루는 작업을 할 경우 상황에 따라 글자가 깨져서 ? 로 표시되는 경우가 많다, 아주 많다, >.. 2014. 4. 16.
CRichEditCtrl 에서 줄바꿈 없애기 CRichEditCtrl 의 instance 에서 word-wrap (줄바꿈)을 없애려면 SetTargetDevice 함수를 사용해야 한다. CRichEditCtrl::SetTargetDevice(NULL, 0); 과 같이 하면 줄바꿈이 없어진다. SetWordWrapMode 나 GetWordWrapMode 함수가 있어서 매번 사용할 때마다 혼동하는데 이 함수가 아니라 위의 함수를 사용해야 한다. MSDN의 설명에 따르면 두 번째 인자가 0 인 경우 line-break 가 없어진다고 나와 있다. 하지만 첫 번째 인자를 NULL 로 하는 것이 어떤 의미인지는 설명이 안 나와 있다. 아마도 현재 설정되어 있는 것을 변경시키지 않는다는 의미일 듯 한데 정확하진 않고 어쨌든 저렇게 호출하면 줄바꿈을 없앨 수 있.. 2014. 4. 11.