C++/summary 70

메인 윈도우의 DC를 가져와서 출력하는 방법

CCommonDialog *pMain = (CCommonDialog*)AfxGetMainWnd(); // 메인 윈도우 변수를 초기화 한다. CDC *cdc; // 그려주기 위해서 CDC를 이용한다. // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다. CFontDialog dlg; CCommonDialog *pMain = (CCommonDialog*)AfxGetMainWnd(); CDC *cdc; if(dlg.DoModal() == IDOK){ //CClientDC dc(this); CRect rect; pMain->GetClientRect(&rect); cdc = pMain->GetDC(); cdc->SelectStockObject(WHITE_PEN); cdc->SelectStockObject..

C++/summary 2011.06.02

4장 이어서......

텍스트 함수 drawtext는 사각 영역 안에서 출력한다. dc안에 기본값으로 폰트 10, 검은색 등을 정의되어있다. setTextColor 등으로 바꾸거나 할 수 있다... // 기본은 바탕색에, 검정색인데 dc안의 속성을 바꿀수 있다. // 이런 정보들을 가지고있다. 매핑모드 기본은 픽셀 단위 mm_text 이다. 수학적으로 할때는 내려가면 +니깐 맞지 않아서, 포맺을 바꿔야 한다 그래서 수학적으로 모델링 한것이 나머지 것들이다. 픽셀단위는 화면 해상도에 따라 크기가 달라지는 문제도 가능. 모드 - 단위 => 다 다르다. MM단위는 해상도 상관없이 출력이 일정하다. // 사용자가 정의를 할 수 있다. // 단위는 퍼센트이다. MM_ISOTROPIC MM_ANISOTROPIC 좌표 변환 윈도우 출력은 ..

C++/summary 2010.12.08

4장 화면출력

무효영역 처리 Hello SDK 예제 case WM_PAINT: hdc = BeginPaint(hwnd, &ps); TextOut(hdc, 100, 100, str, lstrlen(str)); EndPaint(hwnd, &ps); return 0; Begin - End 는 항상 쌍으로 존재한다. end를 하지 않는다면 무효영역 처리 마친줄 모르고 계속해서 페인트를 한다. MFC예제 void CMainFrame::OnPaint() { char *msg = "Hello, MFC"; CPaintDC dc(this); dc.TextOut(100, 100, msg, lstrlen(msg)); } 여기는 Begin - End 가 존재하지 않는다. 여기서는 생성자로 만들어 준다, 멤버함수로 DC가 존재한다. 그리..

C++/summary 2010.12.06

3장 이어서......

응용 프로그램 클래스 - 프레임 윈도우 메시지 루프 제공 - init() - run() CMainFrame - 프레임 윈도우 기능 정의 뷰 생성. -프레임 윈도우 클래스는 CFrame과 다르다 상속받은것..... - OnCreate() 만든다. CChilFrame - 모든 코드를 여기에 추가한다. - OnPaint() 다시 그리기를 할 수 있다. 프로젝트 f1.cpp f2.cpp 일때 f1.cpp 의 전역변수 int g= 10 을 f2에서 사용할려면 extern int g; 를 선언해야한다. 이 3개의 부모는?? 그리고 각각의 역할은 1, 응용 프로그램 객체, 2 메인 동적으로 3 뷰 객체 (메인이 만들어 지면서 has a 관계로 뷰 객체가 만들어 진다.) 메시지핸들러가 언제 호출... 가상함수가 호출되..

C++/summary 2010.12.01

3장 MFC프로그램 구조( 마법사 사용 )

프로젝트 mfc프로그램구조. 마법사사용 참조하라 프레임윈도우 : 뷰 -> 부모윈도우 : 자식윈도우 윈도우를 띄우기 위해서 -> 윈도우 : 윈도우객체(윈도우 생성/조작/메시지처리) => 윈도우객체 생성 => 윈도우를 만든다. why API함수를 안쓰고 객체로 만드는가? => 객체의 미리 정의된 함수들로 쉽게 만들기위해서 => 윈도우 핸들은 윈도우 객체의 멤버변수로 저장된다.

C++/summary 2010.11.29

집합클래스 - 배열, 리스트 , 맵

nMFC 배열 클래스의 특징 —배열 인덱스를 잘못 참조하는 경우 오류를 발생시킨다. —배열 크기가 가변적이다. 이것은 템플릿 클래스이다. CPoint 는 좌표이도, String이나 포인트 등 n비 템플릿 클래스 —afxcoll.h 헤더 파일 가 포함되어야 한다. 정수나 문자열 같은거는 미리 만들어진것을 사용하는게 좋다 하지만 내가 만든 포인트같은것은 위에 처럼 템플릿을 사용하는게 좋다. CStringArray array; array.SetSize(5); for(int i=0; i

C++/summary 2010.11.24

2장 유틸리티 집합 클래스

// util 집합.cpp : 콘솔응용프로그램에대한진입점을정의합니다. #include "stdafx.h" #include "util 집합.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 유일한응용프로그램개체입니다. CWinApp theApp; using namespace std; int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { int nRetCode = 0; // MFC를초기화합니다. 초기화하지못한경우오류를인쇄합니다. if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) { // TODO: 오류코드를필요에따라수정합니다. _tprintf(_T("심각..

C++/summary 2010.11.22

MFC 기본설명 및 소스

① 응용 프로그램 클래스 정의 ② 메인(=프레임) 윈도우 클래스 정의 ③ 응용 프로그램 객체 선언 ④ 메시지 맵 선언 // mfc는메시지핸들러함수로분리되어있다. // c++은하나로묶여있지만.. #include // 응용프로그램클래스를선언한다. // WinMain 역할을담당한다. // CWinApp 상속받아 사용해야 한다. class CHelloApp : public CWinApp { public: virtual BOOL InitInstance(); // 재정의된함수 // 초기화 하는 함수이다. 반드시 재정의 해야한다. // 반드시 해야하는 함수는 virtual이 붙어 있다. }; // 메인윈도우클래스를선언한다. // 윈도우에대한생성, 메시지처리등을묶어서가지고있음 // public CFrameWnd 을 상..

C++/summary 2010.11.17

SDK - 윈도우창을 여러개 띄워보자.

인스턴스 ↓ ↓ 윈도우 프로시저 - 윈도클래스 윈도우 프로시저 - 윈도클래스 ↓ ↓ 윈도우1, 윈도우2 윈도우3, 윈도우4 이렇게 구성이 되어있다. 그리고 윈도우 카운터를 통해서 모든창이 꺼질때 까지 프로세스를 종료하지 않는다. 소스코드는 다음과 같다. #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK WndProc2(HWND, UINT, WPARAM, LPARAM); static int wndCount =0; int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wndclas..

C++/summary 2010.11.15