Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. LRESULT CALLBACK WndProcedure(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){
  2.  
  3. msg_dev(toString(uMsg));
  4.  
  5. switch(uMsg){
  6.  
  7. case WM_MOUSEMOVE:
  8. SetCursor(LoadCursor(NULL, IDC_HAND));
  9. break;
  10.  
  11. case WM_LBUTTONDOWN:
  12. msg_dev("Button down!");
  13. break;
  14.  
  15. default:
  16. DefWindowProc(hwnd, uMsg, wParam, lParam);
  17. }
  18.  
  19. return 0;
  20. };
  21.  
  22. WNDPROC prevWndProc;
  23. ...
  24. prevWndProc = (WNDPROC) SetWindowLongPtr(hwnd, GWL_WNDPROC, (LONG_PTR)&myNewWndProc);
  25. ...
  26. LRESULT CALLBACK myNewWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  27. {
  28. msg_dev(toString(uMsg));
  29.  
  30. switch(uMsg)
  31. {
  32. case WM_MOUSEMOVE:
  33. SetCursor(LoadCursor(NULL, IDC_HAND));
  34. break;
  35.  
  36. case WM_LBUTTONDOWN:
  37. msg_dev("Button down!");
  38. break;
  39. }
  40.  
  41. return CallWindowProc(prevWndProc, hwnd, uMsg, wParam, lParam);
  42. }
  43.  
  44. SetWindowSubclass(hwnd, &mySubClassProc, 1, 0);
  45. ...
  46. LRESULT CALLBACK mySubClassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
  47. {
  48. msg_dev(toString(uMsg));
  49.  
  50. switch(uMsg)
  51. {
  52. case WM_MOUSEMOVE:
  53. SetCursor(LoadCursor(NULL, IDC_HAND));
  54. break;
  55.  
  56. case WM_LBUTTONDOWN:
  57. msg_dev("Button down!");
  58. break;
  59.  
  60. case WM_NCDESTROY:
  61. RemoveWindowSubclass(hWnd, &mySubClassProc, 1);
  62. break;
  63. }
  64.  
  65. return DefSubclassProc(hWnd, uMsg, wParam, lParam);
  66. }
  67.  
  68. SetWindowLong(hwnd, GWL_WNDPROC, (LONG_PTR)&myNewWndProc);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement