  | 
				VFP ·R¥ÎªÌªÀ°Ï ¥»°Q½×°Ï¬° Visual Foxpro ·R¥ÎªÌ¸gÅç¥æ¬yªº¦a¤è, ½Ð¦h¦h§Q¥Î"·j´M"ªº¥\¯à, ¥ý¬d¬Ý¬Ý¦³µL«e¨Ò¥i´`, ¦pªGÁÙ¦³¤£À´ªº¦Aµo°Ý. ³¡¥÷¥DÃD¦³ªþ¥[ÀÉ®×, ¶·¥ýµù¥U¦¨¬°ªÀ°Ï©~¥Á¤~¥i¥H¤U¸ü.   
				 | 
			 
		 
		 
	
		| ¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD   | 
	 
	
	
		| µoªí¤H | 
		¤º®e | 
	 
	
		garfield Site Admin
  
  µù¥U®É¶¡: 2003-01-30 ¤å³¹: 2160
 
  ²Ä 1 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤T ¥|¤ë 19, 2006 11:46 am    ¤å³¹¥DÃD: Àˬd¨Ã¦Û°Ê«Ø¥ß¦Lªí¾÷¦Û©w¯È±i¤Ø¤o OO | 
				     | 
			 
			
				
  | 
			 
			
				¦bºô¸ô¤¤§ä¨ìªº¸ê®Æ, ı±oì©lµ{¦¡¬Ý°_¨Ó«Ü½ÆÂø, ¹ï©óªì¾ÇªÌ¦Ó¨¥¤ÓÃø²z¸Ñ, ±N¥¦¼g¦¨°Æµ{¦¡, ª½±µ®³¨Ó¥Î´N¦n¤F.
 
§Æ±æ¯àÀ°§U¨ì¤@¨Ç¤H ^^
 
 
 
 	  | ¥N½X: | 	 		  
 
*****************************************************
 
****  ¦Lªí¾÷¯È±i±±¨î,  ¦Û©w¯È±i, ¥i?#93;©w¯È±i¤j¤p¤ÎÃä¬É
 
* ½d¨Ò
 
* oprn = createobject('prncontrol')
 
* ? oprn.chkpaper('¤¤¤@¤M' )      &&--¦pªG¦³«Ø¥ß"¤¤¤@¤M"³oӤؤo¦WºÙ´N¶Ç¦^ .T. , ¤Ø¤o¦b .papersizewidth ¤Î .papersizeheight , ¥H^¦T¬°¥D
 
*¤j¤p¼g¤@©wn¬Û¦P
 
* oprn.addpaper('¤¤¤@¤M',8.5,5.5 )      &&--¹w©w«Ø¥ßªº¤Ø¤o¦WºÙ,^¦T¼e,^¦Tªø
 
* oprn.addpaper('12inch',8.5,12,1,2,3,4)      &&--1,2,3,4 ¦U¬°¥ª¥k¤W¤U
 
* oprn.delpaper('¤¤¤@¤M' )      &&--¹w©w«Ø¥ßªº¤Ø¤o¦WºÙ,^¦T¼e,^¦Tªø
 
* ¥i¥H¥Î regedit ¨ì localmachine\SYSTEM\CurrentControlSet\Control\Print\Forms ¬Ý¨ì·s¼Wªº¸ê®Æ
 
 
Define Class prncontrol As Custom
 
* ÂI°}¦¡¦Lªí¾÷ªº³]p¥»¨Ó´N¬O¨Ì^¦T¬°¥Dn³W®æ
 
* ooµæ³¾§ï¼gªÌ: garfield
 
   papersizewidth = 8.5
 
   papersizeheight = 5.5
 
   inchtomm = 25.4
 
   
 
   oheap = ''
 
   hPrinter=0
 
   nSize=0
 
   aFI1=Space(32)
 
   BytesNeeded=0
 
   NumForms=0
 
   AddForm=0
 
 
   DIMENSION prnlist[1,2]
 
   DIMENSION paperlist[1]
 
   lcprinter = ""
 
   lcport    = ""
 
 
   Procedure Init
 
      Declare Integer OpenPrinter In WinSpool.Drv As WS_OpenPrinter ;
 
         String pPrinterName, ;
 
         Integer @phPrinter, ;
 
         String pDefault
 
 
      Declare Integer DocumentProperties In WinSpool.Drv ;
 
         Integer, ;
 
         Integer, ;
 
         String, ;
 
         String, ;
 
         String, ;
 
         Integer
 
 
      Declare Integer ClosePrinter In WinSpool.Drv As WS_ClosePrinter ;
 
         Integer hPrinter
 
 
      Declare Integer EnumForms In WinSpool.Drv ;
 
         Integer, ;
 
         Integer, ;
 
         String @, ;
 
         Integer , ;
 
         Integer @, ;
 
         Integer @
 
 
      Declare Integer AddForm In WinSpool.Drv ;
 
         Integer, ;
 
         Integer, ;
 
         String
 
 
      Declare Integer DeleteForm In WinSpool.Drv ;
 
         Integer, ;
 
         String
 
 
      Declare Long CreateDC In gdi32.Dll ;
 
         STRING @cDriver, ;
 
         STRING @cDevice, ;
 
         STRING cOutput, ;
 
         STRING cInitData
 
 
      Declare Long DeleteDC In gdi32.Dll ;
 
 
      Declare Long ResetDC In gdi32.Dll ;
 
         Integer, ;
 
         String
 
 
      Declare Integer lstrcpy In kernel32.Dll ;
 
         STRING @lpString1, Integer lpString2
 
 
      Declare Integer GetForm In WinSpool.drv ;
 
         INTEGER,;
 
         String, ;
 
         INTEGER,;
 
         String, ;
 
         INTEGER,;
 
         INTEGER
 
 
      Declare Integer SetForm In WinSpool.drv ;
 
         INTEGER,;
 
         String,;
 
         Integer,;
 
         String
 
 
      APRINTERS(this.prnlist)
 
      this.lcprinter = this.prnlist[1,1]
 
      
 
      this.oheap = Createobj("Heap")
 
 
      this.paperdata( )
 
 
   ENDPROC
 
   PROCEDURE paperdata
 
*susp
 
      mhPrinter=0
 
      mNumForms=0
 
      mBytesNeeded=0
 
      If WS_OpenPrinter(this.lcprinter , @mhPrinter, 0) <> 0
 
         NS=REPLICATE(CHR(0), 32)
 
         RetVal = EnumForms(mhPrinter, 1, @NS, 0, @mBytesNeeded, @mNumForms)
 
*? RetVal
 
         bc=mBytesNeeded
 
*? 'bc=',bc         
 
         mTemp=REPLICATE(CHR(0), bc)
 
         RetVal = EnumForms(mhPrinter, 1, @mTemp, bc , @mBytesNeeded, @mNumForms)
 
*? RetVal
 
         Temp = REPLICATE(CHR(0), bc)
 
 
         Declare RtlMoveMemory IN kernel32 As CopyMemory;
 
            STRING @ Destination,;
 
            STRING Source,;
 
            INTEGER nLength
 
 
         CopyMemory(@Temp,mTemp,bc)
 
 
         DIMENSION this.paperlist[mNumForms,3]
 
 
*wait
 
         For I = 1 To mNumForms
 
            sn = (I - 1) * 32 + 1
 
            sn = substr(Temp,sn,32)
 
            sTemp = Space(512)
 
            ss = substr(sn,5,4)
 
            x = 0
 
            = lstrcpy(@sTemp, this.LONGTONUM(ss))
 
*? i,Chr(0)$sTemp,ss,this.LONGTONUM(ss),stemp            
 
            If !Chr(0)$sTemp
 
               PtrCtoVbString = ""
 
            Else
 
               this.paperlist[i,1] = alltrim(Left(sTemp, at(Chr(0),sTemp)-1))
 
               this.paperlist[i,2] = this.LONGTONUM(substr(sn, 9,4))/1000      &&-- mm
 
               this.paperlist[i,3] = this.LONGTONUM(substr(sn,13,4))/1000      &&-- mm
 
            Endif
 
         Next
 
 
      Else
 
         Wait window "µLªk¨ú±o¦Lªí¾÷¯È±i¸ê°T"
 
      Endif
 
 
      =WS_ClosePrinter(mhPrinter)
 
 
   ENDPROC
 
   PROCEDURE longtonum
 
      Lparameter TCLONG
 
      Declare RtlMoveMemory IN WIN32API AS RtlCopyLong ;
 
         INTEGER @ DestNum, ;
 
         STRING @ pVoidSource, ;
 
         INTEGER nLength
 
      Local NNUM
 
      NNUM = 0
 
      =RTLCOPYLONG(@NNUM, TCLONG, 4)
 
      Return NNUM
 
   ENDPROC
 
   Procedure NumtoDword
 
      Lparameter TNNUM
 
      Declare RtlMoveMemory IN WIN32API AS RtlCopyLong ;
 
         STRING @pDestString, ;
 
         INTEGER @pVoidSource, ;
 
         INTEGER nLength
 
      Local CSTRING
 
      CSTRING = SPACE(4)
 
      =RTLCOPYLONG(@CSTRING, BITOR(TNNUM,0), 4)
 
      Return CSTRING
 
   ENDPROC
 
 
   Procedure addpaper
 
      LPARAMETERS mname , mwidth , mheight, mleft , mright , mtop, mbotton
 
      IF TYPE('mleft')#'N'
 
         mleft=0
 
      ENDIF
 
      IF TYPE('mright')#'N'
 
         mright=0
 
      ENDIF
 
      IF TYPE('mtop')#'N'
 
         mtop = 0
 
      ENDIF
 
      IF TYPE('mbotton')#'N'
 
         mbotton=0
 
      endif
 
      LOCAL mret
 
      mret = .f.
 
      mhPrinter = 0
 
      mBytesNeeded=0
 
      If EMPTY(mname) OR mwidth<=0 OR mheight<=0
 
         WAIT windows '¯È±i¸ê®Æ¦³°ÝÃD, µLªk«Ø¥ß¯È±i¸ê®Æ' nowait
 
      else
 
         If WS_OpenPrinter(this.lcprinter, @mhPrinter, 0) <> 0
 
            FormName=alltrim(mname)+Chr(0)+Chr(0)
 
            NSTRINGBASE = this.OHEAP.ALLOCBLOB(FormName)
 
            RetVal = AddForm(mhPrinter,1,this.NUMTODWORD(0)+this.NUMTODWORD(NSTRINGBASE)+;
 
               this.NUMTODWORD(mwidth*this.inchtomm*1000)+this.NUMTODWORD(mheight*this.inchtomm*1000)+;
 
               this.NUMTODWORD(mleft*this.inchtomm*1000)+this.NUMTODWORD(mtop*this.inchtomm*1000)+;
 
               this.NUMTODWORD((mwidth-mright)*this.inchtomm*1000)+this.NUMTODWORD((mheight-mbotton)*this.inchtomm*1000))
 
 
**//               this.NUMTODWORD(mwidth*this.inchtomm*1000)+this.NUMTODWORD(mheight*this.inchtomm*1000)
 
            =WS_ClosePrinter(mhPrinter)
 
            If RetVal = 0 Then
 
               Messagebox("µLªk?#93;©w¯È±i !")
 
            ELSE
 
               this.paperdata()
 
               *¸g¹ê´ú¸gÅç, ¶·°õ¦æ¨â¦¸¤~¯à¥¿±`§ì¥Xpaper¸ê®Æ
 
               this.paperdata()
 
               mret = .t.   
 
            Endif
 
         Else
 
            Wait window "µLªk¨ú±o¦Lªí¾÷¯È±i¸ê°T"
 
         Endif
 
      ENDIF
 
      RETURN mret
 
   Endproc
 
 
   Procedure delpaper
 
      LPARAMETERS mname
 
      *¤j¤p¼g¤@©wn¬Û¦P
 
      LOCAL mret
 
      mret = .f.
 
      mhPrinter = 0
 
      mBytesNeeded=0
 
      If WS_OpenPrinter(this.lcprinter, @mhPrinter, 0) <> 0
 
         papername= mname
 
         RetVal = DeleteForm(mhPrinter,papername)
 
         =WS_ClosePrinter(mhPrinter)
 
         If RetVal = 0 Then
 
            Messagebox("µLªk§R°£¯È±i¸ê®Æ !")
 
         Else
 
            this.paperdata()
 
         Endif
 
 
      Else
 
         Wait window "µLªk¨ú±o¦Lªí¾÷¯È±i¸ê°T"
 
      Endif
 
      RETURN mret
 
   Endproc
 
 
   Procedure chkpaper
 
      LPARAMETERS mname
 
      *¤j¤p¼g¤@©wn¬Û¦P
 
      LOCAL i, mret
 
      i = ASCAN( this.paperlist , mname)
 
      IF i>0
 
         mret = .t.
 
         i = (i+2) /3
 
         this.papersizewidth= this.paperlist[i,2]/ this.inchtomm
 
         this.papersizeheight= this.paperlist[i,3]/ this.inchtomm
 
      ELSE
 
         mret = .f.
 
         this.papersizewidth= 0
 
         this.papersizeheight= 0
 
      endif
 
      RETURN mret
 
   Endproc
 
 
   Procedure Destroy
 
   Endproc
 
