src/windows/native/sun/windows/awt_FileDialog.cpp

Print this page




 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)) {