Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- tcp
- write
- Sync
- 리뷰
- channel
- range
- Callback
- C
- Golang
- FOR
- package
- go언어
- Linux
- http
- JavaScript
- mutex
- c++
- json
- Close
- go
- Python
- window
- API
- 책
- 영화
- windows
- install
- bitcoin
- GO 언어
- File
Archives
- Today
- Total
Code Habit
SendMessage / PostMessage 본문
SendMessage
- 원형 : BOOL SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
- 동작 : 메시지를 큐에 넣지 않고 곧장바로 윈도우 프로시저로 보내 즉각 처리. 메시지가 완전히 처리되기 전에 리턴 하지 않는다. ( 블록 )
- 주의점 : 서로 다른 쓰레드간의 SendMessage 사용은 주의해야 한다. 자칫 잘못하면 프로그램이 멈출 수 있다. 다른 쓰레드간에는 블록이 걸리지 않고 메시지를 큐에 넣어주는 PostMessage를 권장한다.
PostMessage
- 원형 : BOOL PostMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam );
- 동작 : 메시지를 hWnd로 지정된 윈도우의 메시지 큐에 집어 넣어 처리한다. (넌블럭)
- 주의점 : 메시지가 언제 처리 될지 모르므로 메시지의 wParam, lParam에는 지역포인터를 사용하지 않아야 한다. 이럴 땐 동적할당(new) 하여 힙영역에 변수를 만들고 받은 쪽에서 처리 후 delete 하면 된다.