API 함수를 사용하면서 TRACE를 이용하여 Debugging 을 하는 방법은 아래와 같다. #include "windows.h" #include // vsprintf() int TRACE(char *format, ...) { // 한개의 매시지 길이가 1024개를 넘는 경우는 // 애러가 발생한다. 그러므로 매시지는 잘라서 여러번 찍어서 // 사용할 수 있도록 한다. static char Message_Buffer[1024]; // format 스트링의 길이가 512 보다 큰경우는 처리 하지 않도록 // 함. -> 애러의 소지가 있음 .,,. ^^ if(strlen(format) > 512) return FALSE; va_list arglist; va_start( arglist, format ); v..
URL : http://simple21.egloos.com/3482925 이번시간에는 OutputDebugString, TRACE에 대해서 알아보자. 이는 둘 다 Output 창의 Debug Tab에 디버깅 결과 값들을 표시하는 함수이다. 이는 원도우 프로그램에서 디버깅을 위해 편리하게 이용할 수 있다. 1.OutputDebugString() 이 함수는 디버깅 중에 Debug 창에 문자열을 표시하는 함수이다. 이후에 설명할 TRACE 유사(TRACE는 Debug모드에서만 동작, 하지만 이는 Release 모드에서 디버깅(다음에 설명) 중에도 문자열을 표시함) - 만일 위의 Debug 창이 보이지 않으면 "[MENU]View/Output"을 선택 2.TRACE() - OutputDebugString()과 ..
ini 형식의 파일을 읽고 쓰기 편하게 만들어 놓은 API kkk.ini 라는 파일에 아래와 같은 내용이 있을 때에 ----------------------------------------------------------------------------------------- [AAA] a1=안녕하세요 a2=안녕히 계세요 [BBB] b1=어서오세요 b2=GG ----------------------------------------------------------------------------------------- 아래처럼 함수를 호출하면 ----------------------------------------------------------------------------------------- TC..
프로그램 실행중에 사용자가 입력한 옵션 설정이나 프로그램 스스로 만들어낸 정보들을 다음 실행을 위해 저장해두어야 하거나 그것을 가져와 사용할 때 쓰이는 함수이다. BOOL WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTSTR lpFileName) lpAppName : 정보를 기록할 섹션 이름을 지정한다. 만약 섹션이 존재하지 않으면 해당 섹션을 만든다. 대소문자를 구분하지 않는다. lpKeyName : 정보를 기록할 키 이름을 지정하며 없을 경우 만든다. 특수한 경우로 이 인수가 NULL 이면 섹션 내의 모든 정보를 삭제한다. lpString : 키값을 정의하는 문자열이다. 정수나 실수 등의 값을 ..
1.간단한 구조체를 하나 선언한다. typedef struct _INIDATA { int a; int b; char str[20]; }INIDATA; 2.ini파일에써보자 INIDATAaaa ={0}; aaa.a = 10; aaa.b =20; strncpy(aaa.str,"kkkstr",strlen("kkkstr")); WritePrivateProfileStruct("RegistryViewer","korea",&aaa,sizeof(aaa), "c:\\test.ini" ); //섹션,키,값,값크기,파일이름 (파일에다가 섹션을 만들고 키에 대응되게 구조체의 값을 부여하라) c:\test.ini를 열어보면 다음과 같다. [RegistryViewer] korea=0A000000140000006B6B6B73747..
int sscanf(char *s, const char *format, ...) sscanf는 scanf와 비교했을때 앞에 char *s 부분이 추가된것만 다릅니다. 다른건 완벽하게 똑같이 동작합니다. scanf가 화면에서 사용자로부터 입력받아서 그걸 변수에 저장하는거 아시죠? 그걸 C 내부에서는 어떻게 처리할까요? 사용자가 입력한건 C는 문자열로 인식하고 입력 버퍼에 들어가 있게 될겁니다. 그걸 scanf 함수에서 내부 처리를 거쳐 변수에 저장하게 되죠 sscanf는 사용자에게서 문자열을 입력받는 대신 문자열 변수에서 문자열을 입력받습니다. 앞에 기본형에서 char *s 부분이 문자열을 써주는 부분인데요 이 문자열에 저장된 값을 scanf에서 사용자가 입력한 값이라고 생각하고 처리하는 거죠 main()..
클래스 맴버함수를 콜백함수로 사용하기 (passing class member function as callback function) --------------------------------------------------- 이 문제는 윈도우즈 API 와 C++ 언어를 같이 사용할 때 부딫히는 문제이다. 콜백함수를 인자로 요구하는 API 에 클래스의 멤버함수를 넘겨 줄 수는 없는 것인가? 여기 그 해결의 가능성을 보여준다. --------------------------------------------------- 항상 고민해 왔던것. 마음속 깊은곳으로 부터, 나를 괴롭히던 문제. DLGPROC 형 파라메터에 클래스의 맴버함수를 넘겨줄수는 없는것인가. DialogBoxParam( hInst, MAKEIN..