Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
69036e99
Commit
69036e99
authored
Oct 22, 2000
by
Gerard Patel
Committed by
Alexandre Julliard
Oct 22, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug when changing drives in 16 bit style dialog for a 32 bit app
+ miscellaneous fixes.
parent
56b68feb
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
275 additions
and
185 deletions
+275
-185
filedlg.c
dlls/commdlg/filedlg.c
+275
-185
No files found.
dlls/commdlg/filedlg.c
View file @
69036e99
...
...
@@ -315,17 +315,23 @@ static BOOL FILEDLG_CallWindowProc(LFSPRIVATE lfs, UINT wMsg, WPARAM wParam,
/***********************************************************************
* FILEDLG_ScanDir [internal]
*/
static
BOOL
FILEDLG_ScanDir
(
HWND
hWnd
,
LPWSTR
newPath
,
BOOL
bChgDir
)
static
BOOL
FILEDLG_ScanDir
(
HWND
hWnd
,
LPWSTR
newPath
)
{
WCHAR
buffer
[
BUFFILE
];
HWND
hdlg
;
HWND
hdlg
,
hdlgDir
;
LRESULT
lRet
=
TRUE
;
HCURSOR
hCursorWait
,
oldCursor
;
if
(
bChgDir
)
if
(
!
SetCurrentDirectoryW
(
newPath
))
return
FALSE
;
if
(
!
SetCurrentDirectoryW
(
newPath
))
return
FALSE
;
lstrcpynW
(
buffer
,
newPath
,
sizeof
(
buffer
));
/* get the list of spec files */
GetDlgItemTextW
(
hWnd
,
edt1
,
buffer
,
sizeof
(
buffer
));
hCursorWait
=
LoadCursorA
(
NULL
,
IDC_WAITA
);
oldCursor
=
SetCursor
(
hCursorWait
);
/* list of files */
if
((
hdlg
=
GetDlgItem
(
hWnd
,
lst1
))
!=
0
)
{
WCHAR
*
scptr
;
/* ptr on semi-colon */
...
...
@@ -336,7 +342,7 @@ static BOOL FILEDLG_ScanDir(HWND hWnd, LPWSTR newPath, BOOL bChgDir)
while
(
filter
)
{
scptr
=
strchrW
(
filter
,
';'
);
if
(
scptr
)
*
scptr
=
0
;
while
(
*
filter
==
' '
)
filter
++
;
while
(
*
filter
==
' '
)
filter
++
;
TRACE
(
"Using file spec %s
\n
"
,
debugstr_w
(
filter
));
if
(
SendMessageW
(
hdlg
,
LB_DIR
,
0
,
(
LPARAM
)
filter
)
==
LB_ERR
)
return
FALSE
;
...
...
@@ -344,9 +350,15 @@ static BOOL FILEDLG_ScanDir(HWND hWnd, LPWSTR newPath, BOOL bChgDir)
filter
=
(
scptr
)
?
(
scptr
+
1
)
:
0
;
}
}
/* list of directories */
strcpyW
(
buffer
,
FILE_star
);
return
DlgDirListW
(
hWnd
,
buffer
,
lst2
,
stc1
,
DDL_EXCLUSIVE
|
DDL_DIRECTORY
);
if
((
hdlgDir
=
GetDlgItem
(
hWnd
,
lst2
))
!=
0
)
{
lRet
=
DlgDirListW
(
hWnd
,
buffer
,
lst2
,
stc1
,
DDL_EXCLUSIVE
|
DDL_DIRECTORY
);
}
SetCursor
(
oldCursor
);
return
lRet
;
}
...
...
@@ -586,9 +598,9 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
}
else
*
tmpstr
=
0
;
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
{
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
{
*
tmpstr
=
0
;
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
))
WARN
(
"Couldn't read initial directory %s!
\n
"
,
debugstr_w
(
tmpstr
));
}
/* select current drive in combo 2, omit missing drives */
...
...
@@ -608,10 +620,11 @@ static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
* FILEDLG_UpdateResult [internal]
* update the displayed file name (with path)
*/
void
FILEDLG_UpdateResult
(
LFSPRIVATE
lfs
,
WCHAR
*
tmpstr
,
WCHAR
*
tmpstr2
)
void
FILEDLG_UpdateResult
(
LFSPRIVATE
lfs
,
WCHAR
*
tmpstr
)
{
int
lenstr2
;
LPOPENFILENAMEW
ofnW
=
lfs
->
ofnW
;
WCHAR
tmpstr2
[
BUFFILE
];
GetCurrentDirectoryW
(
BUFFILE
,
tmpstr2
);
lenstr2
=
lstrlenW
(
tmpstr2
);
...
...
@@ -671,9 +684,10 @@ void FILEDLG_UpdateFileTitle(LFSPRIVATE lfs)
/***********************************************************************
* FILEDLG_DirListDblClick [internal]
*/
static
LRESULT
FILEDLG_DirListDblClick
(
HWND
hWnd
,
LFSPRIVATE
lfs
)
static
LRESULT
FILEDLG_DirListDblClick
(
LFSPRIVATE
lfs
)
{
LONG
lRet
;
HWND
hWnd
=
lfs
->
hwnd
;
LPWSTR
pstr
;
WCHAR
tmpstr
[
BUFFILE
];
...
...
@@ -693,8 +707,7 @@ static LRESULT FILEDLG_DirListDblClick(HWND hWnd, LFSPRIVATE lfs)
}
strcatW
(
tmpstr
,
FILE_bslash
);
/* directory *has* to be changed before notifying the hook */
SetCurrentDirectoryW
(
tmpstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
);
/* notify the app */
if
(
lfs
->
hook
)
{
...
...
@@ -702,201 +715,278 @@ static LRESULT FILEDLG_DirListDblClick(HWND hWnd, LFSPRIVATE lfs)
MAKELONG
(
lRet
,
CD_LBSELCHANGE
)))
return
TRUE
;
}
lRet
=
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
pstr
=
(
LPWSTR
)
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETITEMDATA
,
lRet
,
0
);
TRACE
(
"Selected filter : %s
\n
"
,
debugstr_w
(
pstr
));
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
FALSE
);
return
TRUE
;
}
/***********************************************************************
* FILEDLG_WMCommand [internal]
* FILEDLG_FileListSelect [internal]
* called when a new item is picked in the file list
*/
BOOL
in_update
=
FALSE
;
static
LRESULT
FILEDLG_WMCommand
(
HWND
hWnd
,
LPARAM
lParam
,
UINT
notification
,
UINT
control
,
LFSPRIVATE
lfs
)
static
LRESULT
FILEDLG_FileListSelect
(
LFSPRIVATE
lfs
)
{
LONG
lRet
;
OPENFILENAMEW
ofn2
;
LPOPENFILENAMEW
ofnW
=
lfs
->
ofnW
;
WCHAR
tmpstr
[
BUFFILE
],
tmpstr2
[
BUFFILE
];
LPWSTR
pstr
,
pstr2
;
LONG
lRet
;
HWND
hWnd
=
lfs
->
hwnd
;
LPWSTR
pstr
;
switch
(
control
)
lRet
=
SendDlgItemMessageW
(
hWnd
,
lst1
,
LB_GETCURSEL16
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
/* set the edit control to the choosen file */
if
((
pstr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
BUFFILEALLOC
)))
{
case
lst1
:
/* file list */
FILEDLG_StripEditControl
(
hWnd
);
if
(
notification
==
LBN_DBLCLK
)
goto
almost_ok
;
/* notify the app */
lRet
=
SendDlgItemMessageW
(
hWnd
,
lst1
,
LB_GETCURSEL16
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
if
((
pstr
=
HeapAlloc
(
GetProcessHeap
(),
0
,
BUFFILEALLOC
)))
{
SendDlgItemMessageW
(
hWnd
,
lst1
,
LB_GETTEXT
,
lRet
,
(
LPARAM
)
pstr
);
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
HeapFree
(
GetProcessHeap
(),
0
,
pstr
);
}
if
(
lfs
->
hook
)
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
lbselchstring
,
control
,
MAKELONG
(
lRet
,
CD_LBSELCHANGE
));
/* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD, CD_LBSELNOITEMS */
return
TRUE
;
case
lst2
:
/* directory list */
FILEDLG_StripEditControl
(
hWnd
);
if
(
notification
==
LBN_DBLCLK
)
{
return
FILEDLG_DirListDblClick
(
hWnd
,
lfs
);
}
return
TRUE
;
SendDlgItemMessageW
(
hWnd
,
lst1
,
LB_GETTEXT
,
lRet
,
(
LPARAM
)
pstr
);
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
HeapFree
(
GetProcessHeap
(),
0
,
pstr
);
}
if
(
lfs
->
hook
)
{
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
lbselchstring
,
lst1
,
MAKELONG
(
lRet
,
CD_LBSELCHANGE
));
}
/* FIXME: for OFN_ALLOWMULTISELECT we need CD_LBSELSUB, CD_SELADD,
CD_LBSELNOITEMS */
return
TRUE
;
}
case
cmb1
:
/* file type drop list */
if
(
notification
==
CBN_SELCHANGE
)
{
*
tmpstr
=
0
;
goto
reset_scan
;
/***********************************************************************
* FILEDLG_TestPath [internal]
* before accepting the file name, test if it includes wild cards
* tries to scan the directory and returns TRUE if no error.
*/
static
LRESULT
FILEDLG_TestPath
(
LFSPRIVATE
lfs
,
LPWSTR
path
)
{
HWND
hWnd
=
lfs
->
hwnd
;
LPWSTR
pBeginFileName
,
pstr2
;
WCHAR
tmpstr2
[
BUFFILE
];
pBeginFileName
=
strrchrW
(
path
,
'\\'
);
if
(
pBeginFileName
==
NULL
)
pBeginFileName
=
strrchrW
(
path
,
':'
);
if
(
strchrW
(
path
,
'*'
)
!=
NULL
||
strchrW
(
path
,
'?'
)
!=
NULL
)
{
/* edit control contains wildcards */
if
(
pBeginFileName
!=
NULL
)
{
lstrcpynW
(
tmpstr2
,
pBeginFileName
+
1
,
BUFFILE
);
*
(
pBeginFileName
+
1
)
=
0
;
}
return
TRUE
;
case
chx1
:
return
TRUE
;
case
pshHelp
:
return
TRUE
;
case
cmb2
:
/* disk drop list */
FILEDLG_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
(
tmpstr
,
FILE_specc
,
pstr
[
2
]);
HeapFree
(
GetProcessHeap
(),
0
,
pstr
);
if
(
notification
!=
CBN_SELCHANGE
)
return
TRUE
;
/* on entry tmpstr points to the new path to scan */
reset_scan:
lRet
=
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
pstr
=
(
LPWSTR
)
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETITEMDATA
,
lRet
,
0
);
TRACE
(
"Selected filter : %s
\n
"
,
debugstr_w
(
pstr
));
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
);
in_update
=
TRUE
;
case
IDOK
:
almost_ok:
ofn2
=
*
ofnW
;
/* for later restoring */
/* get current file name */
GetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr
,
sizeof
(
tmpstr
)
);
pstr
=
strrchrW
(
tmpstr
,
'\\'
);
if
(
pstr
==
NULL
)
pstr
=
strrchrW
(
tmpstr
,
':'
);
if
(
strchrW
(
tmpstr
,
'*'
)
!=
NULL
||
strchrW
(
tmpstr
,
'?'
)
!=
NULL
)
else
{
/* edit control contains wildcards */
if
(
pstr
!=
NULL
)
{
lstrcpynW
(
tmpstr2
,
pstr
+
1
,
BUFFILE
);
*
(
pstr
+
1
)
=
0
;
}
else
{
strcpyW
(
tmpstr2
,
tmpstr
);
*
tmpstr
=
0
;
}
TRACE
(
"tmpstr=%s, tmpstr2=%s
\n
"
,
debugstr_w
(
tmpstr
),
debugstr_w
(
tmpstr2
));
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr2
);
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
);
return
TRUE
;
}
/* no wildcards, we might have a directory or a filename */
/* try appending a wildcard and reading the directory */
pstr2
=
tmpstr
+
lstrlenW
(
tmpstr
);
if
(
pstr
==
NULL
||
*
(
pstr
+
1
)
!=
0
)
strcatW
(
tmpstr
,
FILE_bslash
);
lRet
=
SendDlgItemMessageW
(
hWnd
,
cmb1
,
CB_GETCURSEL
,
0
,
0
);
if
(
lRet
==
LB_ERR
)
return
TRUE
;
ofnW
->
nFilterIndex
=
lRet
+
1
;
TRACE
(
"ofn->nFilterIndex=%ld
\n
"
,
ofnW
->
nFilterIndex
);
lstrcpynW
(
tmpstr2
,
FILEDLG_GetFileType
(
ofnW
->
lpstrCustomFilter
,
(
LPWSTR
)
ofnW
->
lpstrFilter
,
lRet
),
sizeof
(
tmpstr2
));
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr2
);
if
(
!
in_update
)
{
/* if ScanDir succeeds, we have changed the directory */
if
(
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
return
TRUE
;
}
/* if not, this must be a filename */
*
pstr2
=
0
;
/* remove the wildcard added before */
strcpyW
(
tmpstr2
,
path
);
*
path
=
0
;
}
if
(
pstr
!=
NULL
)
{
/* strip off the pathname */
*
pstr
=
0
;
SetDlgItemTextW
(
hWnd
,
edt1
,
pstr
+
1
);
lstrcpynW
(
tmpstr2
,
pstr
+
1
,
sizeof
(
tmpstr2
)
);
/* Should we MessageBox() if this fails? */
if
(
!
FILEDLG_ScanDir
(
hWnd
,
tmpstr
,
TRUE
))
return
TRUE
;
strcpyW
(
tmpstr
,
tmpstr2
);
}
else
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr
);
FILEDLG_UpdateResult
(
lfs
,
tmpstr
,
tmpstr2
);
if
(
in_update
)
{
if
(
lfs
->
hook
)
TRACE
(
"path=%s, tmpstr2=%s
\n
"
,
debugstr_w
(
path
),
debugstr_w
(
tmpstr2
));
SetDlgItemTextW
(
hWnd
,
edt1
,
tmpstr2
);
FILEDLG_ScanDir
(
hWnd
,
path
);
return
FALSE
;
}
/* no wildcards, we might have a directory or a filename */
/* try appending a wildcard and reading the directory */
pstr2
=
path
+
lstrlenW
(
path
);
if
(
pBeginFileName
==
NULL
||
*
(
pBeginFileName
+
1
)
!=
0
)
strcatW
(
path
,
FILE_bslash
);
/* if ScanDir succeeds, we have changed the directory */
if
(
FILEDLG_ScanDir
(
hWnd
,
path
))
return
TRUE
;
/* if not, this must be a filename */
*
pstr2
=
0
;
/* remove the wildcard added before */
if
(
pBeginFileName
!=
NULL
)
{
/* strip off the pathname */
*
pBeginFileName
=
0
;
SetDlgItemTextW
(
hWnd
,
edt1
,
pBeginFileName
+
1
);
lstrcpynW
(
tmpstr2
,
pBeginFileName
+
1
,
sizeof
(
tmpstr2
)
);
/* Should we MessageBox() if this fails? */
if
(
!
FILEDLG_ScanDir
(
hWnd
,
path
))
{
return
FALSE
;
}
strcpyW
(
path
,
tmpstr2
);
}
else
SetDlgItemTextW
(
hWnd
,
edt1
,
path
);
return
TRUE
;
}
/***********************************************************************
* FILEDLG_Validate [internal]
* called on: click Ok button, Enter in edit, DoubleClick in file list
*/
static
LRESULT
FILEDLG_Validate
(
LFSPRIVATE
lfs
,
LPWSTR
path
,
UINT
control
,
INT
itemIndex
,
BOOL
internalUse
)
{
LONG
lRet
;
HWND
hWnd
=
lfs
->
hwnd
;
OPENFILENAMEW
ofnsav
;
LPOPENFILENAMEW
ofnW
=
lfs
->
ofnW
;
WCHAR
filename
[
BUFFILE
];
ofnsav
=
*
ofnW
;
/* for later restoring */
/* get current file name */
if
(
path
)
lstrcpynW
(
filename
,
path
,
sizeof
(
filename
));
else
GetDlgItemTextW
(
hWnd
,
edt1
,
filename
,
sizeof
(
filename
)
);
/* if we did not click in file list to get there */
if
(
control
!=
lst1
)
{
if
(
!
FILEDLG_TestPath
(
lfs
,
filename
)
)
return
FALSE
;
}
FILEDLG_UpdateResult
(
lfs
,
filename
);
if
(
internalUse
)
{
/* called internally after a change in a combo */
if
(
lfs
->
hook
)
{
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
lbselchstring
,
control
,
MAKELONG
(
lRet
,
CD_LBSELCHANGE
));
in_update
=
FALSE
;
return
TRUE
;
}
FILEDLG_UpdateFileTitle
(
lfs
);
if
(
lfs
->
hook
)
{
MAKELONG
(
itemIndex
,
CD_LBSELCHANGE
));
}
return
TRUE
;
}
FILEDLG_UpdateFileTitle
(
lfs
);
if
(
lfs
->
hook
)
{
lRet
=
(
BOOL
)
FILEDLG_CallWindowProc
(
lfs
,
lfs
->
fileokstring
,
0
,
lfs
->
lParam
);
if
(
lRet
)
{
*
ofnW
=
ofn2
;
/* restore old state */
break
;
*
ofnW
=
ofnsav
;
/* restore old state */
return
FALSE
;
}
}
if
((
ofnW
->
Flags
&
OFN_ALLOWMULTISELECT
)
&&
(
ofnW
->
Flags
&
OFN_EXPLORER
))
{
if
(
ofnW
->
lpstrFile
)
{
LPWSTR
str
=
(
LPWSTR
)
ofnW
->
lpstrFile
;
LPWSTR
ptr
=
strrchrW
(
str
,
'\\'
);
}
if
((
ofnW
->
Flags
&
OFN_ALLOWMULTISELECT
)
&&
(
ofnW
->
Flags
&
OFN_EXPLORER
))
{
if
(
ofnW
->
lpstrFile
)
{
LPWSTR
str
=
(
LPWSTR
)
ofnW
->
lpstrFile
;
LPWSTR
ptr
=
strrchrW
(
str
,
'\\'
);
str
[
lstrlenW
(
str
)
+
1
]
=
'\0'
;
*
ptr
=
0
;
}
}
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
;
return
TRUE
;
}
/***********************************************************************
* FILEDLG_DiskChange [internal]
* called when a new item is picked in the disk selection combo
*/
static
LRESULT
FILEDLG_DiskChange
(
LFSPRIVATE
lfs
)
{
LONG
lRet
;
HWND
hWnd
=
lfs
->
hwnd
;
LPWSTR
pstr
;
WCHAR
diskname
[
BUFFILE
];
FILEDLG_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
FILEDLG_Validate
(
lfs
,
diskname
,
cmb2
,
lRet
,
TRUE
);
}
/***********************************************************************
* FILEDLG_FileTypeChange [internal]
* called when a new item is picked in the file type combo
*/
static
LRESULT
FILEDLG_FileTypeChange
(
LFSPRIVATE
lfs
)
{
LONG
lRet
;
WCHAR
diskname
[
BUFFILE
];
LPWSTR
pstr
;
diskname
[
0
]
=
0
;
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
));
SetDlgItemTextW
(
lfs
->
hwnd
,
edt1
,
pstr
);
return
FILEDLG_Validate
(
lfs
,
NULL
,
cmb1
,
lRet
,
TRUE
);
}
/***********************************************************************
* FILEDLG_WMCommand [internal]
*/
static
LRESULT
FILEDLG_WMCommand
(
HWND
hWnd
,
LPARAM
lParam
,
UINT
notification
,
UINT
control
,
LFSPRIVATE
lfs
)
{
switch
(
control
)
{
case
lst1
:
/* file list */
FILEDLG_StripEditControl
(
hWnd
);
if
(
notification
==
LBN_DBLCLK
)
{
if
(
FILEDLG_Validate
(
lfs
,
NULL
,
control
,
0
,
FALSE
))
EndDialog
(
hWnd
,
TRUE
);
return
TRUE
;
}
else
if
(
notification
==
LBN_SELCHANGE
)
return
FILEDLG_FileListSelect
(
lfs
);
break
;
case
lst2
:
/* directory list */
FILEDLG_StripEditControl
(
hWnd
);
if
(
notification
==
LBN_DBLCLK
)
return
FILEDLG_DirListDblClick
(
lfs
);
break
;
case
cmb1
:
/* file type drop list */
if
(
notification
==
CBN_SELCHANGE
)
return
FILEDLG_FileTypeChange
(
lfs
);
break
;
case
chx1
:
break
;
case
pshHelp
:
break
;
case
cmb2
:
/* disk dropdown combo */
if
(
notification
==
CBN_SELCHANGE
)
return
FILEDLG_DiskChange
(
lfs
);
break
;
case
IDOK
:
if
(
FILEDLG_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
;
}
/***********************************************************************
* FILEDLG_MapDrawItemStruct [internal]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment