2010년 4월 20일 화요일

MFC::에러 리스트

naver_photo(1).jpg

 

error C2065: 'IDD_DIALOG_XXX' : 선언되지 않은 식별자입니다.

 해당 파일에서 include 하면 된다.

 #include "resource.h"

 

Radio Button Warning : skipping non-radio button in group

Ctrl + D (탭오더 ) .. 라디오 버튼 순서되로...

다음 순서되로 오는 컨트롤 의 그룹 속석을 True 로 변경.

라디오 버튼의 다이얼로그 리소스창에 그룹속성 지정과 리소스 배치하는데서 생겨난 문제

[참고] 데브피아

[참고2] 헤르쯔님 블로그

 

 

WINVER not defined. Defaulting to 0x0600 (Windows Vista)

  6.0 -> vs2008 변환 시. WINVER 을 명시해 주지 않아서 알려주는 메시지

  stdafx.h 젤 위에 다음과 같이 적어준다.

// Visual C++ 4.0 -> 1000
// Visual C++ 5.0 -> 1100
// Visual C++ 6.0 -> 1200
// Visual C++ 7.1(2003) -> 1310
// Visual C++ 8.0(2005) -> 1400
// Visual C++ 9.0(2008) -> 1500
#if _MSC_VER > 1400
// 0x0600 -> Windows Vista
// 0x0502 -> Windows Server 2003
// 0x0501 -> Windows XP
// 0x0500 -> Windows 2000
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
#endif

[참고] Visual C++ 의 컴파일 버전과 Windows 버전에 따른 define

[참고2] WINVER이 설정 안되어서 Vista 기반 컴파일!?

 

warning C4800: 'int' : 'true' 또는 'false'로 bool 값을 강제하고 있습니다(성능 경고).

 정수형 변수를 bool 형으로 변환할 때 발생하는 오류

 해결 방법

  1. 전처리기 추가
     #define getBool(n) ((n) != 0)   
    int n = 1;
    bool bTemp = getBool(x);
  2. 삼항연산자 이용
    int n = 0;
    bool bTemp =   (n != 0) ? true : false;

 

 

[참고] bool 값 강제에 대한 성능 경고

[참고2] [VC++] Visual Studio Warning 해결법 모음.

[참고3] MSDN - Compiler Warning (level 3) C4800

이 글은 스프링노트에서 작성되었습니다.

2010년 4월 9일 금요일

MFC::RemoveAll() 와 FreeExtra()

 naver_photo(1).jpg

 

개발 환경
  • Tool : VS2008
  • Language : C++ (MFC)

 

CArray

  MFC 에서 제공하는 CArray .. 

  동적 할당 하고.. 필요할 때 추가로 할당할 수 있다.

 

RemoveAll () vs FreeExtrea()

  RemoveAll() - Data 삭제, 메모리 할당은 존재

  FreeExtre() - 추가로 할당된 메모리 해제

   RemoveAll() 만 했을 때.. 작업관리자에서는 메모리가 할당되어 보임..

   GetSize() 는 "0" 으로 나옴..

 

참 고

 [1] CArray에서 사용한 메모리를 해제하려고요.. - 팁스소프트

 

이 글은 스프링노트에서 작성되었습니다.

2010년 4월 7일 수요일

MFC::Virtual List Control

HighSpeedListCtrl_추가_개선.zip naver_photo(1).jpg

 

개발 환경
  • Tool : VS2008
  • Language : C++ (MFC)

 

Virtual List Control ??

  일반 리스트 컨트롤은 다수의 DATA를 처리하기에는 부족하다.  이럴 때 가상 리스트 컨트롤을 사용한다.

  가상 리스트 컨트롤이란 , 리스트 컨트롤 내부에서 제공해주는 자료 구조가 아닌 사용자가 직접 작성한 자료구조를 이용하여 데이터를 처리할 수 있다.

 

  리스트 컨트롤의 레이블은 256바이트를 넘을 수 없다거나, 데이터를 삽입하는 속도가 엄청 느리거나 하는 등의 문제를 해결할 때 사용한다.
    보통 삽입 속도 개션을 목적으로 주로 사용된다.

- 출처 : 까막's 블로그

 

코드 구루 vs 까막's 님 소스 비교

  일반 List Ctrl 보다는 출력이나 정렬에서는 성능이 우수하다..

  테스트 해본 결과 .. 코드 구루 소스는 List 출력은 빠르나 정렬이 오래 걸린다.

  까막's 님의 소스는 List 출력은 다소 느리나 .. 정렬이 빠르다는 장점이 있다.

  List 출력 비교  ( 100,000 )

  • 코드 구루 : 약 0.75
  • 까막's 님 : 약 3.5   - 코드 구루 소스에 비해 뿌려지는 data 양이 많음

  정렬 비교 (100,000  - 시간 측정은 못하고 체감적으로만 확인)

  • 코드 구루 : 오래 걸림
  • 까막's 님 : 0.2 ~ 0.3

 

코드 구루 + 까막's 님 

  까막's 님의 소스 수정해서 .. 처음 로딩 시간 줄였다.

  CString 사용 안하게 함.

  HighSpeedListCtrl_추가_개선.zip

 

참 고

 [1] 리스트 컨트롤 시작하기  - 까막's 블로그

 [2] 고속 추가 전용 - 리스트 컨트롤 - 까막's 블로그

 [3] MFC Virtual List Control - 코드구루

 [4] Virtual ListCtrl (가상 리스트 컨트롤) 주의 사항 - As Time goes by 블로그

 [5] Virtual ListCtrl - 새로운 아이템 설정 후 갱신 -  As Time goes by 블로그

 

이 글은 스프링노트에서 작성되었습니다.