祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 5412|回复: 4

GetOpenfilename 的使用

[复制链接]

GetOpenfilename 的使用

[复制链接]
kyj

主题

0

回帖

1

积分

新手上路

积分
1
贡献
在线时间
小时
2005-10-6 00:43:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×

帮忙看看,以下的代码问题出在哪里?

s_openfilename openfilename

OpenFilename.lStructSize = 260
OpenFilename.hwndOwner = GetForegroundWindow()
OpenFilename.hInstance = Handle(GetApplication())
OpenFilename.lpstrFilter = "所有文件"
OpenFilename.nFilterIndex = 1
OpenFilename.lpstrFile = Space(254)
OpenFilename.nMaxFile = 255
OpenFilename.lpstrFileTitle = OpenFilename.lpstrFile
OpenFilename.nMaxFileTitle = OpenFilename.nMaxFile
OpenFilename.lpstrInitialDir = "C:\"
OpenFilename.lpstrTitle = "打开文件"
OpenFilename.flags = 0


return GetOpenfilename(openfilename)

共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
阿辉

主题

0

回帖

195

积分

超级版主

积分
195
贡献
在线时间
小时
2005-10-8 09:52:52 | 显示全部楼层

你用的是一个对象吧?

pb里有一个GetFileOpenName,也很好用的

点评

PB内部的函数运行倒是正常,但有2个问题:一是不能改变窗口大小,即查找文件时很不方便,这也是PB系统中多处函数、说明的通病, 二是不能居中显示。但OS的GetFileOpenName要使用内存操作才能运行,但[/backcolor]内  详情 回复 发表于 2015-5-6 20:00
共享共进共赢Sharing And Win-win Results
xgbluebird

主题

0

回帖

292

积分

中级会员

积分
292
贡献
在线时间
小时
2015-5-6 20:00:46 | 显示全部楼层
阿辉 发表于 2005-10-8 09:52
你用的是一个对象吧?
pb里有一个GetFileOpenName,也很好用的

PB内部的函数运行倒是正常,但有2个问题:一是不能改变窗口大小,即查找文件时很不方便,这也是PB系统中多处函数、说明的通病,
二是不能居中显示。但OS的GetFileOpenName要使用内存操作才能运行,但内存操作常使程序异常中止(内存不能read之类的)。
共享共进共赢Sharing And Win-win Results
xgbluebird

主题

0

回帖

292

积分

中级会员

积分
292
贡献
在线时间
小时
2015-5-6 20:02:41 | 显示全部楼层
Long ll_rc
Long MAX_BUFFER_LENGTH = 256
Integer li_Start, li_TabPos
String ls_Token
String Filter
long ll_len
String ls_bmp, ls_bitmapfilename

//定义OPENFILENAME类型的结构变量
OPENFILENAME OFName

//定义过滤文件的类型
Filter = "Text Files (*.txt)~t*.TXT~tBitmap files (*.bmp)~t*.BMP~tRTF files (*.rtf)~t*.RTF"               

//为结构成员lpstrFilter分配内存
OFName.lpstrFilter        = LocalAlloc(LMEM_ZEROINIT,Len(Filter) + 2) // 以两个NULL字符结尾
If OFName.lpstrFilter = 0 Then
        MessageBox("错误","无法分配所需的内存!",StopSign!,Ok!)
End If

//将制表符~t转换为Null分隔符
li_Start  = 1
li_TabPos = Pos(Filter,"~t",1)
Do While li_TabPos > 0
        ls_Token = Mid(Filter,li_Start,li_TabPos - li_Start)
        StrCopy(OFName.lpstrFilter + (li_Start - 1), ls_Token, Len(ls_Token))
        li_Start        = li_TabPos + 1
        li_TabPos = Pos(Filter,"~t",li_TabPos + 1)
Loop

ls_Token        = Mid(Filter,li_Start)
StrCopy(OFName.lpstrFilter + (li_Start - 1),ls_Token,Len(ls_Token))

//设置结构的大小
OFName.lStructSize = 76
//设置父窗口为对话框的属主
OFName.hwndOwner = Handle(Parent)
//设置应用实例,在PB中设置为0
OFName.hInstance = 0
OFName.lpstrFile = ""
OFName.nMaxFile = MAX_BUFFER_LENGTH - 1
OFName.lpstrFileTitle = Space(MAX_BUFFER_LENGTH)
OFName.nMaxFileTitle = MAX_BUFFER_LENGTH - 1
//设置初始化目录
OFName.lpstrInitialDir = "C:\"
//设置对话框标题
OFName.lpstrTitle = "打开文件"
OFName.nFilterIndex        = 1
//设置标识符
OFName.flags = 0

//显示打开对话框
ll_rc = GetOpenFileName(OFName)
       
//判断用户的操作
If ll_rc = 1 Then
   //显示用户选择的文件名在文本框中
        sle_1.Text = RightTrim(OFName.lpstrFile)

        //显示文件内容在文本编辑框中
        ll_len = Len(Trim(sle_1.Text))
        ls_bmp = Mid(Trim(sle_1.Text), ll_len - 2, 3)

        If ls_bmp = "bmp" or ls_bmp = "BMP" Then
                //如果为位图文件,将位图插入到RichText控件
                rte_1.InsertPicture(trim(sle_1.Text))
        Else
                //将打开的文本文件或RTF文件插入到RichText控件
                rte_1.InsertDocument(sle_1.Text, TRUE)
        End If
Else
   MessageBox("打开文件: ","按下取消按钮")
End If

//释放内存
LocalFree(OFName.lpstrFilter)

--------------摘自《Win32 API程序设计 基础卷》\第13章 文件及文件夹选择对话框\GetOpenFile_API



共享共进共赢Sharing And Win-win Results
xgbluebird

主题

0

回帖

292

积分

中级会员

积分
292
贡献
在线时间
小时
2015-5-6 20:05:55 | 显示全部楼层
楼主上的代码第一行就是错的
s_openfilename openfilename

结构类名应放行前,实例名放在行后
OPENFILENAME OFName
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-1 01:52 , Processed in 0.062216 second(s), 10 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表