🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #1263

ʹ��PowerBuilder����500������(��)

#1263
From: ���ܵ�Сʨ
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]
Technical Details
Message-ID: <3O9iT5$uD9@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show 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