검색결과 리스트
메세지에 해당되는 글 3건
- 2015.07.21 안드로이드 monitor.bat(DDMS)를 통한 디버그 메세지 확인
- 2013.03.07 BN_CLICKED, BM_CLICK
- 2013.02.23 ListBox Message, LB_메세지 종류
안드로이드 프로그래밍을 할때 꼭 필요한 것은 바로 디버그 메세지 확인이다.
물론 스마트폰의 디바이스 드라이버는 설치가 되어 있고, SDK가 설치 되어 있어야 한다.
1. ADB LOGCAT
cmd를 통해 아래의 adb를 실행하면 된다.
C:\Users\Administrator\AppData\Local\Android\sdk\platform-tools\adb.exe logcat 태그명:D *:S
C:\Users\Administrator\AppData\Local\Android\sdk\platform-tools\adb.exe logcat | find "찾을내용"
리눅스에서는 find 대신 grep을 이용하면 된다.
하지만 adb logcat을 이용하려면 CUI방식이기 때문에 불편함을 많이 느끼는데 이때 사용하면 좋은 것이 바로
DDMS!!! => Monitor로 업그레이드되었다.
2. Monitor (DDMS)
아래의 SDK 위치로 이동하여 monitor.bat를 실행한다.
C:\Users\Administrator\AppData\Local\Android\sdk\tools\monitor.bat
연결된 스마트폰의 로그도 볼 수 있고, 디바이스 위쪽 아이콘 중에서 스마트폰 3개가 겹쳐진 모양을 누르면 화면 캡쳐도 가능하다.
굳굳!
의문점:
SubClassing으로 Button Window를 연결했을때
Click Message를 받을려면 어떻게 해야하는가?
BN_CLICKED : Button에서 "Click"시 발생한 메세지를 부모에게 메세지로 보내준것이다
아래의 코드를 보면
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
switch (wmId)
{
case ID_BUTTON3:
switch(wmEvent)
{
case BN_CLICKED:
MySend();
EditAddLast(hEdit,"BN_CLICKED");
break;
case BM_CLICK:
MySend();
EditAddLast(hEdit,"BM_CLICK");
break;
}
break;
}
break; |
결과를 출력하게 되어있다. (EditAddLast는 개인적인출력함수)
결과를 보면
부모Procedure에서는 BN_CLICKED가 발생됨을 확인할 수 있다.
asdasd가 씌어진 부분은 Edit Window 이다.
EditWindow에서 VK_RETURN ( 엔터키 )에 Button이 눌린것처럼 Message를 보냈다.
case WM_KEYDOWN:
if (wParam == VK_RETURN)
{
SendMessage(GetDlgItem(g_hWnd,ID_BUTTON3), BM_CLICK, 0, 0);//SendMessage버튼이 클릭되게 메세지 보냄
SetFocus(GetDlgItem(g_hWnd,ID_EDIT2));
}
return false; |
VK_RETURN ( 엔터키 ) 가 눌린경우 역시 BN_CLICKED 메세지가 발생된다.
SubClassing을 한 상태이다
|
message값을 알아보기위해 여러가지 상황별로 셋팅해두었다.
->복잡하니 실제 발생된 결과값을 보자
두번 클릭했을경우의 값이다
<WINUSER.h> 를 보면
위의 데이터를 해석해보면
f3 : STATE를 변경한다 (눌렀다가)
f3 : STATE를 변경한다 (뗐다가)
215 : CAPTURECHANGED [ MSDN ] When it receives this message, a window should redraw itself
윈도우 자신을 다시그리고있을때(클릭하면 모양 바뀌자너?)
BM_SETSTATE 살펴보면
A BOOL that specifies whether the button is highlighted. A value of TRUE highlights the button. A value of FALSE removes any highlighting.
Not used.
CEdit의 EN_CHANGE 와 EN_UPDATE 의 차이점 (0) | 2013.04.13 |
---|---|
WINAPI] GetOpenFileName (0) | 2013.03.18 |
IExplore Tab관련, 최상위창 만들기 (0) | 2013.02.23 |
ListBox Message, LB_메세지 종류 (0) | 2013.02.23 |
1.ListBox 생성
HWND hList; //전역변수
hList=CreateWindow("listbox",NULL,WS_CHILD |
WS_VISIBLE | WS_BORDER |
LBS_NOTIFY | LBS_NOINTEGRALHEIGHT |
WS_VSCROLL,
10,100,900,200,hWnd,(HMENU)
ID_LISTBOX,hInst,NULL);
SendMessage(hList, LB_RESETCONTENT,0,0);
2.Message종류
포인터 = 끝이 NULL값인 배열의 주소
포인터의 길이 = 배열의 크기(최대 크기)
아이템 인덱스 = 0을 기준으로 아이템의 인덱스
low = low-word 하위워드
high = high-word 상위워드
설정할 값 = 각 메세지마다 설정할 값
메세지 | 설명 | wParam | lParam |
LB_ADDFILE | DlgDirList 함수에 의해 채워진 리스트 박스에 파일을 추가한다. | 사용 안함 | 포인터 |
LB_ADDSTRING | 문자열 항목을 추가하여 그 인덱스를 리턴한다. | 사용 안함 | 포인터 |
LB_DELETESTRING | 문자열 항목을 삭제하며 남아있는 항목의 개수를 리턴한다. | 아이템 인덱스 | 사용 안함 |
LB_DIR | 파일 목록을 리스트 박스에 추가한다. | 플래그 | 포인터 |
LB_FINDSTRING | 주어진 검색식에 맞는 첫 번째 항목의 인덱스를 조사한다. | 찾을 위치 0이면 처음부터 | 포인터 |
LB_FINDSTRINGEXACT | 주어진 검색식과 정확하게 일치하는 항목의 인덱스를 조사한다. | 찾을 위치 0이면 처음부터 | 포인터 |
LB_GETANCHORINDEX | 마우스에 의해 마지막으로 선택된 항목의 인덱스를 조사한다. | 사용 안함 | 사용 안함 |
LB_GETCARETINDEX | 포커스 사각형을 가진 항목의 인덱스를 조사한다. | 사용 안함 | 사용 안함 |
LB_GETCOUNT | 총 항목 개수를 조사한다. | 사용 안함 | 사용 안함 |
LB_GETCURSEL | 현재 선택되어 있는 항목의 인덱스를 조사한다. | 사용 안함 | 사용 안함 |
LB_GETHORIZONTALEXTENT | 스크롤 가능한 폭을 픽셀 단위로 리턴한다. | 사용 안함 | 사용 안함 |
LB_GETITEMDATA | 주어진 항목의 데이터를 조사한다. | 아이템 인덱스 | 사용 안함 |
LB_GETLOCALE | Locale 정보를 조사한다. 상위워드에는 국가코드, 하위워드에는 언어 ID가 전달된다. | 사용 안함 | 사용 안함 |
LB_GETSEL | 항목의 선택 상태를 조사한다. | 아이템 인덱스 | 사용 안함 |
LB_GETSELCOUNT | 다중 선택 리스트 박스에서 선택된 항목의 개수를 조사한다. | 사용 안함 | 사용 안함 |
LB_GETSELITEMS | 다중 선택 리스트 박스에서 선택된 항목의 인덱스를 조사한다. | 포인터의 길이 | 포인터 |
LB_GETTEXT | 주어진 항목의 문자열을 조사한다. | 아이템 인덱스 | 포인터 |
LB_GETTEXTLEN | 주어진 항목의 문자열 길이를 조사한다. | 아이템 인덱스 | 사용 안함 |
LB_GETTOPINDEX | 화면에 보이는 최상위 항목의 인덱스를 조사한다. | 사용 안함 | 사용 안함 |
LB_INISTORAGE | 대량의 데이터를 추가할 때 메모리를 미리 준비하도록 한다. 이 메세지를 미리 보내놓으면 필요한 만큼 메모리를 확보하므로 삽입 속도가 빨라진다. | 아이템의 개수 | 메모리의 크기 |
LB_INSERTSTRING | 주어진 위치에 문자열을 삽입한다. | 아이템 인덱스 -1이면 마지막 | 포인터 |
LB_ITEMFROMPOINT | lParam으로 주어진 좌표에 가장 가까운 항목의 인덱스를 조사한다. 좌표는 리스트 박스의 작업영역 좌표이다. | 사용 안함 | low x좌표 high y좌표 |
LB_RESETCONTENT | 모든 항목을 삭제한다. | 사용 안함 | 사용 안함 |
LB_SELECTSTRING | 주어진 검색식에 일치하는 첫 번째 문자열을 선택한다. | 찾을 위치 0이면 처음부터 | 포인터 |
LB_SELITEMRANGE | 주어진 범위의 항목들을 선택한다. | TRUE면 선택 ZERO면 반전 | low 시작 값 high 끝 값 |
LB_SELITEMRANGEEX | 주어진 범위의 항목들을 선택하되 시작 항목이 끝 항목보다 뒤쪽에 있으면 선택이 취소된다. | 시작 인덱스 | 끝 인덱스 |
LB_SETANCHORINDEX | 마우스에 의해 최후로 선택된 항목을 설정한다. | 새로운 ANCHOR의 인덱스 | 사용 안함 |
LB_SETCARETINDEX | 포커스 사각형을 주어진 항목으로 옮긴다. | 설정할 값 | TRUE,FALSE |
LB_SETCOLUMNWIDTH | 다중 컬럼 리스트 박스에서 컬럼의 폭을 픽셀 단위로 지정한다. | 설정할 값 | 사용 안함 |
LB_SETCOUNT | 총 항목의 개수를 설정한다. | 설정할 값 | 사용 안함 |
LB_SETCURSEL | 주어진 항목을 선택 상태로 만든다. | 아이템 인덱스 | 사용 안함 |
LB_SETHORIZONTALEXTENT | 스크롤이 가능한 폭을 픽셀 단위로 설정한다. 이 폭을 설정하지 않으면 항목의 길이가 아무리 길어도 수평 스크롤 바가 나타나지 않는다. | 설정할 값 | 사용 안함 |
LB_SETITEMDATA | 항목데이터를 대입한다. | 아이템 인덱스 | 설정할 값 |
LB_SETITEMHEIGHT | 개별 항목의 높이를 설정한다. | 아이템 인덱스 | 설정할 값 |
LB_SETLOCALE | Locale값을 설정한다. | 설정할 값 | 사용 안함 |
LB_SETSEL | 다중 선택 리스트박스에서 한 항목을 선택 상태로 만든다. | TRUE면 선택 ZERO면 반전 | 아이템 인덱스 |
LB_SETTABSTOPS | 탭 중지점을 설정한다. | 설정할 값 | 찾아보세요 |
LB_SETTOPINDEX | 주어진 항목이 화면의 최상위에 있도록 스크롤 시킨다. | 아이템 인덱스 | 사용 안함 |
반환되는 메시지 :
LB_OKAY 0
LB_ERR (-1)
LB_ERRSPACE (-2)
Message종류 출처 : http://blog.naver.com/nawoo/80103964940
3.Message사용방법
종류 |
사용법 |
LB_ADDSTRING | SendMessage(hList, LB_ADDSTRING,0,(LPARAM)buffer); //TCHAR buffer[256]; |
LB_RESETCONTENT | SendMessage(hList, LB_RESETCONTENT,0,0); |
LB_GETCURSEL | curNum = SendMessage(hList,LB_GETCURSEL,0,0); |
LB_DELETESTRING |
SendMessage(hList,LB_DELETESTRING,curNum,0); |
LB_ERR | if(curNum == LB_ERR) "Nothing is Selected" |
LB_GETTEXT | SendMessage(hList,LB_GETTEXT,curNum,(LPARAM)buffer); //TCHAR buffer[256]; |
LB_FINDSTRING | curNum = SendMessage(hList, LB_FINDSTRING, -1, (LPARAM)buffer); //TCHAR buffer[256]; |
CEdit의 EN_CHANGE 와 EN_UPDATE 의 차이점 (0) | 2013.04.13 |
---|---|
WINAPI] GetOpenFileName (0) | 2013.03.18 |
BN_CLICKED, BM_CLICK (0) | 2013.03.07 |
IExplore Tab관련, 최상위창 만들기 (0) | 2013.02.23 |
RECENT COMMENT