본문 바로가기

[리소스이야기] CImageList에 대해 MFC의 CImageList는 말 그대로 "image list"로 이미지 목록을 관리하는 클래스이다. 단 조건이 있다. 같은 크기어야 한다. 그리고 일반 배열(zero-based index)처럼 접근이 가능하다. 이 클래스는 주로 CListCtrl 혹은 CTabCtrl에 등에서 같이 사용이 된다. 여기서는 사용법을 살펴보는 것이 아니라, 리소스에 관련한 내용을 다룰려고한다. 그러므로 이 클래스에 대해서 어느 정도 알고 글을 읽은게 이해하기 쉬울 것이다. 리소스 관리라고 하면 다른게 아니다. "정확히 할당하고, 정확히 해제한다." 글쓴이: 박재성(ospace114@empal.com) http://ospace.tistory.com/, 2007.07.04 CImgeList 생성하기 먼저 리소스를 할당하는 것 .. 더보기
[회전변환] MFC 회전하는 공 [회전변환] MFC 회전하는 공 작성자: Ospace (ospace114@empal.com) 이 예제는 원이 특정한 점을 기준으로 회전하는 것이다. 회전 변화이라는 수식을 사용했다. $$ \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} cos \theta & -sin \theta \\ sin \theta & cos \theta \end{pmatrix} \begin{pmatrix} x - x_c \\ y - y_c \end{pmatrix} $$ 위의 수식이 회전변화 수식이다. 배열이기에 조금만 하면 이해하기는 쉽다. 실제 결과는 아래 그림과 같다. 아래는 이를 사용한 예제 소스이다. 회전 변환 외에 더블 버퍼링과 영역선택등을 사용했으니 참.. 더보기
MFC 대화상자에서 초기화 및 종료 API 순서 "메시지 처리에 대해서 잘 알고 있다면 다음 내용이 필요 없다." MFC에서 기본적인 위도우 프레임웍이 설계되어 있고 그 곳에 맞게 필요한 코드를 넣어주면 된다. 프로그래밍에 있어서 가장 중요한게 자원 할당과 해제이다. 특히 C++에서는 메모리 관리를 프로그래머가 직접해주기 때문에 잘못된 메모리 관리는 시스템 전체에 안좋은 영향을 준다. MFC에서 가장 무식하게 자원 할당과 해제를 하는 경우를 보면 생성자와 소멸자에 하는 경우이다. 실제 직접 생성자와 소멸자에 코딩하는 경우는 드물고 포인터 변수를 NULL로 초기화하는 정도이다. 그럼 MFC에서 실제 API 호출 순서를 보자. 응용프로그램 형태 중에서 대화상자를 중심으로 살펴보겠다. 작성자: 박재성 (http://ospace.tistory.com/, os.. 더보기
[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 .. 더보기
[MFC]분할 윈도우를 생성하는 방법 아래는 서광철님의 분할윈도우 생성하는 방법니다. 탐색기에서 보신, 분할 윈도우란 CSplitterWnd 라는 클래스를 말하는 것으로서,, CFrameWnd 나 CMDIChildWnd 의 프레임에만 붙일수있는 콘트롤입니다.... 분할 윈도우를 생성하려면 CFrameWnd::OnCreateClient 함수안에서 하게 되는데... 우선, 귀하의 예로는 두개의 폼뷰어를 만들고 각각 Grid control과 Web control을 각각 배치하여 FormView의 코드를 완성하고... CMainFrame::OnCreateClient 함수를 이와 같이 생성합니다... BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { CRe.. 더보기
[MFC] 256색 이상 툴바 사용 작성자: Ospace (ospace114 at naver.com) http://discount77.com/blog/ospace 이 예제는 이미지 리스트를 이용해서 도구바에 등록하는 형태이다. 기본적으로 CMainFrame의 OnCreate()에서 코딩을 한다. 작업순서는 툴바 버튼 기본 모양 지정 이미지 리스트 생성 및 툴바에 등록 각 버튼들 설정 실제 코딩을 보자.. 기본적으로 사용할 자료형이다. CImageList img; // 이미지리스트 CString str; // 버튼 설명문을 임시 저장 CRect rectToolBar; // 툴바 크기 설정 임시 저장툴바 버튼 기본 모양 설정 //버튼의 최대, 최소 크기설정 //최대는 버튼 설명문이 포함될 경우 최대 크기이다. m_wndToolBar.GetTo.. 더보기
[MFC]폼뷰 외곽 경계선 없애기 이것땜시 고생 좀 했습다.....우연히 여기 저기 쑤시다가 알게 됐습니다.... 거 참 재밋더군요 ....코드 두줄이면됩니다 이렇게 하면 다이얼로그 같은 뷰가 나옴니다 ..물론 폼뷰에서 한거고요 기냥 뷰는 테스트 않해봐서 멀겠네요....그럼 이만 원하는 뷰에 cs.style &=~(WS_BORDER); 요거 삽입 나머지 두개의 스타일은 해도 되고 않해도 되고요 .... BOOL CVMenuView::PreCreateWindow(CREATESTRUCT& cs) { cs.style &=~(WS\_BORDER); // cs.style &= ~(WS\_THICKFRAME); // cs.style &= ~(WS\_DLGFRAME ); return CFormView::PreCreateWindow(cs); } 그리고.. 더보기

반응형