WinCE에서 RETAILMSG사용시 문자열 출력시 유니코드 출력을 한다.
그러나 ASCII출력이 필요 할때도 있다.
그래서 간단하게 쓰려고 아래와같은 함수를 만들었다.
아래와 같이 쓰인다.
그러나 ASCII출력이 필요 할때도 있다.
그래서 간단하게 쓰려고 아래와같은 함수를 만들었다.
void RETAILMSG_A(BOOL b, char* format, ...) { int i, j; va_list list; va_start(list, format); if (!b) return; if (!format) return; for(i = 0 ; format[i] ; i++) { if(format[i] != '%') RETAILMSG(1, (L"%c", format[i])); else { switch(format[++i]) { case 'c' : RETAILMSG(1, (L"%c", va_arg(list, int))); break; case 'i': case 'd' : RETAILMSG(1, (L"%d", va_arg(list, int))); break; case 'o': RETAILMSG(1, (L"%o", va_arg(list, int) )); break; case 'u': RETAILMSG(1, (L"%u", va_arg(list, int))); break; case 'e': RETAILMSG(1, (L"%e", va_arg(list, double))); break; case 'E': RETAILMSG(1, (L"%E", va_arg(list, double))); break; case 'f' : RETAILMSG(1, (L"%f", va_arg(list, double))); break; case 'F' : RETAILMSG(1, (L"%F", va_arg(list, double))); break; case 'x' : RETAILMSG(1, (L"%x", va_arg(list, int))); break; case 'X' : RETAILMSG(1, (L"%X", va_arg(list, int))); break; case 'p' : RETAILMSG(1, (L"%p", (void*)va_arg(list, int) )); break; case 's' : { char* p = va_arg(list, char*); if (p) { for (j=0; j<strlen(p); j++) RETAILMSG(1, (L"%c", p[j])); } else { RETAILMSG(1, (L"(NULL)")); } } break; default : break; } } } va_end(list); } |
아래와 같이 쓰인다.
int i=10; char* s="string test"; RETAILMSG_A(TRUE, "Test integer:%d, Test string:%s \r\n", i, s); |
'작업일지 > Windows CE' 카테고리의 다른 글
MSCEInf - Windows CE의 CAB파일 관리툴 (0) | 2009.12.04 |
---|---|
WinCE 개발툴 - Remote control (0) | 2009.12.04 |
Windows CE와 Windows Mobile의 차이 그리고 AYGSHELL... (0) | 2009.08.22 |
Windows CE Application에서의 메모리 누수 검사 방법... (0) | 2009.08.22 |
윈도우 데스크탑 영역 (0) | 2009.08.22 |