Thread View: cn.bbs.comp.program
1 messages
1 total messages
Started by ���ܵ�Сʨ
Sat, 18 Apr 1998 00:00
ʹ��PowerBuilder����500������(��)
Author: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
Date: Sat, 18 Apr 1998 00:00
167 lines
12240 bytes
12240 bytes
էһ���������Ŀ,���ǿ��ܻ���ú�����PowerBuilderϵͳ����
�ṩ�ĺ����Լֻ��200���(�����Ƕ�̬����),���Ǻδӵõ�����50
0���������?
��������ǰ���۹����ʹ��Windows API�������ⲿ�������
�⡣��ʹ�ù�WindowsS DK��̵Ŀ�����Ա��֪��,��USER.EXE��GDI.
EXE�ȿ�ִ���ļ��Ͷ�̬���ӿ���,Windows�����ṩ�˴���Ŀ�⺯��,
��Щ������PowerBuilder�ж��ǿ���ֱ�ӵ��õġ��������ǵĺ����
��һ������������500�����
����ЩAPI������,�൱һ�����Ƿdz����õ�,���ǽ���������
���ܡ����ڽ���һЩ�ڴ����Զ������ʱ�õ��ĺ���
�Զ������
ȱʡ�����,MDI�?�ǿ��������趨��С�ġ������û��Ϳ��Խ�
������ɱ�ԭ�ȵ�С�����������,����Դ������þ����������,��
���ʴ����ϵ�һЩ�ؼ�������һ����,��Ǵ���ȷʵС����������ʾ
���еĿؼ�,����û�б�Ҫ�ṩ�������
���Windows��MDIӦ���ڴ�����һ����ʱ����������:������С
������ʾ���пؼ�ʱ,�����;��ڴ�С����ʱ,�رվ����
��PowerBuilderϵͳ���?û���ṩ�Զ��������������Ĺ���,����
�����Լ�������һ�����Ǻ�����,����ʵ�������Զ�������Ĺ���
Ҳ�ò���Windows API����,ֻ����MDI�?���ڵ�resize�¼��д���
��һ���¼�,���ж��ڵ�ǰ���ڳߴ�С��ijһ��ֵʱ��ʾ�����(����
������ΪʲôҪ���ⴥ��һ���¼�,����resiz e�¼���ֱ����)��
�˺��û��ڹ��������ʱ,���ڻ��Զ���֮����;���û��ٴθı䴰��
��С�����ڸ���ֵʱ,����Ӧ�ùرվ����,������Ȼ���Բ�����Wind
ows API��������һ�㡣Ȼ�������������,�������Ѷȵ����ڹرվ�
����֮ǰ,������Ҫ����û��Ƿ�����˾����������û������˾�
����,������Ӧ�����Ƚ������ƻ�ԭʼ״̬,���Ҫ�õ�Windows API
�����ˡ���Ϊ������Ҫȷ��:������Ĺ�����Χ���������ھ������
�ĵ�ǰλ�á�Ϊ��������һ��,������Ҫʹ������Windows API����:G
etScrollPos��GetScrollRange��
Ϊ��ʹ��������API����,��������Ҫʹ�����ǵĴ����н�������
��Ϊlocal external������Local external����Ի�����,������
�����:
Function int GetScrollPos(uint Handle,int Bar)Library"US
ER.EXE"
SubRoutine GetScrollRange(uint Handle,int Bar,Ref int Mi
nPos,RefintMaxPos)L ibrary"USER.EXE"ͬʱ�ڸô�������������ʵ
�����:
//�ж��û��Ƿ�Ҫ��С������
Boolean ib_minimized=FALSE
//�ж��Ƿ���ʾ�����
int ii_desired_height=1000
int ii_desired_width=2000
���е��������α���ii_desired_height��ii_desired_width��
��������ʲôʱ�����ȥ���������ֵ����Ȼ,ÿ�������ж���
������������������Ϊ��ʹ���ڸ�Ϊͨ��,����Ҳ���Զ���һ������
���ĺ���,�ú����ڴ��ڵ�open�¼����ܷ������ڵ�control��������
, Ҳ���Ǵ��������пؼ������ֵ,�Ծ���Ӧ�������������α�����
��Ϊ���١�
������ʵ�����ib_minimized������ȷ���û��Ƿ���Ҫ��������
С���������,�����Ǵ�������ʱ����Щ��ͬ,�Ժ����ǽ���������
�����
��open�¼���,�����������:
this.LinesPerPage=10
this.ColumnsPerPage=10
this.UnitsPerLine=this.ii_desired_height*.009
this.UnitsPerColumn=this.ii_desired_width*.009
����resize
������Ҫ����resize�¼�,����û��ı䴰�ڴ�С�IJ�ͬ��ʽ,��
��������״̬�������������,����ȥ����Ͼ����ʱ��������һ
��resize�¼������,��resize�¼���ֱ�Ӹı�������״̬������
�ݹ����resize�¼�,�������Dz�ϣ����ġ�
Ϊ�˷�ֹ�ݹ����,����Ҫ����һЩ�û��Զ����¼�,����Щ�¼�
�д�����������ȥ����롣���û��¼��Ի�����,��������ֵ:
EventName EventID
addhscroll pbm_custom01
addvscroll pbm_custom02
removehscroll pbm_custom03
removevscroll pbm_custom04
syscommand pbm_syscommand
����ǰ4���Զ����û��¼����������:
ADDHSCROLL�¼�:
//��������
this.hscrollbar=TRUE
ADDVSCROLL�¼�:
//��������
this.vscrollbar=TRUE
REMOVEHSCROLL�¼�:
uint
WinHandle
integer
ScrollPos,MinPos,MaxPos
//�õ����ھ��
WinHandle=Handle(this)
//�õ��������ھ�����ϵĵ�ǰλ��
ScrollPos=GetScrollPos(WinHandle,0)
//�õ�������Ĺ�����Χ
GetScrollRange(WinHandle,0,MinPos,MaxPos)
//��������
IF ScrollPos >MinPos THEN Send(WinHandle,276,5,0)
ScrollPos = GetScrollPos ( WinHandle, 0 )
//��������
this.hscrollbar=FALSE
REMOVEVSCROLL�¼�:
uint
WinHandle
integer
ScrollPos,MinPos,MaxPos
WinHandle = Handle ( this )
ScrollPos = GetScrollPos ( WinHandle, 1 )
GetScrollRange ( WinHandle, 1, MinPos, MaxPos )
IF ScrollPos > MinPos THEN
Send ( WinHandle, 277, 6, 0 )
this.vscrollbar = FALSE
���ǻ���Ҫ��resize�¼����������д����Ծ���ʲôʱ�������
Щ�Զ����û��¼���
RESIZE�¼�:
//���û����е�����С�����ڵIJ�����
IF ib_minimized THEN
Return
ELSE
//�����Ƿ���Ҫ�����
IF this.width < ii_desired_width AND NOT this.hscrollbar
THEN PostEvent (th is, "AddHScroll" )
IF this.height < ii_desired_height AND NOT this.vscroll
bar THEN PostEvent( this, "AddVScroll" ) IF this.width >
ii_desired_width AND this.hscrollbar TH EN PostEvent ( this,
"RemoveHScroll" ) IF this.height > ii_desired_height AND t
his.vscrollbar THEN PostEvent ( this, "RemoveVScroll" )END I
F
SYSCOMMAND�¼�:
//���û���ͼ��С������,������ȡ������
IF message.wordparm = 61472 THEN
ib_minimized = TRUE
this.vscrollbar = FALSE
this.hscrollbar = FALSE
ELSE
ib_minimized = FALSE
END IF
����ԭ��
OPEN�¼��еĴ�����Ϊ�˵��������Ĺ����ٶȡ�AddHScroll��
AddVScroll�еĴ���ֱ����ˮƽ�ʹ�ֱ�������RemoveHScroll��R
emoveVScroll��ֱ���ȥˮƽ�ʹ�ֱ�������,��Ҫʹ��WindowsAPI
���á�
GetScrollPos����ɷ��ع������ھ�����ϵĵ�ǰλ�á����DZ�
����߸ú�����Ҫ�����ĸ������ϵ��ĸ����������Ϣ����WindowsA
PI��,"ָ��"һ�����ڵķ�����ͨ���������"���"��PowerBuilder
�ṩ�˻��Ӧ���е�ָ�����ھ��ĺ���,����������Handle()��
��Ϊ��Щ�Զ����û��¼����ڴ������?�ж����,��������ֻ��Ҫ
��"this"��Ϊ����ݸ�Handle����0��Ϊ�ڶ�������,����Handle
����������Ҫ֪��ˮƽ�������ֵ;���1���ʾ��Ҫ֪����ֱ���
����ֵ��
ͨ��ǰ���λ������Сλ����Ƚ�,���Ǿͻ�֪���û��Ƿ�
������ڡ����������,���Ǿ��ڷ���һ����Ϣ������
���ڻָ�ԭ״����WM_VSCROLL��WM_HSCROLL��Ϣ���Ӧ����Ϣ�ŷֱ�
��227��226����WM_VSCROLL��,���Ƿ���SB_TOP(6),��ʹ���ڹ�����
��������WM_HSCROLL��,���Ƿ���5ʹ���ڹ�������ߡ�
���û���ͼ��С���������ʱ,���������Ϊ������ͬ��
����֪��,PowerBuilde r��resize�¼���ӳ���Windows�¼�WM_SIZE
����һ�����ڱ��ı��С�Ժ��ġ����û���ͼ��С��һ������
ʱ,Ҫ����С������֮ǰ�رվ���������,�����������resize�¼�
�еĴ����������������õġ�������,���Dz�ȡ�ķ����Ƕ�����һ��
ӳ�䵽WM_COMMAND��Ϣ���¼������û���ͼ��С������ʱ,�����Ϣ
һ���͵�ֵ��61472�����,�����¼���ֵ��61472,����ֻ���
����ȥ������������������Щ������,ϵͳ��������һ��resize��
��,resize�¼���������ʵ�����ib_minimized�ĵط�����syscomman
d�¼��������趨ʵ�����,��resize�¼���,���ñ������ñ�����
��resize�¼��û�������С������,����resi ze�¼��Ͳ��ᴦ����
��������û������ڸ�ԭ,syscommand�¼����ٴα�����,����δ���
����Ϣ��ֵ�Ͳ���61472�ˡ����syscommand�¼��н�����ʵ�����
��ʶ��λ,����resize�¼������ܴ��������ˡ�
--
[m[1;32m�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn][m
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads