VFP ·R¥ÎªÌªÀ°Ï ­º­¶ 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¸ü.
 
 ±`¨£°ÝÃD±`¨£°ÝÃD   ·j´M·j´M   ·|­û¦Cªí·|­û¦Cªí   ·|­û¸s²Õ·|­û¸s²Õ   ·|­ûµù¥U·|­ûµù¥U 
 ­Ó¤H¸ê®Æ­Ó¤H¸ê®Æ   µn¤JÀˬd±zªº¨p¤H°T®§µn¤JÀˬd±zªº¨p¤H°T®§   µn¤Jµn¤J

¥D­µ¶q+ÀR­µ

 
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï
¤W¤@½g¥DÃD :: ¤U¤@½g¥DÃD  
µoªí¤H ¤º®e
sunghsia



µù¥U®É¶¡: 2003-06-13
¤å³¹: 52
¨Ó¦Û: ¥x¥_

²Ä 1 ¼Ó

µoªíµ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
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
garfield
Site Admin


µù¥U®É¶¡: 2003-01-30
¤å³¹: 2157


²Ä 2 ¼Ó

µoªíµ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°ª¿³,
ÁÙ¬O­nÁÂÁ§Aªº¤À¨É. ^^

_________________
§Q¥Î>>·j´M<<ªº¥\¯à·|¤ñ°ÝªºÁÙ­n§Ö±o¨ìµª®×.
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§ µo°e¹q¤l¶l¥ó
sunghsia



µù¥U®É¶¡: 2003-06-13
¤å³¹: 52
¨Ó¦Û: ¥x¥_

²Ä 3 ¼Ó

µoªíµ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
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
css



µù¥U®É¶¡: 2004-12-31
¤å³¹: 32


²Ä 4 ¼Ó

µoªíµoªí©ó: ¬P´Á¤G ¤Q¤ë 04, 2005 11:14 pm    ¤å³¹¥DÃD: ¤Þ¨¥¦^ÂÐ

¤Ó´Î°Õ¡I·PÁÂ¥ý¥ÍªººB´n¤À¨É¡I
¦^³»ºÝ
À˵ø·|­û­Ó¤H¸ê®Æ µo°e¨p¤H°T®§
±q¤§«eªº¤å³¹¶}©lÅã¥Ü:   
µoªí·s¥DÃD   ¦^ÂÐ¥DÃD    VFP ·R¥ÎªÌªÀ°Ï ­º­¶ -> VFP °Q½×°Ï ©Ò¦³ªº®É¶¡§¡¬° ¥x¥_®É¶¡ (GMT + 8 ¤p®É)
²Ä1­¶(¦@1­¶)

 
«e©¹:  
±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§@