  | 
				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 | 
	 
	
		sunghsia
 
 
  µù¥U®É¶¡: 2003-06-13 ¤å³¹: 52 ¨Ó¦Û: ¥x¥_
  ²Ä 1 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤G ¤Q¤ë 04, 2005 11:07 am    ¤å³¹¥DÃD: ¥Dµ¶q+ÀRµ | 
				     | 
			 
			
				
  | 
			 
			
				************************************************
 
* «þ³Æ¦Ü *.prg ±ýÂ÷¶}µ{¦¡®É,ÂIÀ»[ªÅ¥Õªº¦a¤è]
 
************************************************
 
 
ouserform=CREATEOBJECT ("userform")
 
ouserform.SHOW
 
 
DEFINE CLASS userform AS form
 
  name="Form1"
 
  caption="Form1"
 
  left=47
 
  top=46
 
  width=100
 
  height=142
 
  maxbutton=.F.
 
  closable=.F.
 
  showwindow=2
 
  visible=.T.
 
 
add object ±±¨î½u¦WºÙ AS Label with left=12,top=8 , autosize=.T.
 
add object shape1 AS shape with left=4,top=24,width=90,height=2 ,specialEffect=0
 
add object chkMute AS checkbox with left=7,top=26, autosice=.T. ,caption=[ ÀRµ], backstyle=0
 
add object timer1 AS Timer
 
 
 
PROCEDURE ACTIVATE
 
  _screen.windowstate=1
 
  _screen.visible=.F.
 
  READ EVENTS
 
ENDPROC
 
 
PROCEDURE CLICK  &&Â÷¶}
 
  = GlobalFree (hmem)
 
  RELEASE DLL
 
  CLEAR EVENTS
 
  _screen.visible=.T.
 
  _screen.windowstate=2
 
ENDPROC
 
 
PROCEDURE ERROR
 
  LPARAMETERS nError, cMethod, nLine
 
  messagebox("¿ù»~½X: "+ltrim(str(nError))+chr(13)+Message()+chr(13)+chr(13)+"½Ð¦w¸Ë ActiveX"+chr(13)+"   (©Î)"+chr(13)+"±N PROCEDURE INIT ¨Æ¥óùتº COMCTL.Slider.1 ´«¦¨ MSComctlLib.Slider.2 ¸Õ¸Õ",16)
 
  QUIT
 
ENDPROC
 
 
PROCEDURE INIT
 
  this.addobject ("VSlider" , "Slider" , "COMCTL.Slider.1") && «Ø¥ß Sliderª«¥ó
 
  this.VSlider.move(30,42,90,90)
 
  this.VSlider.tickStyle=2
 
  this.VSlider.orientation=1
 
 
  DECLARE INTEGER mixerOpen IN winmm INTEGER @ phmx, INTEGER uMxId, INTEGER dwCallback, INTEGER dwInstance, INTEGER fdwOpen
 
  DECLARE INTEGER mixerGetLineInfo IN winmm INTEGER hmxobj, STRING @ pmxl, INTEGER fdwInfo
 
  DECLARE INTEGER mixerGetLineControls IN winmm INTEGER hmxobj, STRING @ pmxlc, INTEGER fdwControls
 
  DECLARE INTEGER mixerGetControlDetails IN winmm INTEGER hmxobj, STRING @ pmxcd, INTEGER fdwDetails
 
  DECLARE INTEGER mixerSetControlDetails IN winmm INTEGER hmxobj, STRING @ pmxcd, INTEGER fdwDetails
 
  DECLARE INTEGER GlobalFree IN kernel32 INTEGER hMem
 
  DECLARE INTEGER GlobalLock IN kernel32 INTEGER hMem
 
  DECLARE INTEGER GlobalAlloc IN kernel32 INTEGER wFlags, INTEGER dwBytes
 
  DECLARE RtlMoveMemory IN kernel32 As CopyMemory STRING @ Destination, INTEGER Source, INTEGER nLength
 
 
 
  public hmixer, hmem, mxcd, muted, ³Ì¤jµ¶q
 
 
  hmixer=0
 
  = mixerOpen(@hmixer, 0, 0, 0, 0)  &&¶}±Ò¹w³]¸Ë¸m
 
 
  * --------------------------------------------------------------------
 
  componentType = 4  && MIXERLINE_COMPONENTTYPE_DST_SPEAKERS &&¥Dµ¶qªºÈ
 
  ctrlType = 1342177280 + 196608 + 1  && MIXERCONTROL_CONTROLTYPE_VOLUME
 
  * --------------------------------------------------------------------
 
 
  mxl = this.num2dword(168) + repl(chr(0),20) + this.num2dword(componentType) + repl(chr(0),140)
 
  = mixerGetLineInfo (hmixer, @mxl, 3) && MIXER_GETLINEINFOF_COMPONENTTYPE=3
 
 
  this.±±¨î½u¦WºÙ.caption= substr(mxl,57,64)  && ¥»½uªºªø¦WºÙ
 
  Lcontrols = this.buf2dword(substr(mxl,37,4))  && ¥»½uªº Controls¼Æ¶q
 
 
  mxc = this.num2dword(152) + repl(chr(0),148)
 
  mute = mxc
 
 
  hMem = GlobalAlloc(64, len(mxc) * Lcontrols)
 
  _add = GlobalLock(hMem)
 
 
  dwLineID = substr(mxl, 13, 4)
 
  mxlc = this.num2dword(24) + dwLineID + this.num2dword(ctrlType) + this.num2dword(Lcontrols) + this.num2dword(len(mxc)) + this.num2dword(_add)
 
  = mixerGetLineControls(hmixer, @mxlc, 0) &&MIXER_GETLINECONTROLSF_ALL=0
 
 
  = CopyMemory (@mxc , _add , len(mxc)) && µ¶q (Lcontrolsªº²Ä1Ó¬Oµ¶q)
 
