API 73

리스트뷰(혹은 트리뷰 등등)의 배경에 그림 넣기입니다

임프랍니다.. 오늘의 팁은... 리스트뷰(혹은 트리뷰 등등)의 배경에 그림 넣기입니다. 리스트뷰 관련 api를 암만 뒤져봐도, 리스트뷰의 배경에 그림을 넣을 방법이 전혀 없다는 걸 알게 될겁니다. 하지만.. 윈도우즈의 바탕화면도 리스트뷰인데.. 그 배경 그림은?? 분명히 방법이 있기는 있다는 말인데.. 그쵸? ^^ 오늘은, 이 리스트뷰의 배경에 무언가를 그려넣기 위해, 리스트뷰를 서브클래싱해봅시다. 서브클래싱? 좀 생소한 말인가요? 뭐.. 별건 아니고.. 원래는 상속받는다는 의미이지만, api 함수를 사용하는데 있어서는 의미가 좀 달라서, 윈도우 프로시저를 바꿔치워서 해당 윈도우에 전달되는 메시지를 가로채는 것을 말합니다. 슬프게도...(?) 오늘의 팁은, 제 작품이 아니고, 컨닝이랍니다. 원 출처는 b..

API 2009.11.05

[팁] 일반 윈도우에서 다이얼로그박스의 편리한 키보드 인터페이스 구현하기

[팁] 일반 윈도우에서 다이얼로그박스의 편리한 키보드 인터페이스 구현하기 작성자 강성엽 (IP:220.78.3.178) 작성일 2004년 11월08일 20시 10분(조회수:5067) 내용 다이얼로그(특히 모달형 다이얼로그)박스를 만들어보신 분이라면 그 편리한 키보드 인터페이스에 대해 부러움을 가져보셨을 겁니다. TAB 키를 누르면 컨트롤들 사이에서 포커스를 전환할 수 있고, 캐럿을 가지지 않는 컨트롤이라면 방향키로도 포커스 전환이 되고, ShortCut을 이용해 한 번에 포커스를 옮길 수 도 있으며, Default버튼은 포커스를 위치시킬 필요 없이 Enter 키만 눌러도 클릭이 되고, ESC 키를 누르면 WM_COMMAND 메시지와함께 IDCANCEL 코드가 넘어와서, 대화상자를 닫는 등의 작업을 시킬 ..

API 2009.10.15

시스템 정보 알아내기....네이버 지식인 참조

api완전정복책도보고 지식인 고수님들 도움도얻어서 만들고있는 간단한 systeminformation알아오는 소스가있는데요 수많은 api를 찾아보다가 아래의 2개 api를 찾았는데요 아래의 msdn도 보고그랬는데도 실제로 활용이 어렵습니다. 지식인 고수님들께서 도와주세요ㅠㅠ http://msdn2.microsoft.com/en-us/library/ms724833.aspx http://msdn2.microsoft.com/en-us/library/ms724429.aspx OSVERSIONINFOEX : OS버전 가져오기 hostent 구조체 : IP정보를 가져오기 #include // 윈도우 프로시저(각종 메시지 처리) LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage,..

API 2009.10.04

리스트뷰 아이템 스왑, 이동, 정렬 관련 API 소스

// 컬럼 수는 외부에서 입력한다. 이 함수는 빈번하게 사용하므로 Header_GetItemCount 호출은 낭비. void __stdcall ListItemSwap(HWND hList, int One, int Two, int iColCount) { // 텍스트 제외 속성 교환 LVITEM liOne={0}, liTwo={0}; liOne.mask = liTwo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE; liOne.stateMask = liTwo.stateMask = LVIS_CUT | LVIS_DROPHILITED | LVIS_FOCUSED | LVIS_SELECTED | LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK; liOne.iSubIt..

API 2009.09.03

[펌] 프로세스의 메모리안에 접근하고 읽고 쓰기.

[펌] 프로세스의 메모리안에 접근하고 읽고 쓰기. 프로그래밍 2008/08/19 13:47 by 난슬롯 데브피아에서 퍼왔습니다. http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7100&ref=7100 http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7102&ref=7102 http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNo=20&no=7107&ref=7107 안녕하세요. 이 부분에 특히 관심 많은 인간입니다(?). 아직 초짜지만.. 이와 관련된 자료가 적어서 좀 어렵길..

