source: trunk/src/ddraw/os2DDWindow.cpp@ 503

Last change on this file since 503 was 503, checked in by hugh, 26 years ago

Changed to use ODINCRT macros to preserve FS, but still does crash

File size: 1.4 KB
Line 
1#define INCL_WIN
2#include <os2wrap.h>
3#include <odincrt.h>
4#include <odinwrap.h>
5#include "os2DDWindow.h"
6
7PFNWP pfnOrgClientProc = NULL;
8
9MRESULT EXPENTRY DDOS2WindowProc(HWND hwnd, ULONG ulMsg, MPARAM mp1, MPARAM mp2);
10extern VOID SwitchDisplay(HWND hwnd);
11
12ODINFUNCTION1(BOOL , OS2DdSubClassWindow ,HWND, hwndClient)
13{
14 HWND hwndParent;
15
16 // only allow subclassing once!
17
18 if(NULL==pfnOrgClientProc)
19 {
20 hwndParent = WinQueryWindow(hwndClient,QW_PARENT);
21
22 if(hwndParent!=HWND_DESKTOP)
23 hwndFrame = hwndParent;
24 else
25 hwndFrame = hwndClient;
26
27 pfnOrgClientProc = WinSubclassWindow(hwndFrame,DDOS2WindowProc);
28
29 return TRUE;
30 }
31
32 return FALSE;
33}
34
35
36MRESULT EXPENTRY DDOS2WindowProc(HWND hwnd, ULONG ulMsg, MPARAM mp1, MPARAM mp2)
37{
38 USHORT usFlags;
39
40 ODIN_FS_BEGIN
41
42 switch(ulMsg)
43 {
44 // capture the mouse
45 case WM_ACTIVATE:
46 if(mp1)
47 WinSetCapture(HWND_DESKTOP,hwnd);
48 else
49 WinSetCapture(HWND_DESKTOP,NULLHANDLE);
50 break;
51 case WM_CHAR:
52 // Check for CTRL+SHIFT+F12 to toggle between stretched (FS) / windowd mode
53 usFlags = SHORT1FROMMP(mp1);
54 if(!(usFlags & KC_KEYUP))
55 {
56 if( (usFlags & KC_VIRTUALKEY) && (usFlags & KC_SHIFT) && (usFlags & KC_CTRL))
57 {
58 if(VK_F12 == SHORT2FROMMP(mp2))
59 SwitchDisplay(hwnd);
60 }
61 }
62 break;
63 default:
64 break;
65 }
66
67 ODIN_FS_END
68
69 return pfnOrgClientProc(hwnd, ulMsg, mp1,mp2);
70}
71
Note: See TracBrowser for help on using the repository browser.