간혹 c로 작성된 소스의 특정 함수내에서 어떤 변수가 어떤 값을 갖는지 궁금할 때가 있다.

어떻게 확인하느냐는 스타일 나름인데.. 난 디버깅보다는 Afxmessagebox() 사용을 선호한다. 
(breakpoint 잡기의 귀차니즘으로..)

하지만 cpp가 아닌 c로 작성된 소스에서는 Afxmessagebox()를 쓸 수 없으므로

Messagebox()를 사용하면 된다.

MessageBox를 사용하기 위해서는

#include <windows.h> 를 추가

int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)


첫번째 인수 hWnd는 메시지 박스를 소유한 윈도우, 이 윈도우의 중앙에 메시지 박스가 나타난다.
특별한 이유 없다면 NULL을 쓰면 된다.

두번째 인수 lpText : 출력할 문자열

세번째 인수 lpCaption : 메시지박스의 이름 (아무거나 해도 무방)

네번째 인수 uType : 아이콘, 버튼 등을 선택 , MB_OK 로 하면 OK버튼이 나온다... 

헉.. 근데..MB.... OK ??????????


중요한것은 두번째 인수인데..


예를 들어 MFC 기반의 c++ 이라면 


double v 의 값을 알고 싶다면..


CString chk;

chk.Format("v = %lf", v);

AfxMessageBox(chk)를 통해 v의 값을 알아낼 수 있다.



MessageBox의 경우라면..


char *gcvt(double value, int ndec, char *buf); 이 함수를 이용하면 된다.

 첫번째 인자는 변환할 double형 값입니다.
두번째 인자는 전체 몇자리를 문자열로 바꿀것인가를 지정합니다.
세번째는 바꾼 문자열이 저장될 버퍼입니다.
리턴값은 buf로 주어진 버퍼의 포인터입니다.

출처 : 

http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040101&docId=68359592&qb=TFBDVFNUUiBkb3VibGU=&enc=utf8&section=kin&rank=2&search_sort=0&spq=0&pid=gnHU/doi5U4ssuvk4c4sss--153210&sid=TP5SvPNL-kwAADRVEI4



char buf[256];
gcvt(v, 10, buf);

MessageBox (NULL, buf, "title", MB_OK);


이런식..




Posted by 우주여행가
,