반응형
반응형
반응형

CCmdTarget Class

 

MFC 라이브러리 메시지 맵 아키텍처를 위한 base 클래스.

 

class CCmdTarget : public CObject

 

요약

메시지 맵은 명령어 혹은 메시지를 멤버 함수에 전달 한다. (명령어는 메뉴 아이템, 버튼, 단축키로 부터 온 메시지이다) CCmdTarget를 상속받은 중요한 플레임워크 클래스는 CView, CWinApp, CDocument, CWnd, CFrameWnd 등이 있다. 여러분이 메시지를 처리하기 위해 새로운 클래스를 만들었다면 이런 CCmdTarget로부터 상속 받은 클래스 중의 하나를 상속 받으면 된다. CCmdTarget 클래스를 직접 상속 받는 경우는 극히 드문 일이 될것이다.

 

command target과 OnCmdMsg 루팅에 대한 개요는 Commenad Targets, Command Routing, Mapping Messages를 보라.

 

CCmdTarget는 모래시계 커서의 표시를 다루는 멤버 함수도 포함하고 있다. 명령이 수행되길 기다리는 동안에 모래시계 커서를 표시하면 된다.

 

메시지 맵과 유사한 디스패치 맵은 OLE automation IDispatch 기능을 expose하기 위해 사용된다. 이 인터페이스를 expose 함으로써, 비주얼 베이직과 같은 다른 어플리케이션이 여러분의 어플리케이션으로 호출될 수 있다.

 

요구사항

afxwin.h

 

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

SDI 함수 호출순서(생성시)  (0) 2009.02.11
Dialog의 생성 순서  (0) 2009.02.11
DB 사용하기..  (0) 2009.02.11
SDI 기반에서..  (0) 2009.02.11
srand(), rand() 함수 설명  (0) 2009.02.11
반응형
// 새로 만들기 할때 DB suppor 로 선택하면 View  에서 m_pSel 변수를 이용해서 사용가능하다.


// 첫번째 레코드 이면 True
m_pSet->IsBOF() 


// 마지막 레코드 이면 True
m_pSet->IsEOF()


// 첫번째 레코드로 이동
m_pSet->MoveFirst()


// 마지막 레코드로 이동
m_pSet->MoveLast()


// 다음 레코드로 이동
m_pSet->MoveNext()


// 이전 레코드로 이동
m_pSet->MovePrev()


// 레코드 삭제
m_pSet->Delete()


// 레코드 추가
m_pSet->AddNew()
m_pSet->m_Variable = Value
m_pSet->Update()


// SDI 가 아닌 Dialog 에서 하거나 직접 RecordSet 을 상속받아서 할때에는 아래와 같이 직접 사용
ClassName variable;
variable.open()
variable.close()

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

Dialog의 생성 순서  (0) 2009.02.11
메세지맵 Class :: CCmdTarget  (0) 2009.02.11
SDI 기반에서..  (0) 2009.02.11
srand(), rand() 함수 설명  (0) 2009.02.11
CString, Int, Double 변수들 변환  (0) 2009.02.11
반응형
// 한 프로그램에서 실행된 Frame
CMainFrame* pFrm  = (CMainFrame*) AfxGetMainWnd(); 


// 활성화 되어 있는 View
CMyBankView* pView = (CMyBankView*) pFrm->GetActiveView();


// Document 가져오기 :: View 에서 사용
GetDocument()



ps. 헤더 파일 include 하고 헤더파일에서 에러 날시 해당 class 를 선언해줘야 한다.
반응형

'프로그래밍 > MFC' 카테고리의 다른 글

메세지맵 Class :: CCmdTarget  (0) 2009.02.11
DB 사용하기..  (0) 2009.02.11
srand(), rand() 함수 설명  (0) 2009.02.11
CString, Int, Double 변수들 변환  (0) 2009.02.11
Dialog 에 관련된 것들..  (0) 2009.02.11
반응형

난수라는 것은, 알 수 없는 수입니다.

즉, 사람의 개입 없이, 어떤 숫자를 하나 취하고 싶을 때 사용하는 것이 난수입니다.

 

그런데 C언어에서의 난수는 사실상 난수가 아닙니다.

C언어에는 여러개의 난수표가 존재하며,

이 하나하나의 난수표에는 임의의 숫자들이 아무런 상관관계 없이 나열되어 있죠.

C언어에서의 난수란, 이 난수표 중 하나에서 순서대로 숫자를 하나씩 꺼내는 작업을 말합니다.

순서대로 숫자를 꺼내는 것이지만, 그 숫자들이 아무런 관계가 없이 나열되어 있기 때문에 사람들이 볼 때는 난수처럼 보이는 것이죠.

 

그런데 만약, 프로그램이 실행될 때마다 동일한 난수표에서 난수를 뽑아낸다면 어떻게 될까요?

프로그램이 실행될 때마다 동일한 숫자들이 나타날 것입니다.

따라서, 매번 실행할 때마다 다른 난수표를 선택해야 하겠죠.

 

여기서 난수표를 seed라고 부릅니다.

어떤 난수표에서 숫자를 하나씩 꺼내는 함수가 rand()입니다.

그리고 C언어에 내장되어 있는 여러개의 난수표 중에서 하나를 선택하는 함수가 srand()입니다.

 

매번 실행할 때마다 다른 난수표를 사용하기 위해서 srand()를 먼저 호출하게 되는데요,

이때 srand()의 인자로 어떤 숫자를 넘겨줘야 합니다.

이 숫자가 난수표 번호에 해당하는데요,

매번 다른 난수표 번호를 지정하기 위해서 보통 time()이라는 함수를 사용합니다.

time()은 현재 시간이죠.

매번 실행할 때마다 시간이 다를 것이므로,

srand(time(NULL))은 매번 다른 난수표(seed)를 선택하게 됩니다.

그 다음 rand()를 호출하게 되면 그 난수표에서 하나씩 난수를 꺼내어 리턴해주는 것이죠.

 

rand()를 사용해서 꺼내지는 난수들은 범위가 있습니다.

0 ~ RAND_MAX라는 범위의 숫자들이 리턴되죠.

RAND_MAX의 값은 0x7fff입니다.

10진수로 하면 32767이죠.

따라서 rand()가 리턴하는 값은 0 ~ 32767 사이의 숫자입니다.

 

그런데 우리가 필요한 것이 0 ~ 9까지의 숫자라면 어떻게 해야 할까요?

rand()가 0 ~ 9까지의 난수만 리턴하도록 설정하면 좋을 것입니다.

하지만 앞에서 말한 것처럼, 이미 난수란 것은 입력된 값입니다.

정해져 있다는 것이죠.

따라서 rand()에게 0 ~ 9까지의 숫자만 리턴하라도 설정할 수 없습니다.

그렇기 때문에 우리는, rand()가 리턴하는 0 ~ 32767까지의 숫자를, 다시 0 ~ 9까지의 숫자로 변환해서 써야 합니다.

그러기 위해서 %연산자를 쓰게 됩니다.

%연산자는 나눗셈의 나머지를 취하는 연산자이죠.

우리가 어떤 수를 X라는 값으로 나누게 되면,

그 나머지는 항상 0 ~ X - 1의 수가 되죠?

예를 들어서 어떤 수를 10으로 나누면, 어떤 수를 나누던간에, 그 나머지는 항상 0 ~ 9까지의 숫자가 됩니다.

이 원리를 이용해서 0 ~ 32767까지의 숫자를 0 ~ X - 1까지의 범위로 바꿀 수 있는 것입니다.

위의 코드에서 rand() % 10을 한 것은,

0 ~ 32767까지의 난수를 0 ~ 9까지의 숫자로 변환하기 위한 코드입니다.

 

그런데 우리가 필요한 것이, 임의의 주사위 숫자처럼, 0부터 시작하는 것이 아니라 1부터 시작한다면 어떻게 해야 할까요?

rand % 6 + 1 을 해야 합니다.

나머지 연산자는 항상 0을 포함한 범위만 가능하기 때문에,

1을 더해줘야 하는 것이죠.

1을 더할 것이기 때문에 나눗셈을 할 숫자도 7이 아니라 6로 해야 합니다.

7로 나누게 되면 0 ~ 6까지의 숫자가 나타나게 되고,

1을 더하면 1 ~ 7까지의 숫자가 나타나게 되죠.

7은 주사위에 없죠.

따라서 6으로 나누고, 그 나머지 0 ~ 5에다가 1을 더해서

1 ~ 6사이의 숫자가 되도록 변환하는 것입니다.


반응형

'프로그래밍 > MFC' 카테고리의 다른 글

DB 사용하기..  (0) 2009.02.11
SDI 기반에서..  (0) 2009.02.11
CString, Int, Double 변수들 변환  (0) 2009.02.11
Dialog 에 관련된 것들..  (0) 2009.02.11
콤보박스에 관련된 것들..  (0) 2009.02.11
반응형
// Int -> CString
str.Format("%d", int형 변수)


// Double -> CString
str.Format("%.2lf", Double형 변수)


// CSting -> Int
_ttoi( CString형 변수 ) 또는 atoi( CString형 변수 )


// CString -> Double
atof( CString형 변수 )


// 변수의 Type 을 알고 싶을때..
typeid( 변수명 )



// typeid( 변수 : 포인터일때 ) return 값이 에러 날때

런타임 에러의 원인은

/GR(런타임 형식 정보 사용)  태그를 속성에 넣어줘야 합니다.


Project-Settings-C/C++-Category(C/C++ Language)- Enable Run-Time Type Information(RTTI)부분 체크해주세여

보통 이부분이 체크되면 실행파일 용량이 증가하는 관계로 디폴트는 체크가 안되어 있어여

코드는 분명 맞는데 계속 에러나서 찾다가 이부분이 문제더군요

반응형

'프로그래밍 > MFC' 카테고리의 다른 글

SDI 기반에서..  (0) 2009.02.11
srand(), rand() 함수 설명  (0) 2009.02.11
Dialog 에 관련된 것들..  (0) 2009.02.11
콤보박스에 관련된 것들..  (0) 2009.02.11
Control List 에 관련 된 것들..  (0) 2009.02.11

+ Recent posts