API 2009.07.11

메시지 박스 띄울시 재진입 관련 문제.....

출처) http://elky.tistory.com/32 준비물 : Visual Studio 6.0 , WinSpy++ v1.6 일단 아래와 같은 단순한 API 프로그램을 살펴보자. 그림 1 Visual C++ 6.0에서 New -> Project -> Win32 Application에서 프로젝트 이름은 BULK라고 하고 첫 번째 스텝에서 A typical "Hello World!" application을 선택하여 자동으로 생성된 프로그램을 그대로 빌드하여 실행시킨 것이다. 실제로 해보면 알겠지만 대부분의 Win32 App의 기본 골격인 메인 클래스 등록, 메인 윈도우 생성, 메시지 루프, 윈도우 프로시저까지 생성해 준다. 그림 2 위와 같이 메뉴에서 Help -> About 을 선택하여 모달 다이얼로그를..

API 2009.07.08

멀티바이트 및 유니코드 문자열 길이 구하는 api 사용시 유의점

멀티바이트는 말그대로 문자 하나의 길이를 다양하게(멀티하게^^) 처리한다는 의미이다. 멀티바이트는 숫자나 영문자나 인용부호 등을 1바이트로 처리하며, 그외 한글이나 중국 글자, 일본글자 등은 2바이트로 표현한다. 1바이트와 2바이트 값을 구분하기 위해 2바이트는 무조건 128(0x80)이후의 값으로 시작할 것이다. 가령 영문 'z'는 0x7a, 한글 '가'는 0xb0,0xa1 값으로 표현된다. 시스템이 문자를 맞딱뜨렸을때 0x80보다 적은 값이면 해당 문자를 z처럼 1바이트로 인식하고 0x80이 넘으면 2바이트 값이므로 다음의 1바이트와 같이 읽어서 의미를 파악할 것이다. 유니코드는 각각의 문자에 유니크한 값을 주어서 모든 문자는 동일한 길이를 지닌다. 현재는 2바이트이다. 세계의 모든 문자를 유니코드로..

API 2009.06.24

LoadLibrary와 GetModuleHandle 및 FreeLibrary

LoadLibrary와 GetModuleHandle 둘다 모두 모듈의 핸들값을 구해준다. 다른 점은 LoadLibrary는 현재 해당 모듈이 메모리에 매핑되어 있는지 확인해 보고, 매핑되어 있으면 다시 메모리에 로딩 및 매핑할 필요가 없으므로 바로 모듈의 시작주소를 리턴해주고, 존재하지 않는 경우 비로소 메모리에 로딩 및 매핑시킨다.... 이름 그대로 라이브러리를 로딩하는 것이 주목적이다. 이에 반해 GetModuleHandle는 LoadLibrary와 같은 능동적인 동작은 하지 않고 다만 현재 메모리에 매핑되어 있는 것중 찾을 뿐이다. 그러므로 해당 모듈이 존재하지 않으면 실패할 것이다. 역시 이름에서 알 수 잇듯이 모듈의 핸들을 얻는게 주 목적이다. 로딩된 모듈의 해제는 참조카운트(reference ..

API 2009.06.24

가상 키코드 값

가상키 코드 값 키 VK_LBUTTON 01 VK_RBUTTON 02 VK_CANCEL 03 Ctrl-Break VK_MBUTTON 04 VK_BACK 08 Backspace VK_TAB 09 Tab VK_CLEAR 0C NumLock이 꺼져 있을 때의 5 VK_RETURN 0D Enter VK_SHIFT 10 Shift VK_CONTROL 11 Ctrl VK_MENU 12 Alt VK_PAUSE 13 Pause VK_CAPITAL 14 Caps Lock VK_ESCAPE 1B Esc VK_SPACE 20 스페이스 VK_PRIOR 21 PgUp VK_NEXT 22 PgDn VK_END 23 End VK_HOME 24 Home VK_LEFT 25 왼측 커서 이동키 VK_UP 26 위쪽 커서 이동키 VK_R..

API 2009.05.23