본문 바로가기

[컨트롤이야기] 리치에디트(RichEdit) 컨트롤 사용하기 리치에디트는 일반 에디트(Edit) 컨트롤 보다 더 많은 기능을 제공한다. 노트패드와 워드패드 차이라고 볼 수 있다. 여기서는 MFC, Win32 및 WTL 모두 다루겠다. 사실 MFC가 사용이 쉽다. 무엇을 사용하는지는 개인적 선호도 차이가 있기 때문에 알아서 선택하면된다. 생성하기: 리치에디트를 핸들러를 생성하고 화면에 추가하고 변수와 연결하는 부분을 다룬다. 작성일: 2009.06.18 (http://ospace.tistory.com/), ospace114@empal.com 생성하기 MFC MFC에서 리소스 에디터로 ToolBox(대화 상자 편집기)에서 "Rich Editor 2.0 Control"이라는 컨트롤을 사용한다. 주의 할 것은 MFC Application으로 프로젝트에서 대화상자 형태로 .. 더보기
트레이 아이콘 다루기 작성일: 2009.05.19 (http://ospace.tistory.com/), ospace114@엠팔.컴 트레이 아이콘 생성 아래 코드는 프로그램 처음 시작할 때나 초기화되는 곳에 추가하면 된다. 혹은 따로 클래스를 만들어서 메소드로 호출해도된다. NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); // 구조체 크기 nid.hWnd = this->m_hWNd; // 윈도우 핸들러 nid.uID = IDI_TRAY; // 트레이 아니콘 리소스 ID nid.uFlag = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 사용될 멤버 플래그 nid.uCallbackMessage = UM_TRAYICON; // 사용자 정의 메시지 식별자. // nid.hIcon.. 더보기
VC에서 운영체제별 매크로 선언 작성일: 2009.05.15 (http://ospace.tistory.com/), ospace114@엠팔.컴 VC에서 운영체제별 호환 프로그램을 작성시 꼭 필요한 전처리기 선언해야한다. 보통 일반적으로 전처리기 사용하지 않으면 현재 컴파일되는 윈도우 버전이 선언된다. 사용되는 매크로는 다음과 같다. WINVER 윈도우 버전을 사용한다. 현재 사용되는 윈도우 버전을 말한다. 0x410은 major 버전은 4이고 minor는 10이다. 즉 Windows 98 이전을 말한다.` _WIN32_WINDOWS 앞의 WINVER도 같은 의미이다. `0x410이면 앞의 Windows 98과 같다. _WIN32_WINNT Windows NT 버전을 가리킨다. 만약 Windows ME 이전이라면 선언하면 안된다. `0x4.. 더보기
VC에서 자동으로 빌드번호 증가시키기 ( Incresing the build number automatically) VC에서 버전 번호 관리는 상당히 귀찮은 작업이다. 항상 리소스 관리자에서 버전 리소스를 선택해서 파일버전와 프로덕트 버전을 변경하는 것은 여간 귀찮은 작업이다. 이에 간단히 자동으로 빌드번호를 증가시켜주는 툴이 있어서 소개하고자 한다. 빌드 번호를 만들어주는 툴은 구현 방법도 다양하면 종류도 여러 개 된다. Writer: http://ospace.tistory.com/(ospace114@empal.com) 2008.08.13 종류 자동 빌드 번호 증가는 크게 두가지 방법으로 구분 된다. 매크로를 이용한 것과 유틸리티 프로그램을 이용한 방법이다. 둘다 귀찮은 수작업이 필요하다. 한번 해두면 나중에는 더이상 수정이 필요없기에 더 귀찮은 수동 버전번호 관리보다 편하다. 그리고 좀더 편안하게 할 수 있는게 J.. 더보기
Registry(레지스트리) 변경을 감시하여 이벤트 처리하기 이는 레지스트리 변경음 감시하여 Notify를 해주는 기능을 구현하다. 아래 구현은 Win32에 기반을 두었고, 콘솔 프로젝트 하에서 테스트를 하였다. http://ospace.tistory.com/(ospace114@empal.com) 2008.08.07 주요 API 사용 주요 API는 다음과 같다. 레지스트리 관련 RegOpenKeyEx(): 특정 레지스트리 키를 열기위해서 사용(KEY_NOTIFY플래그 반드시 사용) RegNotifyChangeKeyValue(): 앞에서 열려진 키값을 Notify하기 위해 사용 RegCloseKey() 기타 CreateEvent(): Notify에 사용할 이벤트 핸들러 CloseHandle(): 열려진 핸들러 닫기 WaitForSingleObject(): 특정 핸들.. 더보기
Windows 메시지 인자(Param) 처리시 사용하는 매크로 Windows 메시지 인자(Param) 처리시 사용하는 매크로 작성자: 박재성(ospace114@empal) 작성일: 2008.04.25 Windows에서 Win32이든지 MFC이든지 메시지 처리는 값을 받는 인자가 있다. 바로 WPARAM와 LPARAM이다. 다음은 이를 처리하기 위한 매크로이다. 이는 단지 정리 목적이지 자세한 설명을 위한 것은 아니다. #define LOWORD(l) ((WORD)(l)) #define HWORD(l) ((WORD)(((DWORD)(l)>>16) && 0xFFFF)) #define LOBYTE(w) ((BYTE)(w)) #define HBYTE(w) ((WORD)(((WORD)(w)>>8) && 0xFF)) #define MAKEWORD(a, b) ((WORD)(((.. 더보기
ACM 오디오 프로그래밍 ACM 오디오 프로그래밍 작성자: 박재성(ospace114@empal.com) 편의상 평어를 사용하겠습니다. 제발 돌은 던지지 마세요. ㅠ.ㅠ 이자료를 어떤 분이 퍼가실지 모르지만, 퍼가실때에는 출처를 밝혀주세요. 윈도우 환경에서 오디오 프로그래밍은 쉽지가 않다. 쉽지가 않다고 하는 것은 비디오나 이미지에 비해서 어렵다는 이야기이다. 보통 비디오라고 하면 DirectShow 기반으로 개발하며, 간혹 다른 것도 사용하지만.. 이미지하면 GDI나 DirectDraw등을 이용하게 된다. 혹은 다른 이미지 라이브러리를 사용... 오디오 역시 DirectShow 기반으로 하면 되지만 ACM)Audio Compression Manager)이라는 SDK가 있다. 이곳에서 오디오 인코딩, 디코딩 및 여러 효과를 적용할.. 더보기
COM객체 regsvr32 등록시 DllRegisterServer실패 0x80000003에러 작성자: Ospace(ospace114@empal.com) 적성일: 08.01.10 프롤로그 COM객체를 작성하면서 짜증나는 부분이 COM객체 등록 부분이라 할 수 있다. 적어도 나는 그렇다. 특히 regsvr32에 의해서 COM객체 등록시 왜 이렇게 안되는 경우가 많은지, 어떤 에러인지 메시지만으로 알기 어려워서 더욱더 짜증나게 만든다. 여하튼 최근 DirectShow 필터를 작성해서 등록해서 잘 사용하고 있었다. 다시 필터 내부에 데이터 체크 부분을 보강하여 다시 빌드해서 사용하는데는 문제가 없었다. 이렇게 자주 COM 객체를 빌드해서 테스트 할때 regsvr32에 의해서 매번 해제와 등록 작업하는 것은 번거롭다. 그렇기에 한번 등록해두면 레지스트리에 해당 COM객체에 대한 절대위치 정보가 저장된다... 더보기

반응형