首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

PB程序中弹出的对话框如何无法拉大呢

2012-02-25 
PB程序中弹出的对话框怎么无法拉大呢?我用PB11.5,好像以前版本的PB也一直这样,如弹出了选择文件的对话框不

PB程序中弹出的对话框怎么无法拉大呢?
我用PB11.5,好像以前版本的PB也一直这样,如弹出了选择文件的对话框不能拉大,那么小,选择文件的可视范围太小了,如何解决呢?
如图所示:


[解决办法]
声明函数:

//打开文件对话框函数
FUNCTION Long GetOpenFileName(REF OPENFILENAME lpOpenfilename)LIBRARY "comdlg32.dll" ALIAS FOR "GetOpenFileNameA"
//内存管理函数
FUNCTION Long StrCopy(Long Destination, REF String Source, Long Size)LIBRARY "kernel32.dll" ALIAS FOR "RtlMoveMemory"
FUNCTION Long LocalAlloc(Long Flags, Long Bytes)LIBRARY "kernel32.dll"
FUNCTION Long LocalFree(Long MemHandle)LIBRARY "kernel32.dll"


声明结构体:
type openfilename from structure
longlstructsize
longhwndowner
longhinstance
Longlpstrfilter
longlpstrcustomfilter
longnmaxcustfilter
longnfilterindex
stringlpstrfile
longnmaxfile
stringlpstrfiletitle
longnmaxfiletitle
stringlpstrinitialdir
stringlpstrtitle
longflags
longnfileoffset
integernfileextension
longlpstrdefext
longlcustdata
longlpfnhook
longlptemplatename
end type

代码:
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

CONSTANT integer LMEM_ZEROINIT = 64 

//定义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)


看看帖子才20分,不过翻了半天找到代码还是很高兴的,呵呵



热点排行