139 if (awtParent == NULL) {
140 ::SendMessage(parent, WM_SETICON, (WPARAM)ICON_BIG,
141 (LPARAM)AwtToolkit::GetInstance().GetAwtIcon());
142 } else {
143 env->DeleteLocalRef(awtParent);
144 }
145
146 // subclass dialog's parent to receive additional messages
147 WNDPROC lpfnWndProc = ComCtl32Util::GetInstance().SubclassHWND(parent,
148 FileDialogWndProc);
149 ::SetProp(parent, NativeDialogWndProcProp, reinterpret_cast<HANDLE>(lpfnWndProc));
150
151 ::SetProp(parent, OpenFileNameProp, (void *)lParam);
152
153 break;
154 }
155 case WM_DESTROY: {
156 HIMC hIMC = ::ImmGetContext(hdlg);
157 if (hIMC != NULL) {
158 ::ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
159 }
160
161 WNDPROC lpfnWndProc = (WNDPROC)(::GetProp(parent, NativeDialogWndProcProp));
162 ComCtl32Util::GetInstance().UnsubclassHWND(parent,
163 FileDialogWndProc,
164 lpfnWndProc);
165 ::RemoveProp(parent, ModalDialogPeerProp);
166 ::RemoveProp(parent, NativeDialogWndProcProp);
167 ::RemoveProp(parent, OpenFileNameProp);
168 break;
169 }
170 case WM_NOTIFY: {
171 OFNOTIFYEX *notifyEx = (OFNOTIFYEX *)lParam;
172 if (notifyEx) {
173 jobject peer = (jobject)(::GetProp(parent, ModalDialogPeerProp));
174 if (notifyEx->hdr.code == CDN_INCLUDEITEM) {
175 LPITEMIDLIST pidl = (LPITEMIDLIST)notifyEx->pidl;
176 // Get the filename and directory
177 TCHAR szPath[MAX_PATH];
178 if (!::SHGetPathFromIDList(pidl, szPath)) {
|
139 if (awtParent == NULL) {
140 ::SendMessage(parent, WM_SETICON, (WPARAM)ICON_BIG,
141 (LPARAM)AwtToolkit::GetInstance().GetAwtIcon());
142 } else {
143 env->DeleteLocalRef(awtParent);
144 }
145
146 // subclass dialog's parent to receive additional messages
147 WNDPROC lpfnWndProc = ComCtl32Util::GetInstance().SubclassHWND(parent,
148 FileDialogWndProc);
149 ::SetProp(parent, NativeDialogWndProcProp, reinterpret_cast<HANDLE>(lpfnWndProc));
150
151 ::SetProp(parent, OpenFileNameProp, (void *)lParam);
152
153 break;
154 }
155 case WM_DESTROY: {
156 HIMC hIMC = ::ImmGetContext(hdlg);
157 if (hIMC != NULL) {
158 ::ImmNotifyIME(hIMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
159 ::ImmReleaseContext(hdlg, hIMC);
160 }
161
162 WNDPROC lpfnWndProc = (WNDPROC)(::GetProp(parent, NativeDialogWndProcProp));
163 ComCtl32Util::GetInstance().UnsubclassHWND(parent,
164 FileDialogWndProc,
165 lpfnWndProc);
166 ::RemoveProp(parent, ModalDialogPeerProp);
167 ::RemoveProp(parent, NativeDialogWndProcProp);
168 ::RemoveProp(parent, OpenFileNameProp);
169 break;
170 }
171 case WM_NOTIFY: {
172 OFNOTIFYEX *notifyEx = (OFNOTIFYEX *)lParam;
173 if (notifyEx) {
174 jobject peer = (jobject)(::GetProp(parent, ModalDialogPeerProp));
175 if (notifyEx->hdr.code == CDN_INCLUDEITEM) {
176 LPITEMIDLIST pidl = (LPITEMIDLIST)notifyEx->pidl;
177 // Get the filename and directory
178 TCHAR szPath[MAX_PATH];
179 if (!::SHGetPathFromIDList(pidl, szPath)) {
|