검색결과 리스트
C/C++/VC++ / MFC에 해당되는 글 71건
- 2008.02.25 [MFC] CTreeView와 CTreeCtrl의 관계
- 2008.02.20 [VC++ 6.0] "Not all of the windows in the workspace could be opened" error
- 2008.02.20 [MFC] PreCreateWindow() 1
- 2008.02.20 [VC++ 6.0] resource 파일 Load Failed 메세지
- 2008.02.20 상호 참조 4
- 2008.02.20 [Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다.
- 2008.02.20 오버로딩과 오버라이딩의 차이
- 2008.02.20 #pragma comment
- 2008.02.20 #pragma once
- 2008.02.20 #pragma pack
- 2008.02.20 CString을 char *(을)로 변환할수 없습니다.
글
CTreeView 안에는 CTreeCtrl& GetTreeCtrl( ) const; 로선언된 클래스 멤버 함수가
있습니다. 결국 CTreeCtrl 클래스를 Document-View 구조에서 CTreeCtrl의 사용을 쉽게
해주는 클래스 입니다.
CTreeView 클래스를 사용하기 위해서는
#include <afxcview.h>를 인클루드 해야 합니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
전처리 명령문에서 사용하는 defined 연산자 (0) | 2008.03.03 |
---|---|
[MFC] HitTest() (0) | 2008.03.03 |
[VC++ 6.0] "Not all of the windows in the workspace could be opened" error (0) | 2008.02.20 |
[MFC] PreCreateWindow() (1) | 2008.02.20 |
[VC++ 6.0] resource 파일 Load Failed 메세지 (0) | 2008.02.20 |
트랙백
댓글
글
[VC++ 6.0] "Not all of the windows in the workspace could be opened" error
설정
Visual C++ 6.0 에서 .dsw 파일을 오픈하는데 발생했습니다.
실제 프로젝트에 영향이 있는것은 아니었는데
신경이 쓰여서 ^^ 암튼.... 대처방법은
저 메세지 창이 뜨면 살포시 클릭하고 모든 열여있는 문서를 닫고
워크스페이스도 종료합니다.
다시 .dsw 파일로 오픈하면 에러메세지가 없어집니다.
참고 http://support.microsoft.com/kb/q202817/
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[MFC] HitTest() (0) | 2008.03.03 |
---|---|
[MFC] CTreeView와 CTreeCtrl의 관계 (0) | 2008.02.25 |
[MFC] PreCreateWindow() (1) | 2008.02.20 |
[VC++ 6.0] resource 파일 Load Failed 메세지 (0) | 2008.02.20 |
상호 참조 (4) | 2008.02.20 |
트랙백
댓글
글
윈도우 생성 전에 미리 호출 되는 가상함수 입니다.
인자로 받는 CREATESTRUCT& cs 의 값을 수정해서
반영시킬수 있습니다.
ps. 다만 CDialog 에서는 수정이 안된다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[MFC] CTreeView와 CTreeCtrl의 관계 (0) | 2008.02.25 |
---|---|
[VC++ 6.0] "Not all of the windows in the workspace could be opened" error (0) | 2008.02.20 |
[VC++ 6.0] resource 파일 Load Failed 메세지 (0) | 2008.02.20 |
상호 참조 (4) | 2008.02.20 |
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
트랙백
댓글
글
오픈할려면 'resource 파일 LoadFailed' 에러 메세지가 나타납니다.
CloseAll Window 라는 메뉴를 선택후에 다시 리소스 뷰를 확인해 보시면 됩니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[VC++ 6.0] "Not all of the windows in the workspace could be opened" error (0) | 2008.02.20 |
---|---|
[MFC] PreCreateWindow() (1) | 2008.02.20 |
상호 참조 (4) | 2008.02.20 |
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
트랙백
댓글
글
예) 1. A와 B라는 클래스가 있습니다.
2. 각 파일은 분리컴파일을 위해서 A.h, A.cpp, B.h, B.cpp 이렇게 선언과 정의를 분리해 있습니다.
3. 각 파일들은 모두 같은 폴더에 위치합니다.
//A.h #include "B.h" class A { A(); ~A(); B b; };
//A.cpp #include "A.h" A::A() { } A::~A() { }
//B.h #include "A.h" class B { B(); ~B(); A a; };
//B.cpp #include "B.h" B::B() { } B::~B() { }
위와 같이 하면은 상호 참조로 인하여 에라!!!!! 가 발생합니다.
이때 해결책은
//A.h class B; class A { A(); ~A(); B b; };
//A.cpp #include "A.h" #include "B.h" A::A() { } A::~A() { }
//B.h class A; class B { B(); ~B(); A a; };
//B.cpp #include "B.h" #include "A.h" B::B() { } B::~B() { }
위와 같이 해주시면 간단하게 해결됩니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[MFC] PreCreateWindow() (1) | 2008.02.20 |
---|---|
[VC++ 6.0] resource 파일 Load Failed 메세지 (0) | 2008.02.20 |
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
트랙백
댓글
글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다.
설정
1>d:\_work.svn\_RgnLib.h(65) : warning C4996: 'strcpy'이(가) deprecated
로 선언되었습니다.
1> C:\Program Files\Microsoft Visual Studio 8
\VC\include\string.h(73) : 'strcpy' 선언을 참조하십시오.
1> 메시지: 'This function or variable may be unsafe. Consider using
strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_DEPRECATE. See online help for details.'
위 경고는 2005로 오면서, 인터넷 프로그램,일반 응용프로그램의 골격을 동일한 환경에서
동작시키게 하기 위해서 조정하다보니, 보안관련한 기능이 추가되어서 나오는 경고 메세지 라고 하는군요.
해결 방법은
1. Debug/Release 모드 전처리기 선언에 _CRT_SECURE_NO_DEPRECATE 를 추가
2. 코드 최 상단에
#define _CRT_SECURE_NO_DEPRECATE
또는
#pragma warning(disable:4996) 입력해 주면 됩니다.
그렇지만 위에 방법은 경고를 보이지 않게 하는것이지 문제를 해결한 것은 아닙니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[VC++ 6.0] resource 파일 Load Failed 메세지 (0) | 2008.02.20 |
---|---|
상호 참조 (4) | 2008.02.20 |
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
트랙백
댓글
글
오버로딩(중복정의)이라는 것은 하나의 클래스 내에서 같은 이름을 가지는 메서드가
여러개 정의되는 것을 말합니다.
물론 생성자 뿐만 아니라 다른 메서드들도 오버로딩이 가능합니다.
이것은 컴파일시 컴파일러에 의해 각 메서드들이 구별되며 여기서 기준은 인자가
됩니다.
* 메서드 오버로딩의 특징은 다음과 같습니다.
- 동일 클래스에서 메서드 이름을 재사용 할 수 있다. (객체지향의 특성)
- 접근제한자는 동일하거나 동일하지 않아도 된다.
- 리턴타입도 동일하거나 동일하지 않아도 된다.
- 메서드 이름은 반드시 동일해야 한다.
- 메서드의 매개인자들은 순서, 개수, 타입이 반드시 달라야 한다.
2. 오버라이딩(OverRiding)
부모 클래스에서 구현한 메서드와 동일한 헤더를 갖는 메서드를 정의하여 대체하는
개념을 의미합니다.
한마디로 메서드 재정의라 할 수 있습니다.
* 메서드 오버라이드의 특징은 다음과 같습니다.
- 접근제한자는 달라도 되지만 부모클래스의 접근범위보다 좁으면 안된다.
- 리턴타입은 동일해야한다.
- 메서드 이름도 동일해야한다.
- 메서드 매개인자의 타입, 순서, 개수 모두 동일해야 한다.
- throws 예외 클래스 선언시 선언을 오버라이드 하지 않거나, 부모 클래스에서
선언한 예외 클래스보다 상위 클래스로 선언하면 안된다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
상호 참조 (4) | 2008.02.20 |
---|---|
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
#pragma pack (0) | 2008.02.20 |
트랙백
댓글
글
주로 링크를 걸때 많이 사용합니다.
형식은
#pragma comment("comment-type" [,, commentstring])
이고 comment-type에는 compiler, exestr, lib. linker, user 등이 올 수 있습니다.
Visual Studio 2005 에서는 '프로젝트 속성--> 링커 --> 입력 --> 추가 종속성' 에서
설정 할 수 있지만 다른 코드와 호완을 생각한다면 #pragma comment을 사용하는게
좋다고 생각합니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
---|---|
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
#pragma pack (0) | 2008.02.20 |
CString을 char *(을)로 변환할수 없습니다. (0) | 2008.02.20 |
트랙백
댓글
글
이 파일 제일 상단에 '#pragma once'라고 표기해주면
컴파일이 한번만 됩니다.
다른 방법으로는
#ifndef __SAMPLE__H__ # define __SAMPLE__H__ // 한번만 컴파일 할 코드 내용 #endif// #ifndef __SAMPLE__H__
해도 됩니다.
그렇지만은 한번에 하는 #pragma once가 낫겠지요 ^^
ps. #ifndef __SAMPLE__H__는 '__SAMPLE__H__'가 정의되지 않았다면 실행하라는 말입니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
---|---|
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma pack (0) | 2008.02.20 |
CString을 char *(을)로 변환할수 없습니다. (0) | 2008.02.20 |
트랙백
댓글
글
struct A { BYTE a; // 1Byte WORD b; // 2Byte DWORD c; // 4Byte }; A test;
1+2+4 = 7 총 7Byte라고 생각하는데
실제 sizeof(test) 해보면 12Byte로 나옵니다.
이유는 운영체제가 32bit일때 4Byte에 최적화 되어 있어서
structure가 4Byte가 아니면 4Byte로 맞추는 경향이 있습니다.
이런걸 padding이라고 하는데
이럴대는 padding을 1Byte로 맞추면 됩니다.
방법은
#pragma pack(push, 1) struct A { BYTE a; // 1Byte WORD b; // 2Byte DWORD c; // 4Byte }; #pragram pack(pop)
이렇게 하고 다시 sizeof로 확인해 보면은 제대로 7Byte로 나타납니다.
ps. #pragma pack 컴파일러 명령은 구조체 단위로 멤버 정렬 방식을 설정할 때 사용합니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
---|---|
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
CString을 char *(을)로 변환할수 없습니다. (0) | 2008.02.20 |
트랙백
댓글
글
2005 는 기본적으로 유니코드 입니다. 그래서 변환시 에러가 발생합니다.
방법은
1. (LPTSTR)(LPCTSTR)로 강제 형변환
2. CString str;
str.GetBuffer(str.GetLength());
해주시면 char *을 리턴합니다.
사용예
1번의 경우는 스트링을 읽는 목적으로만 사용할때 요긴합니다.
2번의 경우는 스트링을 수정해야 할때 사용하면 편합니다.
ps. 위 두가지 방법중에 2번을 추천합니다.
그리고 GetBuffer를 사용하시면 ReleaseBuffer()를 사용해서 해제해 주셔야합니다.
'C/C++ > VC++ / MFC' 카테고리의 다른 글
[Visual Studio 2005] warning C4996: 'strcpy'이(가) deprecated로 선언되었습니다. (0) | 2008.02.20 |
---|---|
오버로딩과 오버라이딩의 차이 (0) | 2008.02.20 |
#pragma comment (0) | 2008.02.20 |
#pragma once (0) | 2008.02.20 |
#pragma pack (0) | 2008.02.20 |
RECENT COMMENT