IP Address를 문자열을 받으면 각 한 BYTE로 나누는 방식입니다.

strtok() 함수를 사용하였습니다. - 함수에 대한 자세한 내용은 MSDN http://msdn.microsoft.com/ko-kr/library/2c8d19sb(VS.90).aspx

strIpAddres = "192.168.0.0"    이렇게 받는다고 하면...

char* szIpAddress;
BYTE  m_IpAddr[4];

char *p;
 int i = 0;
 p = strtok(szIpAddress, ".");  // 192 대입됨
 m_IpAddr[i] = atoi(p);        
 while(p!=NULL) 
 {
  i++;
  p = strtok(NULL, "."); // 168  -> 0 -> 0 순서대로 대입 (이유는 아래)
  if(p)
 IpAddr = atoi(p);
 } 

이렇게 하면 BYTE m_IpAddr[4];  에 [0] ~ [3] 배열에 192.168.0.0 이 들어갑니다.

ex)
IpAddr[0] ->192
IpAddr[1] ->168
IpAddr[2] ->0
IpAddr[3] ->0


-- 아래 --
strtok 함수 사용 할때 알아야 할점)

처음 호출할땐 strtok(szIpAddress, "." ) 이것처럼 해당 문자열의 처음시작주소를 넘겨주고

다음 호출할땐 좀 전에 니가 바꿔버린 NULL부터 다시 토큰을 뽑아내라고 strtok( NULL, "." )이라고 집어넣어야 합니다.

strtok() 함수의 특성(?)이라고 합니다.

Visual Studio 2010 부터는 "MFC PropertyGird Control"을 지원해줍니다. 2008 이하 버전부터는 따와(?)야 되죠 -ㅇ-;;


암튼 오랜만에 2010을 쓰기도하고, 처음으로 2010버전 PropertyGird Control을 사용했는데..

처음부터 난관(?)에 부딪혔습니다. 밑에 그림처럼 1번째 Column의 사이즈가 작게 나오더군요 -.-;;



해결 방법은 간단합니다.

컨트롤 변수를 선언해주시고. 밑에 소스 추가합니다.

 HDITEM item;
 item.cxy = 200;  // Size
 item.mask = HDI_WIDTH;
 m_ctrlGridControl.GetHeaderCtrl().SetItem(0, &HDITEM(item));  //  m_ctrlGridControl => Control 변수 // Header Column Size 설정


(2008 이하 버전들도 동일할 것 입니다)


짜잔!

아마..아마도...저처럼 검색하는 분들이 있을거라..믿고..적어봅니다 =ㅇ=ㅋㅋ
  1. dd 2012.06.14 16:27 신고

    헐... 느무느무 감사합니다-_-;

퍼옴 http://deios.kr/399 

요즈음..형변환에 민감해져있네...

-----------
 LPCTSTR형을 char*형으로 변환하는 방법을 알려드리겠습니다.

먼저 소스부분에
USES_CONVERSION;
라고 적어줍니다.

선언된 곳으로 이동해보니
#ifndef _DEBUG
#define USES_CONVERSION int _convert; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw; (_lpw); LPCSTR _lpa; (_lpa)
#else
#define USES_CONVERSION int _convert = 0; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw = NULL; (_lpw); LPCSTR _lpa = NULL; (_lpa)
#endif
이따구로 define되어있네요...

그리고 char*로 변환할 LPCTSRT변수를 W2A로 묶어줍니다.

이것도 선언된 곳으로 이동해보니
#define W2A(lpw) (\
((_lpw = lpw) == NULL) ? NULL : (\
(_convert = (lstrlenW(_lpw)+1), \
(_convert>INT_MAX/2) ? NULL : \
ATLW2AHELPER((LPSTR) alloca(_convert*sizeof(WCHAR)), _lpw, _convert*sizeof(WCHAR), _acp))))
이따구로 define되어있습니다.

종합하면 이런 형식이 되겠죠?
USES_CONVERSION;
char *tmp = W2A(LPCTSTR문자열);

아... 헤더파일은
ctlconv.h
입니다

+ Recent posts