변수 명명법 cb Count of Bytes 바이트 수 dw double word long형 정수 h handle 핸들 sz Null Terminated NULL 종료 문자열 ch Character 문자형 a Array 배열 w Word 부호없는 정수형 i integer 정수형 p,lp long pointer 포인터형 b Bool 논리형 핸들이란? 정수값 대부분의 경우 32비트값. 운영체제가 발급하며 사용자는 쓰기만 한다. 같은 종류의 핸들끼리는 절대로 중복된 값을 가지지 않는다. 정수형이므로 값을 가지겠지만 그 실제값이 무엇인지는 몰라도 상관없다. 유니코드 16비트의 단일한 값으로 지구상의 모든 문자를 표현할 수 있는 문자 코드 체계. C언어의 타입을 바로 쓰지 말고 유니코드 설정에 따라 변경되는 중간..
#include #include #include /*for _beginthreadex, _endthreadex*/ #pragma comment( lib, "ws2_32" ) unsigned WINAPI ThreadFunction(void* arg); int main(int argc, char** argv) { HANDLE hThread; DWORD dwThreadID; hThread = (HANDLE)_beginthreadex(NULL, 0, ThreadFunction, NULL, 0, (unsigned*)&dwThreadID); if(hThread == 0) { puts("_beginthreadex() error"); exit(1); } printf("생성된 쓰레드의 핸들 : %d \n",hThread..
WM_MOUSEWHEEL은 그냥 선언한다고 되지 않아요. windows.h안의 WM_MOUSEWHEEL부분의 정의를 보면 #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSEWHEEL 0x020A #endif 이렇게 되어있습니다. 따라서 stdafx.h에 보통 선언되어있는 #ifndef _WIN32_WINNT // Windows XP 이상에서만 기능을 사용할 수 있습니다. #define _WIN32_WINNT 0x0501 // 다른 버전의 Windows에 맞도록 적합한 값으로 변경해 주십시오. #endif 이부분에서 WINNT뒤의 값을 잘 조정해야겠지요~~ 보통 default값을 #ifndef WINVER // Windows..
제작환경 Visual Studio 2005 C++/Win32 API 그림을 확대/축소할 때 스무스하게 이루어지도록 코딩했습니다. 더블버퍼링 예제로도 도움이 될거에요. 감사합니다. 주요코드 case WM_TIMER: switch(wParam) { case 1: if(nSampleWidth != nDestWidth) { if(bZoomMode) { nCntWidth = abs(nDestWidth - nSampleWidth); nSampleWidth+=(nCntWidth/7); } else { nCntWidth = abs(nDestWidth - nSampleWidth); nSampleWidth-=(nCntWidth/7); } } if(nSampleHeight != nDestHeight) { if(bZoomMo..
http://www.winapi.co.kr 의 '더블 버퍼링' 강좌 부분에서 가장 눈에 띄는 부분. 이 코드에서 흔히 오해하기 쉬운 것이 있는데 메모리 비트맵인 hBit와 메모리 DC인 hMemDC와의 관계이다. GDI 출력 함수들은 반드시 DC 핸들을 요구하며 비트맵에 출력하기 위해서는 이 비트맵을 선택하고 있는 메모리 DC의 핸들이 필요하다. 그래서 화면 DC와 호환되는(=비트맵과 호환되는) hMemDC를 생성하고 여기에 비트맵을 선택한 후 출력했다. 이 DC는 어디까지나 비트맵 출력을 위한 임시 DC이므로 비트맵을 다 작성하고 난 다음에는 해제되어야 한다. 더블 버퍼링에서 내부 버퍼라고 칭하는 것은 비트맵이지 메모리 DC가 아니다. 메모리 DC는 비트맵을 선택하기 위해 잠시만 사용되는 DC일 뿐인데..
Edit Control에는 WM_COPY라는 메세지가 있는데요, Edit Control에서 WM_COPY를 사용 할 경우 셀렉트된 부분을 복사하게 되지요. 하지만 셀렉트 하지 않고 Edit Control내의 모든 내용을 한번에 복사 할 수 있습니다. 이렇게~ SendMessage(Edit1,EM_SETSEL,0,-1); SendMessage(Edit1,WM_COPY,0,0); EM_SETSEL은 선택 영역의 시작과 끝점을 변경 하는 메세지인데요, wParam으로 시작점, lParam으로 끝점을 전달합니다. wParam에 0, lParam에 -1을 넣으면 전체 선택이에요 :) 아 그리고 wParam이 -1이면 선택영역을 해제하게 된답니다! p.s>Edit Control에 지정된 문자를 샥~ 하고 입력해주고..
분명히 WM_LBUTTONDBLCLK: 라는 더블클릭 메세지가 존재함에도 불구하고 더블클릭 할 경우 실행되지 않아요. 어떻게 해결해야 할까요? 윈도우를 생성할 때 style에다가 CS_DBLCLKS를 추가해 주면 됩니다~~ wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; 이렇게요~ 그리고.. 리스트박스에서 더블클릭 했을때의 메세지는 LBN_DBLCLK:인데.. 이것역시 그냥은 먹지 않아요. 역시나~ 생성할때 스타일에 LBS_NOTIFY를 써줘야 합니다. hList=CreateWindow("listbox",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | LBS_NOTIFY,10,10,300,300,hWnd,(HMENU)..
프로그래밍 되어있는 소스들을 건들다 보면 #ifdef #ifndef #endif #include #define 이런것들을 볼 수 있는데~~ '전처리기'라고 하죠~ #include와 #define은 모두 아실테고.. 나머지 세개를 볼까요? 너무나 쉽습니다 #ifdef STAR //STAR가 define되어 있다면 #define A B #endif #ifndef STAR //STAR가 define되어있지 않다면 #define A C #endif 이게 다에요~ #endif는 반드시 #ifdef또는 #ifndef와 함께 쓰입니다. stdafx.h를 보면 #define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용은 Windows 헤더에서 제외합니다. // Windows 헤더 파일: #incl..
- Total
- Today
- Yesterday
- Cloud
- Troubleshooting
- 리눅스
- winapi
- NDK
- jni강좌
- linux
- database
- source
- algorithm
- jni
- gcc
- C
- android
- API
- 프로그래밍
- Visual C++
- C++
- MFC
- 안드로이드
- driver
- kering
- AWS
- 음악
- java
- Python
- it
- Quiz
- 드라이버
- db
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |