13 #include "openwidedll.h"
14 #include "openwideres.h"
20 int focusDlgItem(HWND hwnd
, int iFocus
)
22 UINT uID
= focusToCtlID(gOwShared
.iFocus
);
23 if( uID
== CID_DIRLIST
)
25 return SetFocus( GetDlgItem( GetDlgItem(hwnd
, CID_DIRLISTPARENT
) , uID
) ) != NULL
;
28 return SetFocus( GetDlgItem(hwnd
, uID
)) != NULL
;
32 WORD
focusToCtlID(int iFocus
)
34 //BOOL bXP = isWinXP();
52 HWND
getChildWinFromPt(HWND hwnd
)
56 ScreenToClient(GetParent(hwnd
), &pt
);
58 EnableWindow(hwnd
, FALSE
);
59 HWND hw
= ChildWindowFromPointEx(GetParent(hwnd
), pt
, CWP_SKIPDISABLED
| CWP_SKIPINVISIBLE
);
60 EnableWindow(hwnd
, TRUE
);
61 HWND hwSV
= GetDlgItem(GetParent(hwnd
), CID_DIRLISTPARENT
);
64 ClientToScreen(GetParent(hwnd
), &pt
);
65 ScreenToClient(hw
, &pt
);
66 hw
= ChildWindowFromPointEx(hw
, pt
, CWP_SKIPDISABLED
| CWP_SKIPINVISIBLE
);
68 HWND hwEd
= GetDlgItem(GetParent(hwnd
), CID_FNAME
);
71 ClientToScreen(GetParent(hwnd
), &pt
);
72 ScreenToClient(hw
, &pt
);
73 hw
= ChildWindowFromPointEx(hw
, pt
, CWP_SKIPDISABLED
| CWP_SKIPINVISIBLE
);
80 int subclass(HWND hwnd
, WNDPROC wpNew
, LPARAM lpData
)
82 if( GetProp(hwnd
, OW_PROP_NAME
) != NULL
)
84 POWSubClassData pow
= (POWSubClassData
)malloc(sizeof(OWSubClassData
));
87 ZeroMemory(pow
, sizeof(OWSubClassData
));
88 if( !SetProp(hwnd
, OW_PROP_NAME
, pow
) )
94 pow
->wpOrig
= (WNDPROC
)SetWindowLong(hwnd
, GWL_WNDPROC
, (LONG
)wpNew
);
99 int unsubclass(HWND hwnd
)
101 POWSubClassData pow
= (POWSubClassData
)GetProp(hwnd
, OW_PROP_NAME
);
104 SetWindowLong(hwnd
, GWL_WNDPROC
, (LONG
)pow
->wpOrig
);
105 RemoveProp(hwnd
, OW_PROP_NAME
);
113 WORD
viewToCmdID(int iView
)
115 BOOL bXP
= isWinXP();
119 return CMD_2K_DETAILS
;
121 return (bXP
) ? CMD_XP_LIST
: CMD_2K_LIST
;
123 return (bXP
) ? 0 : CMD_2K_SMICONS
;
125 return (bXP
) ? CMD_XP_LGICONS
: CMD_2K_LGICONS
;
127 return (bXP
) ? CMD_XP_THUMBS
: CMD_2K_THUMBS
;
129 return (bXP
) ? CMD_XP_TILES
: 0;
136 BOOL
waitForMutex(void)
140 ghMutex
= OpenMutex(SYNCHRONIZE
, FALSE
, OW_MUTEX_NAME
);
143 dwRes
= WaitForSingleObject(ghMutex
, INFINITE
);
157 void releaseMutex(void)
161 ReleaseMutex(ghMutex
);
167 BOOL CALLBACK
fpEnumChildren(HWND hwnd
, LPARAM lParam
)
170 if( GetClassName(hwnd
, buf
, 31) )
172 switch(gOwShared
.iFocus
)
175 if( strcmp(buf
, WC_LISTVIEWA
) == 0 && GetDlgCtrlID(hwnd
) == CID_DIRLIST
)
179 if( strcmp(buf
, WC_COMBOBOXEXA
) == 0 && GetDlgCtrlID(hwnd
) == CID_FNAME
)
183 if( strcmp(buf
, WC_COMBOBOXA
) == 0 && GetDlgCtrlID(hwnd
) == CID_FTYPE
)
187 if( IsWindowVisible(hwnd
) && strcmp(buf
, TOOLBARCLASSNAMEA
) == 0 && GetDlgCtrlID(hwnd
) == CID_PLACES
)
191 if( strcmp(buf
, WC_COMBOBOXA
) == 0 && GetDlgCtrlID(hwnd
) == CID_LOOKIN
)
196 /* if( GetDlgCtrlID(hwnd) == 0x47c )
198 SetWindowText(hwnd, "C:\\code\\");
199 SendMessage((HWND)lParam, WM_COMMAND, MAKEWPARAM(1, BN_CLICKED), (LPARAM)GetDlgItem((HWND)lParam, 1));
205 static int CALLBACK WINAPI
enumFindChildWindow(HWND hwnd
, PFindChildData pData
)
207 UINT uID
= GetDlgCtrlID(hwnd
);
208 static char buf
[256];
209 if (uID
== pData
->uID
)
211 //dbg("Found window %p with id %d", hwnd, uID);
212 if (GetClassName(hwnd
, buf
, 256) && strcmp(buf
, pData
->szClass
) == 0)
214 pData
->hwFound
= hwnd
;
218 //dbg("Window's class is %s - not what's wanted", buf);
223 HWND
findChildWindow(HWND hwParent
, UINT uID
, const char *szClass
)
227 fData
.szClass
= szClass
;
229 fData
.hwFound
= NULL
;
231 //dbg("findChildWindow: seeking \"%s\", %d", szClass, uID);
233 EnumChildWindows(hwParent
, (WNDENUMPROC
)enumFindChildWindow
, (LPARAM
) & fData
);
235 return fData
.hwFound
;