* = CopyMemory (@mute, _add + len(mxc) , len(mxc))  && ÀRµ (¹w³]¦bLcontrolsªº²Ä2Ó,¦ýÁÙ¬O²³æªº´M§ä¤@¤U)
 
 
  for s=0 to Lcontrols-1  &&´M§äÀRµ
 
      = CopyMemory (@mute, _add+(len(mxc)*s) , len(mxc))
 
      if "mute" $ lower(substr(mute,21,16))
 
         exit
 
      else
 
         if s=Lcontrols-1  && ³£¨S¦³§ä¨ìªº¸Ü,¥i¯à¬O¦WºÙ¤£¦P,¨º´N..
 
            = CopyMemory (@mute, _add+len(mxc) , len(mxc))  && ¦º°¨·í¬¡°¨Âå, ±Ä¥Î Lcontrolsªº²Ä2Ó
 
         endif
 
      endif
 
  endfor
 
  = GlobalFree (hMem)
 
 
 
  ³Ì¤pµ¶q = this.buf2dword (substr(mxc,101,4))
 
  ³Ì¤jµ¶q = this.buf2dword (substr(mxc,105,4))
 
  this.VSlider.tickFrequency=³Ì¤jµ¶q/6  &&¥X²{6Ó©Î7Ó«ü¼Ð½u
 
  this.VSlider.min = ³Ì¤pµ¶q
 
  this.VSlider.max = ³Ì¤jµ¶q
 
 
  vol = REPL(chr(0),4)
 
  hmem = GlobalAlloc(0, Len(vol))
 
  _add = GlobalLock(hmem)
 
 
  xControlID = substr(mxc,5,4)
 
  uControlID = substr(mute,5,4)
 
  mxcd  = this.num2dword(24) + xControlID + this.num2dword(1) + this.num2dword(0) + this.num2dword(len(vol)) + this.num2dword(_add)
 
  muted = this.num2dword(24) + uControlID + this.num2dword(1) + this.num2dword(0) + this.num2dword(len(vol)) + this.num2dword(_add)
 
 
  thisform.¨ú±oµ¶q»PÀRµ
 
 
  this.timer1.interval = 200  &&»Pwindowsªºµ¶q±±¨î¦P¨B, ¤£·Qªº¸Ü¥i¥H mark °_¨Ó, ¥[§Ö³t«×
 
 
  * ------- ¤U±µ{¦¡·|¶}±Òwindowsªºµ¶q±±¨î,¥i¥H§â¥¦mark ------
 
  DECLARE INTEGER ShellExecute IN shell32 INTEGER, STRING, STRING, STRING, STRING, INTEGER
 
  = ShellExecute (0, "open", "Sndvol32.exe", "", "", 1)
 
ENDPROC
 
 
 
PROCEDURE Timer1.Timer
 
  thisform.forecolor=rgb(255,255,255)
 
  thisform.line(13,55,24,55)
 
  thisform.line(13,55,24,127)
 
  thisform.forecolor=rgb(100,100,100)
 
  thisform.line(24,55,24,123)
 
 
  thisform.¨ú±oµ¶q»PÀRµ
 
ENDPROC
 
 
 
PROCEDURE ¨ú±oµ¶q»PÀRµ
 
  DECLARE RtlMoveMemory IN kernel32 As CopyMemory INTEGER @ Destination, INTEGER Source, INTEGER nLength
 
 
  *µ¶q
 
  = mixerGetControlDetails (hmixer, @mxcd, 0) && MIXER_GETCONTROLDETAILSF_VALUE = 0
 
  _add = this.buf2dword(substr(mxcd,21,4)) &&¦s©ñ°Ïªº¦a§}
 
  vol = 4
 
  = CopyMemory (@vol, _add, vol)  &&±N _add«ü©w¦s©ñ°ÏªºÈ,«þ³Æµ¹vol
 
  this.VSlider.value = ³Ì¤jµ¶q - vol
 
 
  *ÀRµ
 
  = mixerGetControlDetails(hmixer, @muted, 0)  && MIXER_GETCONTROLDETAILSF_VALUE = 0
 
  _add = this.buf2dword(substr(muted,21,4)) &&¦s©ñ°Ïªº¦a§}
 
  OnOff = 4
 
  = CopyMemory (@OnOff, _add, OnOff) &&±N _add«ü©w¦s©ñ°ÏªºÈ,«þ³Æµ¹OnOff
 
  this.chkMute.value = OnOff
 
