🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: cn.bbs.comp.program
1 messages
1 total messages Started by ���ܵ�Сʨ Sat, 18 Apr 1998 00:00
ʹ��PowerBuilder����500������(��)
#1263
Author: ���ܵ�Сʨ
Date: Sat, 18 Apr 1998 00:00
167 lines
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�¼������ܴ��������ˡ�

--
�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
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