Article View: cn.bbs.comp.program
Article #1263ʹ��PowerBuilder����500������(��)
From: ���ܵ�Сʨ
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
Technical Details
Message-ID:
<3O9iT5$uD9@bbs.nju.edu.cn>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB X-Google-Thread: fc86e,85d9dae3b2e386e,start X-Google-Attributes: gidfc86e,public From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ) Subject: ʹ��PowerBuilder����500������(��) Date: 1998/04/18 Message-ID: <3O9iT5$uD9@bbs.nju.edu.cn> X-Deja-AN: 345408774 X-Filename: Programming/M.892911989.A Organization: nju_bbs Newsgroups: cn.bbs.comp.program