📄 cfiledialog.shtml
字号:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Author" CONTENT="Jaroslav Pisk">
<TITLE>DevStudio Macros - CFileDialog code generator</TITLE>
</HEAD>
<body background="../fancyhome/back.gif" bgcolor="#FFFFFF" link="#B50029" vlink="#8E2323" alink="#FF0000" bgproperties="fixed">
<table WIDTH="100%"><tr WIDTH="100%"><td align=center><!--#exec cgi="/cgi/ads.cgi"--><td></tr></table>
<CENTER><H3><FONT COLOR="#AOAO99">File Dialog Macro</FONT></H3></CENTER>
<CENTER><H3><HR></H3></CENTER>
This macro was contributed by <A href="mailto:csa@jubii.dk">Christian Skovdal Andersen</A>
<p>To often I have found my self in a situation where i needed to save or open a file through
the standard common dialogs. The MFC implementation of the common dialog is quite elegant,
but it involves alot of parameters, which are often hard to remember.</p>
<p>This macro will take you through a few steps, in a wizard like mode, and create the right
code for you.</p>
<p><font face="Arial"><strong>FileDialogHandler</strong></font></p>
<PRE><TT><FONT COLOR="#990000">
Sub FileDialogHandler()
'DESCRIPTION: Automatically inserts the statements needed for a file-open/file-save dialog
dim strExt
writeln " {// BLOCK - inserted by CFileDialog macro"
' Ask for the type of dialog
dim bSaveDialog
bSaveDialog = 1
bAnswer = MsgBox("Do you want to make a save dialog (Yes) or an open dialog (No)", vbYesNo)
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " CFileDialog dlg("
if bAnswer = vbYes then
ActiveDocument.Selection = "FALSE"
else
ActiveDocument.Selection = "TRUE"
bSaveDialog = 0
end if
' The extension of the file
strExt = InputBox("What is the extension of the filetype?", "Extension", "txt")
' The name of the file
strName = InputBox("What is the name of the filetype?", "Name", "Text File")
' Only apply a default extension if it is a save-as dialog
if bAnswer = vbYes then
ActiveDocument.Selection = ",""*." & strExt & """"
else
ActiveDocument.Selection = ", """""
end if
ActiveDocument.Selection = ", "
' Only if it is a save-as dialog should a default filename be provided
dim strDefaultName
if bAnswer = vbYes then
strDefaultName = "Untitled." & strExt
strDefName = InputBox("What is the default filename?", "Default Filename", strDefaultName)
ActiveDocument.Selection = """" & strDefaultName & """, "
else
ActiveDocument.Selection = """"", "
end if
dim flags
dim filebuffer
dim bMultiSelectDlg
bMultiSelectDlg = 0
filebuffer = "none"
if bSaveDialog = 0 then
' Sp鴕g om dialog typen
bAnswer = MsgBox("Do you want a multiple selection dialog?", vbYesNo)
if bAnswer = vbYes then
bMultiSelectDlg = 1
flags = "|OFN_ALLOWMULTISELECT"
filebuffer = InputBox("How big should the selection buffer be?", "Multiple Selection", "10240")
else
flags = ""
end if
end if
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT" & flags & ", "
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " """ & strName & " (*." & strExt & ")|*." & strExt & "|All Files (*.*)|*.*||"", this);"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.NewLine
if filebuffer <> "none" then
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " char cbBuffer[" & filebuffer & "];"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " dlg.m_ofn.nMaxFile = " & filebuffer & ";"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " dlg.m_ofn.lpstrFile = cbBuffer;"
ActiveDocument.Selection.NewLine
end if
' If you want to use a special caption for your dialog
dim caption
if bSaveDialog = 1 then
szDefCaption = "Save As"
else
szDefCaption = "Open"
end if
caption = InputBox("What should the caption of the dialog be? (cancel = default)", "Dialog Caption", szDefCaption)
if caption <> "" then
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " dlg.m_ofn.lpstrTitle = " & caption & ";"
ActiveDocument.Selection.NewLine
end if
' Initial directory to look in
if bSaveDialog = 1 then
szDefCaption = "Save As"
else
szDefCaption = "Open"
end if
caption = InputBox("Initial directory to search for files (cancel = default)? If you're using a string in stead of a variable put the string in quotation marks", "Dialog Caption", "")
if caption <> "" then
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " dlg.m_ofn.lpstrInitialDir = " & caption & ";"
ActiveDocument.Selection.NewLine
end if
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " if (dlg.DoModal() == IDOK)"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " {"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " // Insert your code here..."
ActiveDocument.Selection.NewLine
if bMultiSelectDlg = 1 then
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " // Insert your code here..."
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " POSITION pos;"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " for (pos = dlg.GetStartPosition() ; pos != NULL ; )"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " {"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " // Use dlg.GetNextPathName(pos); to extract filename (including path)"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " {"
ActiveDocument.Selection.NewLine
else
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " // Use dlg.GetPathName() to extract filename (including path);"
ActiveDocument.Selection.NewLine
end if
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " }"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = " } // End block"
ActiveDocument.Selection.NewLine
ActiveDocument.Selection.StartOfLine dsFirstText
'End Recording
End Sub
</FONT></TT></PRE>
<p><strong><font face="Arial">A note about WriteLn</font></strong></p>
<p>Because of compatibility reasons (I dont want people to have to copy one macro to use
another), I have not used the function below to write text. However it is pretty handy,
and will make your code look alot better. It does the same as WriteLn from pascal. <br>
<em>This function is not meant to be called by the user, but only from other scripts.</em></p>
<PRE><TT><FONT COLOR="#990000">
sub writeln(line)
ActiveDocument.Selection.StartOfLine dsFirstText
ActiveDocument.Selection = line
ActiveDocument.Selection.NewLine
end sub
</FONT></TT></PRE>
<P>Posted on: May 13, 1998.
<P>
<HR>
<TABLE BORDER=0 WIDTH="100%" >
<TR>
<TD WIDTH="33%"><FONT SIZE=-1><A HREF="http://www.codeguru.com">Goto HomePage</A></FONT></TD>
<TD WIDTH="33%">
<CENTER><FONT SIZE=-2>© 1998 Zafir Anjum</FONT> </CENTER>
</TD>
<TD WIDTH="34%">
<DIV ALIGN=right><FONT SIZE=-1>Contact me: <A HREF="mailto:zafir@home.com">zafir@home.com</A> </FONT></DIV>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -