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 블로그

 

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

2010년 2월 4일 목요일

스프링노트 <-> 텍스트 큐브 모습

 

TextCube 모습 링크

스프링노트 모습 링크

 

단락 1

단락 2

단락 3

단락 4

단락 5
단락 6

일반 글

 

인용 

단락 입니다.

 

  1. 소스 코드
  2. 단락 입니다.

 

섹션

단락입니다.

 

첨자위첨자   첨자아래첨자

 

글자 사이즈 8pt

글자 사이즈 10pt

글자 사이즈 12pt

 

글자 사이즈 14pt

글자 사이즈 18pt

글자 사이즈 24pt

 

  • 블릿 목록 1
  1. 숫자 목록 2
  • 아이콘 목록 3

 

·≡⊆  (이모티콘과 특수기호)

 

 

   
     

 

   
     

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

2010년 2월 2일 화요일

CArray QSort

 

naver_photo.jpg

 

개발 환경
  • Tool : VS2008
  • Language : C++ 

 

구조체 CArray QSort 방법

 어쩌구 저쩌구해서

 Qsort 를 했다.

 

int ComparePoint( const void *elem1, const void *elem2 )
{
  CPoint* p1 = (CPoint*) elem1;
  CPoint* p2 = (CPoint*) elem2;
 
  if( p1->x > p2->x ) return +1;
  if( p1->x < p2->x ) return -1;
 
  return 0;
}

 

 

QSort : 크면 0보다 큰 수, 작으면 0보다 작은 수 리턴

 

참고

 [1] CArray 를 qsort 함수로 정렬하기 ( kyuseo의 게임프로그래밍)

 [2] Quick 정렬이란 ? (tipssoft.com)

 [3] qsort (WinApi.co.kr)

 

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

2010년 1월 29일 금요일

구글 docs 에서 textcub..

구글 docs 에서
textcube 블로그로
블로그 내보내기 테스트를 해보았다.

잘 되네 ^^

2010년 1월 27일 수요일

파일 경로에서 파일명만 파싱하기


참고 : http://kurapa.com/content-a13342
참고2 : http://purelab.net/zbxe/1918


CString strPath; // 전체경로가 저장되어있는 변수명
CString strFileName; // 폴더위치를 저장할 변수명

int nPos = strPath.GetLength() - strPath.ReverseFind('\\') - 1;   
strFileName= strPath.Right (  nPos  );

2010년 1월 25일 월요일

CCriticalSection 선언 에러

http://mblog.devpia.com/link/?no=1168455

error C2146: syntax error : missing ';' before identifier 'g_cs'

#include <afxmt.h> 빼 먹으면..

2010년 1월 7일 목요일

TRACE 한글 오류

_CrtDbgReport: String too long or IO Error

환경 : VS2008

VS2008 에서 TRACE 사용 시,

한글을 입력하면 다음과 같이 오류 메시지가 출력된다.

메시지 내용 : _CrtDbgReport: String too long or IO Error

이럴떄는

#include <locale.h> 를 추가하고,

초기화 함수 에서 다음 구문을 추가하면 된다
#ifdef _DEBUG
_tsetlocale(LC_ALL, _T("korean"));
#endif

예)

void Dlg::OnInitDialog()

{

 ///어쩌고 저쩌고

 

#ifdef _DEBUG
_tsetlocale(LC_ALL, _T("korean"));
#endif

 

}