본문 바로가기

Dialog 기반 프로그램에서 OnIdle (WM_IDLE) 구현하기 (WM_KICKIDLE사용) Dialog 기반 프로그램에서 OnIdle (WM_IDLE) 구현하기 (WM_KICKIDLE사용) 기본적으로 Dialog로 작성된 프로그램은 일반 응용 프로그램의 메시지 루프 처리에 차이로 인해서 WM_IDLE 사용에 문제가 발생한다. CWnd::RunModalLoop는 CWinThread::PumpMessages(win32의 모달 대화상자 작동형태를 흉내낸 것)를 호출하게 된다. 이는 모달 대화상자가 실제로는 MFC에의해 모달리스 처럼 다뤄지지만 나타나는 형태는 모달로서 작동하게 된다. 이로 인해 일반 WM_IDLE을 사용할 수 없고 WM_ENTERIDLE를 사용하게 된다. 그러나 이는 약간 속임수로 우리가 원하는 IDLE에서 처리를 할 수 없다. WM_ENTERIDLE은 대화상자가 동작했을 때 작동되.. 더보기
[수정중]윈도우에서 GetWindowRect, GetCllientRect를 통해 크기 얻기 작성자 : ospace114@엠팔.컴 Window의 컨트롤이나 핸들러의 크기나 위치를 관리하기 위한 API를 살펴보겠다. 일단 컨트롤의 위치 값을 얻는 API는 두 가지가 있다. GetWindowRect와 GetClientRect이다. GetWindowRect: 윈도우 화면 좌표 값으로 위치 정보 반환한다. GetClientRect: 윈도우 클라이언트 영역에서의 좌표값 반환한다. 일단 윈도우의 좌표 표시는 일반적으로 사용하는 수학의 좌표와는 조금 틀리다. 수학에서 X, Y축의 증가하는 값는 각각 오른쪽과 위쪽이다. 그러나 윈도우에서는 Y축의 방향이 반대인 아래로 향한다. 그렇기에 Y축의 값을 계산할 때 주의를 요한다. 다음으로는 화면 좌표간의 변환를 사용하는 API를 보겠다. ScreenToClient와.. 더보기
자동으로 빌드 넘버 올려주는 매크로 자동으로 빌드 넘버 올려주는 매크로 작성자: Ospace (ospace114 at naver.com) http://discount77.com/blog/ospace Source : http://www.codeproject.com/macro/IncBuildNrMacro.asp 아래 FILEVERSION, PRODUCTVERSION, FileVersion, ProductVersion에 맨 뒤에 숫자를 자동으로 1씩 증가시킨다. 기능이나 설치 방법은 아래 저자글 참고. 기존 VC 2003까지 지원되는 것이나 VC 2005에서도 이상없이 지원된다. 그러나, 자동 빌드넘버 증가를 사용하지 않으려면 rc 파일에 아래 정의를 해준다. #define Disable_IncBuildNrMacro 그러나, 계속 빌드넘버가 증.. 더보기
ActiveX 사용한 CListView 사용자 컨트롤 ActiveX 사용한 CListView 사용자 컨트롤 출처 : http://blog.naver.com/gsi451?Redirect=Log&logNo=20029515425 더보기
ActiveX 컨트롤의 제작과 배포 ActiveX 컨트롤의 제작과 배포 박성규 님의 글입니다. 더보기
안정성을 보장하는 ActiveX 컨트롤 제작 ActiveX 사용을 가급적 지양한다. 혹시나 필요할 수도 있어서 글을 유지한다. 일반적인 방식으로(ActiveX 컨트롤 제작에서 설명한 방식) ActiveX 컨트롤을 작성하면, 웹에서 ActiveX 사용의 마지막 부분에 ActiveX 컨트롤과 Html 객체와의 연동 시에 보안 문제가 있다는 것을 설명했다. 이제 그 해결법을 설명하고자 한다. 간단히 설명하면 ActiveX 컨트롤 루틴에 안정성을 보장하는 루틴(안정성을 보장하는 clsid를 레지스트리에 등록하는 루틴)을 추가해야 한다. 먼저 레지스트리에 clsid를 등록하는 함수를 작성하고 실제 ActiveX 컨트롤 제작에서 작성한 컨트롤에 추가를 해보기로 한다. 함수 작성 다음과 같은 내용의 cathelp.h라는 파일을 작성한다. #if !defined.. 더보기
[MFC]Resizing Dialog 작성자: Ospace (ospace114 at naver.com) http://discount77.com/blog/ospace 다이얼로그 형태의 MFC에서 매우 유용하게 사용할 수 있는 코드이다. 다운로드: 사용법: stdafx.h파일에 #include EasySize.h 을 추가. 다이얼로그 클래스 정의한 부분에 DECLARE_EASYSIZE 넣음class CEasySizeDemoDlg : public CDialog { DECLARE_EASYSIZE ... 해당 다이얼로그 클래스의 OnInitDialog()에 INIT_EASYSIZE;을 넣음BOOL CEasySizeDemoDlg::OnInitDialog() { CDialog::OnInitDialog(); ... INIT_EASYSIZE; return .. 더보기
[Visual 2005] 클래스 이벤트, 메시지 헨들러 정의 방법 [Visual 2005] 클래스 이벤트, 메시지 헨들러 정의 방법 작성자: Ospace (ospace114 at naver.com) http://discount77.com/blog/ospace Visual Studio .NET에서 가장 당황하는 부분이 클래스 마법사가 사라진 부분이다. 그렇기에 이벤트나 메시지 헨들러를 추가하는 문제가 생긴다. 추가하는 방법 먼저 클래스 뷰에서 해당 클래스를 선택한다. 아래 속성 창에서 추가를 원하는 형태의 헨들러 버튼을 누른다. (위 그림참조) 각 목록에서 적당한 헨들러를 선택하면 오른쪽에 삼각형 버튼을 눌러 추가한다. 이 외에도 클래스 추가 방법 솔루션 탐색기나 클래스 뷰에서 프로젝트 명에서 마우스 오른쪽 버튼을 누르면 서브 컨텍스트 메뉴가 뜬다. "추가>클래스추가" .. 더보기

반응형