Enddefine
 
 
**************
 
Define Class HEAP As Custom
 
   Protected INHANDLE, INNUMALLOCSACTIVE,IAALLOCS[1,3]
 
   INHANDLE = Null
 
   INNUMALLOCSACTIVE = 0
 
   IAALLOCS = Null
 
   Name = "heap"
 
 
   Procedure ALLOC
 
   Lparameter nSize
 
   Declare Integer HeapAlloc In WIN32API As HAlloc Integer hHeap, Integer dwFlags, Integer dwBytes
 
   Declare Integer HeapSize In WIN32API As HSize Integer hHeap, Integer dwFlags, Integer lpcMem
 
   Local NPTR
 
   With This
 
      NPTR = HAlloc(.INHANDLE, 0, @nSize)
 
      If NPTR # 0
 
         .INNUMALLOCSACTIVE = .INNUMALLOCSACTIVE + 1
 
         Dimension .IAALLOCS[.inNumAllocsActive,3]
 
         .IAALLOCS[.inNumAllocsActive,1] = NPTR
 
         .IAALLOCS[.inNumAllocsActive,2] = HSize(.INHANDLE, 0, NPTR)
 
         .IAALLOCS[.inNumAllocsActive,3] = .T.
 
      Else
 
         NPTR = Null
 
      Endif
 
   Endwith
 
   Return NPTR
 
   Endproc
 
 
   Function ALLOCBLOB
 
   Lparameter CBSTRINGTOCOPY
 
   Local NALLOCPTR
 
   With This
 
      NALLOCPTR = .ALLOC(Len(CBSTRINGTOCOPY))
 
      If ! Isnull(NALLOCPTR)
 
         .COPYTO(NALLOCPTR,CBSTRINGTOCOPY)
 
      Endif
 
   Endwith
 
   Return NALLOCPTR
 
   Endfunc
 
 
   Function ALLOCSTRING
 
   Lparameter CSTRING
 
   Return This.ALLOCBLOB(CSTRING + Chr(0))
 
   Endfunc
 
 
   Function ALLOCINITAS
 
   Lparameter NSIZEOFBUFFER, NBYTEVALUE
 
   If Type("nByteValue") # "N" Or ! Between(NBYTEVALUE,0,255)
 
      NBYTEVALUE = 0
 
   Endif
 
   Return This.ALLOCBLOB(Replicate(Chr(NBYTEVALUE),NSIZEOFBUFFER))
 
   Endfunc
 
 
   Procedure DEALLOC
 
   Lparameter NPTR
 
   Declare Integer HeapFree In WIN32API As HFree ;
 
      INTEGER hHeap, ;
 
      INTEGER dwFlags, ;
 
      INTEGER lpMem
 
   Local NCTR
 
   NCTR = Null
 
   With This
 
      NCTR = .FINDALLOCID(NPTR)
 
      If ! Isnull(NCTR)
 
         =HFree(.INHANDLE, 0, NPTR)
 
         .IAALLOCS[nCtr,3] = .F.
 
      Endif
 
   Endwith
 
   Return ! Isnull(NCTR)
 
   Endproc
 
 
   Procedure COPYTO
 
   Lparameter NPTR, CSOURCE
 
   Declare RtlMoveMemory In WIN32API As RtlCopy ;
 
      INTEGER nDestBuffer, ;
 
      STRING @pVoidSource, ;
 
      INTEGER nLength
 
   Local NCTR
 
   NCTR = Null
 
   If Type("nPtr") = "N" And Type("cSource") $ "CM" ;
 
         AND ! (Isnull(NPTR) Or Isnull(CSOURCE))
 
      With This
 
         NCTR = .FINDALLOCID(NPTR)
 
         If ! Isnull(NCTR)
 
            =RtlCopy((.IAALLOCS[nCtr,1]), ;
 
               CSOURCE, ;
 
               MIN(Len(CSOURCE),.IAALLOCS[nCtr,2]))
 
         Endif
 
      Endwith
 
   Endif
 
   Return ! Isnull(NCTR)
 
   Endproc
 
 
   Procedure COPYFROM
 
   Lparameter NPTR
 
   Declare RtlMoveMemory In WIN32API As RtlCopy ;
 
      STRING @DestBuffer, ;
 
      INTEGER pVoidSource, ;
 
      INTEGER nLength
 
   Local NCTR, UBUFFER
 
   UBUFFER = Null
 
   NCTR = Null
 
   If Type("nPtr") = "N" And ! Isnull(NPTR)
 
      With This
 
         NCTR = .FINDALLOCID(NPTR)
 
         If ! Isnull(NCTR)
 
            UBUFFER = Repl(Chr(0),.IAALLOCS[nCtr,2])
 
            =RtlCopy(@UBUFFER, ;
 
               (.IAALLOCS[nCtr,1]), ;
 
               (.IAALLOCS[nCtr,2]))
 
         Endif
 
      Endwith
 
   Endif
 
   Return UBUFFER
 
   Endproc
 
 
   Protected Function FINDALLOCID
 
      Lparameter NPTR
 
      Local NCTR
 
      With This
 
         For NCTR = 1 To .INNUMALLOCSACTIVE
 
            If .IAALLOCS[nCtr,1] = NPTR And .IAALLOCS[nCtr,3]
 
               Exit
 
            Endif
 
         Endfor
 
         Return Iif(NCTR <= .INNUMALLOCSACTIVE,NCTR,Null)
 
      Endwith
 
      Endproc
 
 
   Procedure SIZEOFBLOCK
 
   Lparameters NPTR
 
   Local NCTR, NSIZEOFBLOCK
 
   NSIZEOFBLOCK = Null
 
   With This
 
      NCTR = .FINDALLOCID(NPTR)
 
      Return Iif(Isnull(NCTR),Null,.IAALLOCS[nCtr,2])
 
   Endwith
 
   Endproc
 
 
   Procedure Destroy
 
   Declare HeapDestroy In WIN32API As HDestroy ;
 
      INTEGER hHeap
 
 
   Local NCTR
 
   With This
 
      For NCTR = 1 To .INNUMALLOCSACTIVE
 
         If .IAALLOCS[nCtr,3]
 
            .DEALLOC(.IAALLOCS[nCtr,1])
 
         Endif
 
      Endfor
 
      HDestroy[.inHandle]
 
   Endwith
 
   DoDefault()
 
   Endproc
 
 
   Procedure Init
 
   Declare Integer HeapCreate In WIN32API As HCreate ;
 
      INTEGER dwOptions, ;
 
      INTEGER dwInitialSize, ;
 
      INTEGER dwMaxSize
 
   #Define SWAPFILEPAGESIZE  4096
 
   #Define BLOCKALLOCSIZE    2 * SWAPFILEPAGESIZE
 
   With This
 
      .INHANDLE = HCreate(0, BLOCKALLOCSIZE, 0)
 
      Dimension .IAALLOCS[1,3]
 
      .IAALLOCS[1,1] = 0
 
      .IAALLOCS[1,2] = 0
 
      .IAALLOCS[1,3] = .F.
 
      .INNUMALLOCSACTIVE = 0
 
   Endwith
 
   Return (This.INHANDLE # 0)
 
   Endproc
 
 
ENDDEFINE
 
 | 	 
  _________________ §Q¥Î>>·j´M<<ªº¥\¯à·|¤ñ°ÝªºÁÙn§Ö±o¨ìµª®×. | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		jepp
 
 
  µù¥U®É¶¡: 2006-03-03 ¤å³¹: 30
 
  ²Ä 2 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤» ¥|¤ë 29, 2006 5:49 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				½Ð°Ý¤@¤U¡A§Ú§âµ{¦¡½X¶K¨ì .PRG  °õ¦æ¸Õ¤F¤@¤U¡A
 
¬°¤°»ò¥u·|¥X²{ "µLªk?#93;©w¯È±i !" ¡C¬O§_¦³¤°»ò²Ó¸`¶·nª`·Nªº? | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  µù¥U®É¶¡: 2003-01-30 ¤å³¹: 2160
 
  ²Ä 3 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤» ¥|¤ë 29, 2006 10:16 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				¤£¥i«½Æ°õ¦æ,
 
À³¸Ó¥Î chkpaper Àˬd¬O§_¤w¸g«Ø¥ß¹L¯È±i¤Ø¤o
 
Ãä¬É¤£¥i³]©w¤Ó¤j.
 
¥i¯à¤£¾A¥Î©ó win98 / winme (¨S¸Õ¹L) _________________ §Q¥Î>>·j´M<<ªº¥\¯à·|¤ñ°ÝªºÁÙn§Ö±o¨ìµª®×. | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		kojanlai0823
 
 
  µù¥U®É¶¡: 2011-12-02 ¤å³¹: 74
 
  ²Ä 4 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤ ¤Q¤G¤ë 02, 2011 3:25 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				| ³o¬qµ{¦¡§Ú¥Î¦bWIN7¤W..«ç»ò³£§ï¤£¹L¥h> < | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  µù¥U®É¶¡: 2003-01-30 ¤å³¹: 2160
 
  ²Ä 5 ¼Ó
  | 
		 | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		kojanlai0823
 
 
  µù¥U®É¶¡: 2011-12-02 ¤å³¹: 74
 
  ²Ä 6 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤T ¤Q¤G¤ë 28, 2011 5:58 pm    ¤å³¹¥DÃD: ¦@¥Î¦Lªí¾÷LPT | 
				     | 
			 
			
				
  | 
			 
			
				³oÓAPI¥i¥H¼g¤J¯È±i®æ¦¡..
 
¦ý¦pªG¬O¤À¨É¥X¨Óªº¦Lªí¾÷«hµLªk§ïÅܯȱi¤j¤p..
 
³oµÛ¹êÅý§ÚÀY¤j..
 
ÁÙ¬O¤À¨É¥Xªº¦Lªí¾÷»Ý°µ¤°»ò¼ËªºÅv¤À¨É¶Ü?? | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
±z µLªk ¦b³oÓª©±µoªí¤å³¹ ±z µLªk ¦b³oÓª©±¦^ÂФ峹 ±z µLªk ¦b³oÓª©±½s¿è¤å³¹ ±z µLªk ¦b³oÓª©±§R°£¤å³¹ ±z µLªk ¦b³oÓª©±¶i¦æ§ë²¼ ±z µLªk ¦b³oÓª©±ªþ¥[ÀÉ®× ±z µLªk ¦b³oÓª©±¤U¸üÀÉ®×
  | 
   
  
  
Powered by phpBB © 2001, 2005 phpBB Group ¥¿Å餤¤å»y¨t¥Ñ phpbb-tw ºûÅ@»s§@ 
		 |