/*********************************************************************** * FD31_WMCommand [internal] */ LRESULT FD31_WMCommand(HWND hWnd, LPARAM lParam, UINT notification, UINT control, PFD31_DATA lfs ) { switch (control) { case lst1: /* file list */ FD31_StripEditControl(hWnd); if (notification == LBN_DBLCLK) { return SendMessageW(hWnd, WM_COMMAND, IDOK, 0); } else if (notification == LBN_SELCHANGE) return FD31_FileListSelect( lfs ); break; case lst2: /* directory list */ FD31_StripEditControl(hWnd); if (notification == LBN_DBLCLK) return FD31_DirListDblClick( lfs ); break; case cmb1: /* file type drop list */ if (notification == CBN_SELCHANGE) return FD31_FileTypeChange( lfs ); break; case chx1: break; case pshHelp: break; case cmb2: /* disk dropdown combo */ if (notification == CBN_SELCHANGE) return FD31_DiskChange( lfs ); break; case IDOK: TRACE("OK pressed\n"); if (FD31_Validate( lfs, NULL, control, 0, FALSE )) EndDialog(hWnd, TRUE); return TRUE; case IDCANCEL: EndDialog(hWnd, FALSE); return TRUE; case IDABORT: /* can be sent by the hook procedure */ EndDialog(hWnd, TRUE); return TRUE; } return FALSE; }
/*********************************************************************** * FD31_FileTypeChange [internal] * called when a new item is picked in the file type combo */ static LRESULT FD31_FileTypeChange( const FD31_DATA *lfs ) { LONG lRet; LPWSTR pstr; lRet = SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETCURSEL, 0, 0); if (lRet == LB_ERR) return TRUE; pstr = (LPWSTR)SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETITEMDATA, lRet, 0); TRACE("Selected filter : %s\n", debugstr_w(pstr)); return FD31_Validate( lfs, NULL, cmb1, lRet, TRUE ); }
/*********************************************************************** * FD31_DiskChange [internal] * called when a new item is picked in the disk selection combo */ static LRESULT FD31_DiskChange( PFD31_DATA lfs ) { LONG lRet; HWND hWnd = lfs->hwnd; LPWSTR pstr; WCHAR diskname[BUFFILE]; FD31_StripEditControl(hWnd); lRet = SendDlgItemMessageW(hWnd, cmb2, CB_GETCURSEL, 0, 0L); if (lRet == LB_ERR) return 0; pstr = HeapAlloc(GetProcessHeap(), 0, BUFFILEALLOC); SendDlgItemMessageW(hWnd, cmb2, CB_GETLBTEXT, lRet, (LPARAM)pstr); wsprintfW(diskname, FILE_specc, pstr[2]); HeapFree(GetProcessHeap(), 0, pstr); return FD31_Validate( lfs, diskname, cmb2, lRet, TRUE ); }