본문 바로가기

MFC

MDI 다른 형식의 Child 만들기 MDI 의 꿈을 버리지 못하고 몇 개월째 해야지~하면서 찾아만 다녔던 부분이다.MDI 에서 기본View는 내가 지정을 할 수 있지만 다른 형식의 View, 그러니까 예를 들어서 일반 View가 기본인데 FormView가 필요하다던지 그 반대가 되던지 아니면 머..스크롤 뷰라던지 등 기본과 다른 View를 사용해서 Child를 띄우는 방법이다. 솔직히 그냥 DoModel 이나 Modeless 로 띄워도 되긴 하지만 일단 간지가 나지 않는다 -_- MDI 의 최대 장점은 독립적인 Frame 구조이기 때문이다. 독립적인 Frame이 지원이 되는데 왜 굳이 저렇게 쓴단 말인가? 그럴빠엔 SDI로 설계를 하는게 더 편하다. 서론이 길었지만 매우 간단하더라 (이전엔 해도 않됐었다. 아무리 많은 포스팅을 봐도 해보면.. 더보기
MFC 해더파일 ============================================================================ MFC 헤더와 라이브러리 설명 (The Foundation Classes Headers and Libraries) #1 1. Header Files 아래 테이블은 모든 MFC 헤더 파일들과 사용 목적, 그리고 어떤 파일전에 어떤 파일들이 Include 될수 있는지에 대해 나와있습니다. 거의 모든 헤더들이 다른 헤더들에 의해 Include 된다는 것을 주의하십시오. 당신의 코드에서 직접 Include 하는것은 약 4-5개 정도입니다. ---------------------------------------------------------------------------- .. 더보기
MouseWheel강제 호출 듀얼 모니터를 사용할때 프로그램을 두 모니터 모우띄울때가 있었다. 그때 각 클래스단위로 모니터 하나씩 화면에 띄우게 되는데 한쪽에서 휠다운이나 휠 업이 일어나면 함께 움직이게 하는 프로그램 코딩중 마우스 휠때문에 엄청 얘먹은 적이 있었는데 휠 이벤트를 이걸로 해결했다지.....ㅋㅋㅋ ::SendMessage() 로 호출하여 다른 클래스의 화면이나 메시지 이벤트를 보낸다. 이때 API함수로 호출을 해야 보내고자 하는 윈도우 나 컨트롤 등의 핸들을 넣을 인자값이 나온다. 처음에 이거몰라서 쫌 짜증났다.ㅡ.ㅡ 데브피아 화이팅이라고 하지...ㅋㅋㅋ SendMessage()(API라고 가정하자)는 많이 써봤을 것이다. SendMessage는 API탭에 보면 있다.ㅋㅋㅋㅋ(또 쓰기 귀찬아.ㅡㅡ) 마우스 휠 함수를 .. 더보기
SendMessage함수 SendMessage 원형 LRESULT SendMessage(UINT Msg,WPARAM wParam, LPARAM lParam); UINT Msg : 보낼 메시지(WM_어쩌구..) WPARAM wParam : 메시지에 관한 부가적인 정보(주로 보낼 메시지에 대한 세부적인 정보) LPARAM lParam : 메시지에 관한 부가적인 정보(wParam에서 다루는 정보 외...) API함수 원형 LRESULT SendMessage(HWND hWnd, UINT Msg,WPARAM wParam, LPARAM lParam); 사용시에 ::SendMessage(....로 해줘야한다. HWND hWnd : 메시지를 보낼 윈도우 핸들 이하 동일~ 더보기
MFC Class 삭제 하는 방법 - 생성한 Class를 간단히 완전제거 MFC (1) 프로젝트에 보면 *.clw 화일이 클래스정보를 가지고 있거든요 첫번째) "FileView"에서 클래스에 대한 화일을 제거 두번째) 그 화일이 있는 폴더로 가서 화일 제거 세번째) 그 화일의 내용을 가지고 있었던 프로젝트로 가서 clw화일을 제거 그 후 다시 똑같은 이름의 클래스를 생성하시면 똑같은 클래스 이름이 있다는 에러 메세지가 안뜰겁니다. clw화일을 만들려면 클래스 위자드(Ctrl + w : 비쥬얼 스튜디오 6 기준)를 누른 후 clw화일이 제거된 프로젝트로 이동하시면 파일이름을 넣으라고 나오는데 그때 clw화일의 이름을 확장자와 함께 넣으시면 됩니다. - 생성한 Class를 간단히 완전제거 MFC (2) 간단한 예로 설명을 시작하자면, 우선 .. 더보기
컨트롤 핸들 얻기 컨트롤 핸들 얻어오기 CWnd::GetDlgItem 함수의 원형 CWnd *GetDlgItem(int nID) const; 2. 초...간단......하게..ㅡ.ㅡ ㅋㅋㅋㅋㅋㅋ 더보기
기본적인 MFC TIP . DC얻기 CClientDC dc(this); 2. Client 영역 구하기 GetClientRect(&rect); WM_SIZE 메시지발생후 cx,cy 사용 3. 문자열 사각형안에 그리기 pDC->DrawText(문자열,사각형,Style); Style: DT_BOTTOM - 문자열을 사각형 맨아래줄에배열 반드시 DT_SINGLELINE과 함께사용 DT_CENTER - 문자열을 가로중앙에 배치 DT_VCENTER - 문자열을 세로중앙에 배치 DT_LEFT,RIGHT - 문자열을 좌,우로 배치 DT_SINGLELINE - 문자열을 한줄로만 쓴다 4. Brush 사용법 CBrush brushname(RGB(red,green,blue)); //브러쉬 생성 CBrush *oldBrush=pDC->SelectO.. 더보기
기본적인 주요 멤버변수 & 멤버함수 MFC 주요 클래스의 멤버 변수와 멤버 함수 -------------------------------------------------------------------------------- 1. CObject 클래스 2. 애플리케이션 프레임 워크 관련 클래스 1) CWinApp 2) CFrameWnd 3) CView 4) CDocument 3. 윈도우 관련 클래스 : CWnd 4. 디바이스 컨텍스트 클래스 1) CDC 클래스 2) CDC 파생 클래스들 ▶CPaintDC 클래스 ▶CClientDC 클래스 ▶CWindowDC 클래스 ▶CMetaFileDC 클래스 3) CGdiObject 클래스 ----------------------------------------------------------------.. 더보기
MemDC MemDC MemDC란 비트맵을 출력하기 위해 CDC를 메모리상에 올려놓고 사용하는 것이다. 비트맵을 블록단위로 전송하기 위하여 또하나의 비트맵을 메모리상에 올려놓고 전송을 해주는 것이다. 비트맵을 운용할 때 메모리상에 있는 비트맵을 가지고 사용을 하면 화면의 끈김이 없어진다. CClientDC WinDC(this); CBitmap bitmap; CDC MemDC; MemDC.CreateCompatibleDC(&WinDC); MemDC.FillSolidRect(0,0,m_winwidth,m_winheight,RGB(255,255,255)); pDC->Bitblt(0,0,win_Width,win_Height,&MemDC,0,0,SRCCOPY); MemDC.SelectObject(); CClientDC Wi.. 더보기
4대클래스 자동생성 소스 분석[CDocument] 자동생성 클래스 분석 - CDocument CDocument 클래스 CLyraDoc 클래스는 CDocument 클래스를 상속받은 것이다. CDocument 클래스는 일종의 데이터 임시 저장소이다. CLyraDoc와 CView는 연결되어 있다. 이 것을 확인하려면 LyraView.cpp에서 찾아볼 수 있을 것이다. 즉, 이 말들을 정리하면 VIEW 창에 나타내기를 원하는 것을 CDocument 클래스에 넣으면 된다는 뜻이다. BEGIN_MESSAGE_MAP(CLyraDoc, CDocument) //{{AFX_MSG_MAP(CLyraDoc) // NOTE - the Classwizard will add and remove mapping macros here. // DO NOT EDIT what you see.. 더보기