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)..
무효화 영역을 설정할때, 즉 WM_PAINT를 호출하기 위해 주로 쓰는 명령어는~~ BOOL InvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL bErase); 인데 자~ 다음같은 명령을 한번 처리해보도록 하죠 static int tmp=333; //333은 0이나 1이 아니도록 아무거나 써준 숫자랍니다. WM_PAINT: if(tmp == 0) process tmp0; else if(tmp == 1) process tmp1; break; WM_LBUTTONDOWN: tmp = 0; InvalidateRect(hWnd,NULL,TRUE); tmp = 1; break; 자~ 마우스 왼쪽 버튼을 클릭할 경우 process tmp0이 처리될까요? 아니면 process t..
메모리DC를 생성하고 바로 BitBlt로 hdc에서 memDC로 옮기면 옮겨지지 않습니다. 이유가 뭘까요~? MemDC는 생성직후의 크기가 1x1이기 때문이지요~ HBITMAP hBit; HDC hdc, hMemDC; WM_CREATE: hdc = GetDC(hWnd); hBit = CreateCompatibleBitmap(hdc,1024,768); hMemDC = CreateCompatibleDC(hdc); SelectObject(hMemDC, hBit); 이렇게 CreateCompatibleBitmap으로 HBITMAP을 생성해 준 후, SelectObject로 MemDC를 선택해주면 크기가 HBITMAP의 크기로 설정됩니다~ 다만 배경이 검은색으로 차기 때문에 흰색으로 채워줘야겠죠???
콘솔 프로그래밍만 하다가 win32로 넘어오면서 무수히 많은 변수선언 식별자 들을 볼 수 있는데 그 중에 몇가지를 살펴보도록 하자. LPSTR : 유니코드를 지원하지 않는 문자열이다. 한문자당 1바이트이며 콘솔에서 쓰던 char*랑 똑같다고 보면 되겠다. LPCSTR : 위의 선언식에 비해 C가 추가 되었다. const char*를 나타낸다. 역시나 1바이트 LPTSTR : LPSTR에 비해 T가 추가 되었다. 유니코드를 지원하는 string형태의 선언식이다. 한문자당 2바이트. 한글을 쓰지 않는 이상 거의 사용되지 않는다. TCHAR* 와 같은 기능 LPCTSTR : const TCHAR* 팁 - const를 붙이면 '읽기 전용'이라고 생각해주면 쉽다. LRESULT : 꽤나 자주보이는 형. long ..
내가 고등학교 1학년때 WINAPI를 처음 접했을 때, 가장 몰랐던 것이 lParam과 wParam에 관한 것이었다.(지금 생각해 보면 참 웃기다.) 둘을 왜 굳이 따로 쓰는거여!!? 일단, 도대체 여기저기서 발견 되는 wParam과 lParam은 무엇인고?? 아주 쉽게 생각해서! 기본(default)으로 지정 되어 있는 기본 인자! 라고 생각하면 된다. 우리가 MOUSE를 컨트롤 하기 위해 메세지에서 WM_LBUTTONDOWN을 받았다고 하면, 곧 사용자가 알게될 값은 무엇일까? 바로 '좌표'이다! LBUTTONDOWN 메세지를 처리하는 순간의 lParam의 상위 16비트는 x좌표를, 하위 16비트는 y좌표를 갖게 된다. 이를 구분 할려면 HIWORD(lParam)과 LOWORD(lParam)으로 구분..
- Total
- Today
- Yesterday
- 안드로이드
- driver
- Troubleshooting
- winapi
- source
- android
- 음악
- gcc
- it
- database
- Cloud
- Quiz
- algorithm
- Visual C++
- jni강좌
- C
- java
- db
- kering
- 드라이버
- jni
- linux
- NDK
- Python
- 프로그래밍
- C++
- MFC
- API
- AWS
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |