본문 바로가기

mfc/C++

C++ 클래스의 임시 객체 임시 객체 기본적으로 C문법에서 int a = 3 + 5; 라는 코드를 입력하고 컴파일 하게 되면 a가 메모리에 올라가서 4바이트를 잡고 (32비트 운영체제 일때) 있다고 생각 하겠지만 실은 3과 5도 메모리에 올라가있다. 그래야 CPU가 처리를 하기 때문... 그럼 총 12바이트가 올라가게 되는데 a같은 경우는 함수가 끈날때 까지는 계속적으로 메모리에 로드되어 있지만 3 과 5는 저 라인이 끈나는 즉시 소멸 된다. 임시 객체는 이와 같다. 클래스 이름에 괄호를 치로 바로 멤버변수 값을 기제 하게 되는데 아래와 같다. #include #include class A { char name[20]; public: A(char* _name) { strcpy(name, _name); cout 더보기
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. 초...간단......하게..ㅡ.ㅡ ㅋㅋㅋㅋㅋㅋ 더보기
슬라이더컨트롤(SliderControl) 만일 일반 View에 슬라이더 컨트롤을 올리려고 한다면, 기본적으로 버튼 컨트롤을 올리는 방법과 유사하다. 우선적으로 슬라이더 컨트롤의 클래스의 객체를 생성한다음 아래의 함수를 사용하여 생성을 하게 되는데 이때 객체를 생성->동적할당 의 순서를 마치면 Create함수를 사용하여 슬라이더 컨트롤을 올리면 된다. CSliderCtrl::Create(DWORD dwStyle,Const Rect& rect,CWnd* pParentWnd, UINT nID); dwStyle : 주로 TBS_AUTOTICKS rect : 슬라이더 컨트롤의 크기를 잡는다. 당연히 사각형이니 left, top,right,bottom이겠지.. pParentWnd : 띄우고자 하는 view의 핸들값 nID : 해당 ID(흠...난이거 대충.. 더보기
뷰에 컨트롤 그리기(버튼컨트롤&리스트컨트롤) Dialog 기반의 formView나 걍 Dialog 라면 문제 없이 컨트롤을 넣지만 일반 VIew에 컨트롤을 그리라고 하면 좀 막막하다. 젠장 이것때문에 엄청난 시간을 투자한것을 생각하면...ㅡㅡ 여기 나온 내용은 '비주얼 C++ 제대로 활용하기' 라는 책에서 참고한 겁니다. 1. 버튼 컨트롤 1) 뷰 클래스 헤더파일에 버튼을 위한 포인터를 하나 추가한다. CButton *pButton; 2) 포인터를 만든 후, 버튼 객체를 new 연산자를 이용하여 객체를 생성한다. OnInitialUpdate() 함수는 뷰가 생성된 후 윈도우에 그려지기 바로 직전에 호출되는 함수이다. 따라서 여기서 버튼의 초기화를 한다. new 연산자는 필요하다면 생성자에 넣어도 된다. void CMyCtrlView::OnIniti.. 더보기
마우스 휠 이벤트 마우스 휠 이벤트 마우스 휠 이벤트는 OnMuseWheel함수에서 처리를 하게 되며, 다음과 같다. ///////////////////////////////////////////////////////////////////////////// BOOL CDcmEditToolView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt) { // TODO: Add your message handler code here and/or call default CDcmEditToolDoc* pDoc = GetDocument(); if(zDelta 더보기
클래스 삭제 방법 일반적으로 프로젝트에서 cpp파일과h파일을 제외시켜도 ClassWizard 에는 클래스가 계속적으로 남아있게 된다. 이것때문에 다시 프로젝트를 만든적도 있었지...아마..-_-; - 생성한 Class를 간단히 완전제거 MFC (1) 프로젝트에 보면 *.clw 화일이 클래스정보를 가지고 있다. 첫번째) "FileView"에서 클래스에 대한 화일을 제거 두번째) 그 화일이 있는 폴더로 가서 화일 제거 세번째) 그 화일의 내용을 가지고 있었던 프로젝트로 가서 clw화일을 제거 그 후 다시 똑같은 이름의 클래스를 생성하시면 똑같은 클래스 이름이 있다는 에러 메세지가 안뜬다. clw화일을 만들려면 클래스 위자드(Ctrl + w : 비쥬얼 스튜디오 6 기준)를 누른 후 clw화일이 제거된 프로젝트로 이동하시면 파일.. 더보기