
            rv@|@`EBhET|[g

        Copyright (C) 1998-2001 Software Research Associates, Inc.

                    akira@sra.co.jp

PD͂߂

    nr^Q|olł́AfXNgbvɃEBhE̋`ŃC[W
    \悤Ƃƌ\J܂B
    
        ƈȑOɂ̂悤ȃvOƂč܂Ƃ
        ܂B́AwiRs[ɁAC[Wł
        ƁAꌩfXNgbvɒڕ`悵悤Ɍ̂łAwi
	ύXƂ΂Ă܂܂B

    ̌Aw Shape Extension ̃R[hāA̎ɂA
    olłł̂͂ȂƎv܂Bꂩ炩Ȃo܂
    AƎgpɑς̂邱Ƃł܂̂ŁAɌJ
    ܂B
    
QDVFCvEBhE̐

QDPDEBhENX̓o^

    VFCvEBhÉAJX^Rg[ƂĎĂ܂Bgp
    ɂ́ANX̓o^KvłBNX͈ȉ̂悤ɓo^Ă
    B
    
        WinRegisterClass(
	    hab,                AJ[ubNnh
	    ShapeWinName,       NX
	    ShapeWinProc,       EBhEvVW
	    0L,                 ftHgEBhEX^C
	    sizeof(PVOID)) ;    NXf[^TCY
        
    NXAEBhEvVẂushapewin.hvŒ`Ă܂BN
    X̖͑Oł\܂BNXf[^TCY͏̒lK{łB

QDQDEBhE̐

    VFCvEBhÉAʏ̃EBhEƓlɁuWinCreateWindowvŐ
    ܂BAȉ̓_ɒӂĂB

    EfXNgbvɔ`̃EBhE\ɂ́AeEBhEf
      XNgbvɂȂ΂Ȃ܂BłȂ΁Aʏ̋`̃EBh
      Eɕ\Ă܂܂̂ł܂Ӗ܂B

    Eʏ̃vOł̓gbvxEBhE̓t[EBhEi
    @т̃TuNXjɂȂ܂BVFCvEBhẾAt[
    @EBhEɑ@\͎Ă܂̂ŁA𒼐ڃgbvx
    @EBhEɂȂSłB

    EȏQ_AvỖgbvxEBhE̓t[EB
    @hEƂÃt[EBhEI[iƂāAVFCvEBhE
    @𐶐̂Ǝv܂BÂ悤ɂꍇɂ́At[
    @EBhEɏǉit[EBhẼTuNXjK
    @v܂BɂĂ͌q܂B

    EVFCvEBhE̐ɂ̓Rg[f[^K{łBRg[
    @f[^ɂĂ͈ȉŐ܂B  

    EVFCvEBhẼTCÝARg[f[^Ō܂܂B
      ̃TCYw͖܂B

QDRDVFCvRg[f[^

    VFCvi`̈j̃TCYA`Aѕ\e͐
    ̃Rg[f[^Ŏw܂B

        \e͐ŕύX邱Ƃł܂ATCYƌ`iVF
        Cvj͐Ɏwꂽ̂̂܂܂ŕύXł܂B

    Rg[f[^͈ȉ̍\́ishapewin.hŒ`jŎw܂B
    
    typedef struct _SHAPEWIN {
        SHORT   cx, cy  ;       VFCṽTCY
        HPS     hpsMask ;       }XNp^[iVFCvj
        HPS     hpsDraw ;       `f[^̃\[X
    } SHAPEWIN, *PSHAPEWIN ;
        
    hpsMask Ŏwv[e[VXy[Xɕ`悳ꂽ cx ~ cy
    TCỸC[W\EBhĚ`ɂȂAhpsDraw Ŏw
    v[e[VXy[X̃f[^Aɕ\܂B

QDSD}XNp^[

    hpsMask ̃C[WŁA_iOAOj̐FwiFƂ݂ȂAwiFƂ
    قȂF̕`̈Ƃ܂B
    
    ʏ́AorŁAŚi`̈jwiFœhԂɁA
    `悵C[W悤ɂ܂B`敔ɔwiF܂܂Ă
    ΁Ãor}XNp^[A`f[^̗Ɏw肵Ă
    ͂܂B
    
        Tvł͂ǂ̂悤ɂĂ܂B

    Iɂ́Agp\ȃ}XNp^[̃TCYɐ͂܂B
    Ax傫Ȃ̂AȂg񂾂̂w肷ƃ}Vɑ
    ȕׂ܂B
    
        TCY̖ڈƂẮAACRGfB^Ŏ舵xAƂ
        Ƃ낾Ǝv܂BAPȐ}`łA傫
        ĂvłBGȂ̂ƂẮAos2tile.bmp Ȃ񂩂́A
	ɂƂĂdȂ܂B̂悤ȃbṼp^[͍ł
	ƂƂłBos2\bitmapɂ̂͑łˁB

QDTD`f[^̍XV

    hpsDraw ̃v[e[VXy[XāAύXꂽ`f[^
    VFCvEBhEɔf邱Ƃł܂B
        
    `̈ihpsDrawj ̓eύXAʏɔfɂ́A
    VFCvEBhEɑ΂Ĉȉ̃bZ[W𑗏o܂B

    SHAPEWIN_MSG_UPDATE     ʂ̍XVv
    
        param1          PRECTL      XV̈
	param2          NULL

    ꕔXVāA]ȕ`ꍇɂ́Aparam1ōXV͈
    wĂBparam1w肳ĂȂ΁iNULL̏ꍇjA
    Ŝĕ`悳܂BVFCvEBhE̍ĕ`͂Ȃdɂ
    ܂̂ŁAύX͈͂΁AȂׂXV͈͂w肷悤ɂ
    Ǝv܂B
    
        ܂Abotɍ\̃rfI{[hgĂȂAŜ
        `悷܂񂪁B

RDt[EBhEƂ̑gݍ킹ɂ
    
    ̏͂̋Lq́AucłBȉ̐́A̎茳̊
    iWarp3/Connectjł͓삵Ă܂Åł͓삷邩ǂ
    킩܂B̊ł͓ȂƂAƂ܂ȕ@A
    Ƃ͌AB

    VFCvEBhEgp鎞́AfXNgbvɁĩEBhE
    ł͂Ȃjڕ`悵炾Ǝv܂BAVFCvEBh
    Êɂ̓t[̋@\͊܂܂Ă܂̂ŁAVFCvEBh
    EgbvxEBhEɂ̂͊댯łB̂߁A

        eEBhE        fXNgbv
	I[iEBhE    t[EBhE
    
    ƂăVFCvEBhÊSłƎv܂B
    
    ̂悤ɂč쐬ꂽt[EBhEAVFCvEBhEɂ͐e
    q֌WȂ߂ɁAʏ̃t[^NCAgōsȂ鐧䂪
    ȂȂ܂B̐Lɂɂ́At[EBhE
    ̏JX^}CYiTuNXjKv܂B
    
    ܂Â悤ȍ\ŃEBhEƁAʏɂ́At[EB
    hEƃVFCvEBhE̗\邱ƂɂȂ܂B]ȃt[
    EBhE̕\ŁAVFCvEBhE\Ă悤
    ɌɂAt[EBhȄJX^}CYiTuNXj
    Kv܂B

RDPDt[䃁bZ[W̓]

    t[EBhËʒuATCYAyI[_ωꍇɂ́A
    
        WM_ADJUSTWINDOWPOS      ύXʒm
	WM_WINDOWPOSCHANGED     ʒm

    ̃bZ[W܂BVFCvEBhËʒuyI[_t[
    EBhEɒǏ]ɂ́ÃbZ[W̉ŁAVFCvEB
    hËʒuyI[_𐧌䂷Ƃ悢悤łB̓Iɂ
    
        case WM_ADJUSTWINDOWPOS :
	    pswp = (PSWP) PVOIDFROMMP(mp1) ;
	    WinSetWindowPos(hwndShape, pswp->hwndInsetBehind,
	            pswp->x, pswp->y, pswp->cx, pswp->cy, pswp->fl) ;
            return ftHg

    Ƃ
    
        case WM_WINDOWPOSCHANGED :
	    pswp = (PSWP) PVOIDFROMMP(mp1) ;
	    WinSetWindowPos(hwndShape, pswp->hwndInsetBehind,
	            pswp->x, pswp->y, pswp->cx, pswp->cy, pswp->fl) ;
            return ftHg

    Ƃ`ԂłBȂAWINDOWPOSCHANGED ́̕At[EBhE
    \ɂꍇi̐߁jɂ͎g܂B

    ڂ̓TvR[h䗗B

RDQDȂt[EBhE

    t[EBhEAVFCvEBhE̗AVFCvEBh
    E\悤ɂ邽߂ɁAt[EBhE\ɂ
    Ƃł܂B
    
    ɂ́AOóuWM_ADJUSTWINDOWPOSvbZ[WtbNArvof[
    ^ύX܂Bt[\ɂɂ

        case WM_ADJUSTWINDOWPOS :
	    pswp = (PSWP) PVOIDFROMMP(mp1) ;
	    WinSetWindowPos(hwndShape, pswp->hwndInsetBehind,
	            pswp->x, pswp->y, pswp->cx, pswp->cy, pswp->fl) ;
            pswp->fl &= ~SWP_SHOW ;
            return ftHg

    Ƃ܂B܂EBhETCYŒ肷ɂ́A

        case WM_ADJUSTWINDOWPOS :
	    pswp = (PSWP) PVOIDFROMMP(mp1) ;
	    WinSetWindowPos(hwndShape, pswp->hwndInsetBehind,
	            pswp->x, pswp->y, pswp->cx, pswp->cy, pswp->fl) ;
            pswp->cx = ŒTCY ;
            pswp->cy = ŒTCY ;
            pswp->fl &= ~SWP_SHOW ;
            return ftHg

    ƂĐł܂B

    ڂ̓TvR[hitrbitmap.cAtranime.cj䗗B

RDRDL[A}EXۂ̒ʒm

    VFCvEBhEŔL[A}EX֘ÃCxgibZ[Wj
    ̓I[iEBhEɓ]܂BŁAL[}EXɑ΂鏈
    ɂ́At[ɂ̂悤ȃR[hgݍޕKv܂B

    Œӂė~_́A}EX֘ÃbZ[Wł͑̏ꍇ}EX
    ̈ʒuꏏɒʒm悤ɂȂĂ܂AVFCvEBhEg
    ꍇɂ́A}EXʒuVFCvEBhE΂ɂȂĂ邽߁At[
    EBhEł̈ʒuQƂĂӖɂȂĂAƂ_łB

    ̓sŃ}EXʒuKvƂꍇɂ͕ʓruWinQueryPointerPosv
    ŋ߂悤ɂĂB

    ڂ̓TvR[hitrbitmap.cAtreyes.cj䗗B
