api 的GetOpenFileName
api 的GetOpenFileName函数如何调用请高手指导。 这样写对吗,,#include <GUIConstants.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=c:\documents and settings\administrator\我的文档\form1.kxf
$Form1_1 = GUICreate("Form1", 623, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("系统路径:", 32, 233, 101, 17)
$Input1 = GUICtrlCreateInput("", 152, 232, 337, 21)
$secn = GUICtrlCreateButton("选择", 520, 232, 65, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $secn
$Result1 = DllCall("comdlg32.dll","BOOL","GetOpenFileName","Text Files (*.txt), *.txt")
Case $Input1
EndSwitch
WEnd 手机党…
对不对你运行一下不就知道了?? 本帖最后由 xiehuahere 于 2012-10-12 10:41 编辑
显然没这么简单。
参数为指向 OPENFILENAME 结构体的指针。关键是填充这个结构体就很麻烦。
typedef struct tagOFN {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCTSTR lpstrFilter;
LPTSTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPTSTR lpstrFile;
DWORD nMaxFile;
LPTSTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCTSTR lpstrInitialDir;
LPCTSTR lpstrTitle;
DWORD Flags;
WORD nFileOffset;
WORD nFileExtension;
LPCTSTR lpstrDefExt;
LPARAM lCustData;
LPOFNHOOKPROC lpfnHook;
LPCTSTR lpTemplateName;
#if (_WIN32_WINNT >= 0x0500)
void *pvReserved;
DWORD dwReserved;
DWORD FlagsEx;
#endif
} OPENFILENAME, *LPOPENFILENAME;
参考:http://hi.baidu.com/onukeyewybejprf/item/9ed3568d5dac95c698255f0d 不懂是什么前来学习。 请xiehuahere 给个代码,先谢谢了。 回复 6# dbdbdd
我也不是太理解结构体中各个参数的意义。
上面的帖子给出参考链接了,你网上搜搜相关帖子吧。 找到了一个方法。如下。OK了。
#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Opt('MustDeclareVars', 1)
Global $iMemo
_Example_Defaults()
_Example_ExplorerStyleMultiSelect()
_Example_OldStyle()
_Example_ExplorerStyleSinglSelect()
_Example_ExplorerStyle_NoPlaceBar()
Func _Example_Defaults()
Local $hGui, $btn_dialog, $aFile, $sError
; Erstellt eine GUI
$hGui = GUICreate("GetOpenFileName (mit Standardeinstellungen)", 450, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName() ; Verwendet Standards
If $aFile = 0 Then
$sError = _WinAPI_CommDlgExtendedError()
MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
Else
For $x = 1 To $aFile
MemoWrite($aFile[$x])
Next
EndIf
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
GUIDelete($hGui)
EndFunc ;==>_Example_Defaults
; Gibt eine Zeile im Memo-Fenster aus
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite
页:
[1]