ENDPROC
 
 
 
 
PROCEDURE ³]©wµ¶q
 
  DECLARE RtlMoveMemory IN kernel32 As CopyMemory INTEGER Destination, STRING @ Source, INTEGER nLength  
 
 
  _add = this.buf2dword(substr(mxcd,21,4)) &&¦s©ñ°Ïªº¦a§}
 
  vol = this.num2dword(³Ì¤jµ¶q - this.VSlider.value)  &&³]©wµ¶qªºÈ
 
  = CopyMemory (_add , @vol , 4) &&±NvolªºÈ,«þ³Æ¦Ü _add©Ò«üªº¦s©ñ°Ï
 
  = mixerSetControlDetails (hmixer, @mxcd, 0)
 
ENDPROC
 
 
 
 
PROCEDURE ³]©wÀRµ
 
  DECLARE RtlMoveMemory IN kernel32 As CopyMemory INTEGER Destination, STRING @ Source, INTEGER nLength  
 
 
  _add = this.buf2dword(substr(muted,21,4)) &&¦s©ñ°Ïªº¦a§}
 
  OnOff = this.num2dword(this.chkMute.value)  &&³]©wÀRµªºÈ
 
  = CopyMemory (_add , @OnOff , 4) &&±NOnOffªºÈ,«þ³Æ¦Ü _add©Ò«üªº¦s©ñ°Ï
 
  = mixerSetControlDetails (hmixer, @muted, 0)
 
ENDPROC
 
 
 
 
PROCEDURE chkMute.interactivechange   && ÂIÀ»ÀRµ (³]©wÀRµ)
 
  thisform.³]©wÀRµ
 
ENDPROC
 
 
 
 
PROCEDURE buf2Dword (v) &&±µ¦¬32¦ì¤¸¼ÆÈ¸ê®Æ,¦^¶Ç¤Q¶i¦ì
 
RETURN ;
 
   asc(substr(v, 1,1)) +;
 
   asc(substr(v, 2,1)) * 256 +;
 
   asc(substr(v, 3,1)) * 65536 +;
 
   asc(substr(v, 4,1)) * 16777216
 
ENDPROC
 
 
 
PROCEDURE num2Dword (lnValue) &&±µ¦¬¤Q¶i¦ì,¦^¶Ç32¦ì¤¸¼ÆÈ¸ê®Æ
 
#DEFINE m0       256
 
#DEFINE m1     65536
 
#DEFINE m2  16777216
 
    LOCAL b0, b1, b2, b3
 
    b3 = Int(lnValue/m2)
 
    b2 = Int((lnValue - b3*m2)/m1)
 
    b1 = Int((lnValue - b3*m2 - b2*m1)/m0)
 
    b0 = Mod(lnValue, m0)
 
RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
 
ENDPROC
 
 
 
ENDDEFINE
 
 
 
 
DEFINE CLASS Slider AS OLEcontrol
 
  visible=.T.
 
  PROCEDURE mouseDOWN
 
     LPARAMETERS button, shift, x, y
 
     thisform.timer1.enabled=.F.
 
  ENDPROC
 
 
  PROCEDURE mouseUP
 
     LPARAMETERS button, shift, x, y
 
     thisform.timer1.enabled=.T.
 
  ENDPROC
 
 
  PROCEDURE Scroll
 
     thisform.³]©wµ¶q
 
  ENDPROC
 
ENDDEFINE | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		garfield Site Admin
  
  µù¥U®É¶¡: 2003-01-30 ¤å³¹: 2160
 
  ²Ä 2 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤G ¤Q¤ë 04, 2005 5:31 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				sunghsia¥S, ¦b§Úªº¹q¸£¤¤¹ê´úªºµ²ªG, 
 
µLªk°»´ú©Î³]©w ÀRµ .
 
 
********
 
¥H«e·Q¥h±±¨î¹q¸£µ¶q, 
 
¥h¬ÝMSDN¬Ý±oº¡ÀYÃú¤ô, 
 
¤@¤è±¬O^¤å¤Ó®t, ¤@¤è±¬O没¾Ç¹LC»y¨¥,
 
§¹¥þ¬Ý¤£À´¦p¦ó¨Ï¥Î.
 
¥u¦n¥h±Ä¥Î EQpro.ocx ³oÓFreeWay¤¸¥ó.
 
²{¦b¬Ý¨ìvfp¤]¥i¥H±±¨îµ¶q¯u°ª¿³,
 
ÁÙ¬OnÁÂÁ§Aªº¤À¨É. ^^ _________________ §Q¥Î>>·j´M<<ªº¥\¯à·|¤ñ°ÝªºÁÙn§Ö±o¨ìµª®×. | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		sunghsia
 
 
  µù¥U®É¶¡: 2003-06-13 ¤å³¹: 52 ¨Ó¦Û: ¥x¥_
  ²Ä 3 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤G ¤Q¤ë 04, 2005 6:19 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				¯u¬O¥i±¤, ¤£¹L¨Ï¥Îocx±±¨î¤]¬O¤@¼Ë, ¥B¤è«K¤Ó¦h¤F, ¦ý´N¬O¤Ö¤F¨º»ò¤@ÂIÂI£x¦¨´N·P¦Ó¤w..
 
¤£ª¾ºõ¸ô¤W¬O§_¦³Åã¥Üµªiªºocx, §ä¤F³\¤[³£§ä¤£¨ì, ¤£µM¥Îvfp³]p¥X¨Óªºµªi
 
§Úı±o¤£¤Ó²z·Q.. µ{¦¡½X¤Ó¦h¤F~~Åã¥Ü®ÄªG¤]¤£¦n | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		css
 
 
  µù¥U®É¶¡: 2004-12-31 ¤å³¹: 33
 
  ²Ä 4 ¼Ó
  | 
		
			
				 µoªí©ó: ¬P´Á¤G ¤Q¤ë 04, 2005 11:14 pm    ¤å³¹¥DÃD:  | 
				     | 
			 
			
				
  | 
			 
			
				| ¤Ó´Î°Õ¡I·PÁÂ¥ý¥ÍªººB´n¤À¨É¡I | 
			 
		  | 
	 
	
		| ¦^³»ºÝ | 
		 | 
	 
	
		  | 
	 
	
		 | 
	 
 
  
  	 
	    
  	   | 
 	
±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§@ 
		 |