<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[VB-XP]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序开发]]></category>
<pubDate>Sat, 19 Jul 2008 00:21:30 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	'你只要在你的Form1随便添加一张图片, 不加也没事.<br/><br/>'***************************************** 淡进淡出<br/>Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean<br/>Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br/>Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long<br/>Const GWL_EXSTYLE = -20<br/>Const WS_EX_LAYERED = &H80000<br/>Const LWA_COLORKEY = &H1<br/>Const LWA_ALPHA = &H2<br/><br/>Private Sub Form_Load()<br/>Me.Move (Screen.Width - Me.Width) &#92; 2, (Screen.Height - Me.Height) &#92; 2<br/>'***********************************************************************<br/>Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)<br/>Me.Show<br/>DoEvents<br/>lwa_FadeIn Me.hWnd, 1<br/>End Sub<br/><br/>Private Sub Form_Unload(Cancel As Integer)<br/>lwa_FadeOut Me.hWnd, 1<br/>End<br/>End Sub<br/><br/>'***************************************** 淡进<br/>Public Sub lwa_FadeIn(ByVal hWnd As Long, Optional ByVal iStep As Integer = 1)<br/>Dim bAlpha As Integer<br/>bAlpha = 0<br/>While bAlpha < 255<br/>If bAlpha > 255 Then bAlpha = 255<br/>SetLayeredWindowAttributes hWnd, 0, bAlpha, LWA_ALPHA<br/>DoEvents<br/>bAlpha = bAlpha + iStep<br/>Wend<br/>End Sub<br/><br/>'***************************************** 淡出<br/>Public Sub lwa_FadeOut(ByVal hWnd As Long, Optional ByVal iStep As Integer = 1)<br/>Dim bAlpha As Integer<br/>bAlpha = 255<br/>While bAlpha > 0<br/>If bAlpha < 0 Then bAlpha = 0<br/>SetLayeredWindowAttributes hWnd, 0, bAlpha, LWA_ALPHA<br/>DoEvents<br/>bAlpha = bAlpha - iStep<br/>Wend<br/>End Sub<br/><br/><br/>给看不懂的初学者几句话:<br/><br/>你不必看懂上面的每一行代码, 更不需花脑子理解,你只要会用就好了<br/><br/>1.如果你有多个窗体就把<br/>'***************************************** 淡进&nbsp;&nbsp;<br/>'***************************************** 淡出&nbsp;&nbsp;<br/>这两个标题下的代码把它们放在模块Module1.bas<br/>放进去就好了,你不用再去看它们一眼,摆在那就行了.<br/><br/>2.同样的,也把下面这些摆在Module1.bas<br/>放进去就好了,你不用再去看它们一眼,摆在那就行了.<br/>(6F的代码是单一个Form,在下面是多个Form,把Private改为Public)<br/><br/><br/>'***************************************** 淡进淡出&nbsp;&nbsp;<br/>Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Boolean&nbsp;&nbsp;<br/>Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long&nbsp;&nbsp;<br/>Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long&nbsp;&nbsp;<br/>Public Const GWL_EXSTYLE = -20&nbsp;&nbsp;<br/>Public Const WS_EX_LAYERED = &H80000&nbsp;&nbsp;<br/>Public Const LWA_COLORKEY = &H1&nbsp;&nbsp;<br/>Public Const LWA_ALPHA = &H2&nbsp;&nbsp;<br/><br/>************************************************************<br/>上面动作就是复制与粘贴就好了, 你不用再去理它们了.<br/><br/>在每一个Form 的 Form_Load()事件就把下面代码贴上去,再加上你自己的一些东东就好啦.<br/><br/>Private Sub Form_Load()&nbsp;&nbsp;<br/>Me.Move (Screen.Width - Me.Width) &#92; 2, (Screen.Height - Me.Height) &#92; 2&nbsp;&nbsp;<br/>Call SetWindowLong(Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED)&nbsp;&nbsp;<br/>Me.Show&nbsp;&nbsp;<br/>DoEvents&nbsp;&nbsp;<br/>lwa_FadeIn Me.hWnd, 1&nbsp;&nbsp;<br/>End Sub&nbsp;&nbsp;<br/>'*********************************************<br/><br/>在每一个Form 的 Form_Unload()事件就把下面代码贴上去,再加上你自己的一些东东就好啦.<br/>Private Sub Form_Unload(Cancel As Integer)&nbsp;&nbsp;<br/>lwa_FadeOut Me.hWnd, 1&nbsp;&nbsp;<br/>End&nbsp;&nbsp;<br/>End Sub&nbsp;&nbsp;<br/><br/>*************************************************************<br/><br/>添加一个计时器timer1,Interval设置为10<br/>添加一个模块,调用相应的API<br/>模块源码为:<br/><br/>Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long<br/>Public Const HWND_TOPMOST& = -1<br/>Public Const SWP_NOSIZE& = &H1<br/>Public Const SWP_NOMOVE& = &H2<br/>Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long<br/>Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long<br/>Public Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long<br/>Public Const WS_EX_LAYERED = &H80000<br/>Public Const GWL_EXSTYLE = (-20)<br/>Public Const LWA_ALPHA = &H2<br/>Public Const LWA_COLORKEY = &H1<br/><br/><br/>窗体源码为:<br/><br/>Public xx<br/>'以下是让窗体出现时透明<br/>Private Sub Form_Load()<br/>rtn = GetWindowLong(hwnd, GWL_EXSTYLE)<br/>rtn = rtn Or WS_EX_LAYERED<br/>SetWindowLong hwnd, GWL_EXSTYLE, rtn<br/>SetLayeredWindowAttributes hwnd, 0, 0, LWA_ALPHA<br/>SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE<br/>End Sub<br/>'以下是浅入效果<br/>Private Sub Timer1_Timer()<br/><br/>rtn = GetWindowLong(hwnd, GWL_EXSTYLE)<br/>rtn = rtn Or WS_EX_LAYERED<br/>SetWindowLong hwnd, GWL_EXSTYLE, rtn<br/>SetLayeredWindowAttributes hwnd, 0, xx, LWA_ALPHA<br/>SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE<br/>xx = xx + 1<br/>If xx = 255 Then<br/>Timer1.Interval = 0<br/>Timer2.Interval = 10<br/>End If<br/><br/>End Sub<br/><br/>'以下是浅出效果<br/>Private Sub Timer2_Timer()<br/>rtn = GetWindowLong(hwnd, GWL_EXSTYLE)<br/>rtn = rtn Or WS_EX_LAYERED<br/>SetWindowLong hwnd, GWL_EXSTYLE, rtn<br/>SetLayeredWindowAttributes hwnd, 0, xx, LWA_ALPHA<br/>SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE<br/>xx = xx - 1<br/>If xx = 0 Then End<br/>End Sub<br/><br/>VB中MD5算法(1)<br/><br/>调用方法：<br/><div class="code">Private Sub Command1_Click()<br/>Text2.Text = Md5_String_Calc(Text1.Text)<br/>End Sub</div><br/><div class="code">&#039;&nbsp;&nbsp;MD5加密类模块<br/>Option Explicit<br/><br/>Private Const OFFSET_4 = 4294967296#<br/>Private Const MAXINT_4 = 2147483647<br/>Private State(4) As Long<br/>Private ByteCounter As Long<br/>Private ByteBuffer(63) As Byte<br/>Private Const S11 = 7<br/>Private Const S12 = 12<br/>Private Const S13 = 17<br/>Private Const S14 = 22<br/>Private Const S21 = 5<br/>Private Const S22 = 9<br/>Private Const S23 = 14<br/>Private Const S24 = 20<br/>Private Const S31 = 4<br/>Private Const S32 = 11<br/>Private Const S33 = 16<br/>Private Const S34 = 23<br/>Private Const S41 = 6<br/>Private Const S42 = 10<br/>Private Const S43 = 15<br/>Private Const S44 = 21<br/>Property Get RegisterA() As String<br/>RegisterA = State(1)<br/>End Property<br/>Property Get RegisterB() As String<br/>RegisterB = State(2)<br/>End Property<br/><br/>Property Get RegisterC() As String<br/>RegisterC = State(3)<br/>End Property<br/><br/>Property Get RegisterD() As String<br/>RegisterD = State(4)<br/>End Property<br/>Public Function Md5_String_Calc(SourceString As String) As String<br/>MD5Init<br/>MD5Update LenB(StrConv(SourceString, vbFromUnicode)), StringToArray(SourceString)<br/>MD5Final<br/>Md5_String_Calc = GetValues<br/>End Function<br/>Public Function Md5_File_Calc(InFile As String) As String<br/>On Error GoTo errorhandler<br/>GoSub begin<br/><br/>errorhandler:<br/>Md5_File_Calc = &quot;&quot;<br/>Exit Function<br/><br/>begin:<br/>Dim FileO As Integer<br/>FileO = FreeFile<br/>Call FileLen(InFile)<br/>Open InFile For Binary Access Read As #FileO<br/>MD5Init<br/>Do While Not EOF(FileO)<br/>Get #FileO, , ByteBuffer<br/>If Loc(FileO) &lt; LOF(FileO) Then<br/>ByteCounter = ByteCounter + 64<br/>MD5Transform ByteBuffer<br/>End If<br/>Loop<br/>ByteCounter = ByteCounter + (LOF(FileO) Mod 64)<br/>Close #FileO<br/>MD5Final<br/>Md5_File_Calc = GetValues<br/>End Function<br/>Private Function StringToArray(InString As String) As Byte()<br/>Dim I As Integer, bytBuffer() As Byte<br/>ReDim bytBuffer(LenB(StrConv(InString, vbFromUnicode)))<br/>bytBuffer = StrConv(InString, vbFromUnicode)<br/>StringToArray = bytBuffer<br/>End Function<br/>Public Function GetValues() As String<br/>GetValues = LongToString(State(1)) &amp; LongToString(State(2)) &amp; LongToString(State(3)) &amp; LongToString(State(4))<br/>End Function<br/>Private Function LongToString(Num As Long) As String<br/>Dim A As Byte, B As Byte, C As Byte, d As Byte<br/>A = Num And &amp;HFF&amp;<br/>If A &lt; 16 Then LongToString = &quot;0&quot; &amp; Hex(A) Else LongToString = Hex(A)<br/>B = (Num And &amp;HFF00&amp;) &#92; 256<br/>If B &lt; 16 Then LongToString = LongToString &amp; &quot;0&quot; &amp; Hex(B) Else LongToString = LongToString &amp; Hex(B)<br/>C = (Num And &amp;HFF0000) &#92; 65536<br/>If C &lt; 16 Then LongToString = LongToString &amp; &quot;0&quot; &amp; Hex(C) Else LongToString = LongToString &amp; Hex(C)<br/>If Num &lt; 0 Then d = ((Num And &amp;H7F000000) &#92; 16777216) Or &amp;H80&amp; Else d = (Num And &amp;HFF000000) &#92; 16777216<br/>If d &lt; 16 Then LongToString = LongToString &amp; &quot;0&quot; &amp; Hex(d) Else LongToString = LongToString &amp; Hex(d)<br/>End Function<br/><br/>Public Sub MD5Init()<br/>ByteCounter = 0<br/>State(1) = UnsignedToLong(1732584193#)<br/>State(2) = UnsignedToLong(4023233417#)<br/>State(3) = UnsignedToLong(2562383102#)<br/>State(4) = UnsignedToLong(271733878#)<br/>End Sub<br/><br/>Public Sub MD5Final()<br/>Dim dblBits As Double, padding(72) As Byte, lngBytesBuffered As Long<br/>padding(0) = &amp;H80<br/>dblBits = ByteCounter * 8<br/>lngBytesBuffered = ByteCounter Mod 64<br/>If lngBytesBuffered &lt;= 56 Then MD5Update 56 - lngBytesBuffered, padding Else MD5Update 120 - ByteCounter, padding<br/>padding(0) = UnsignedToLong(dblBits) And &amp;HFF&amp;<br/>padding(1) = UnsignedToLong(dblBits) &#92; 256 And &amp;HFF&amp;<br/>padding(2) = UnsignedToLong(dblBits) &#92; 65536 And &amp;HFF&amp;<br/>padding(3) = UnsignedToLong(dblBits) &#92; 16777216 And &amp;HFF&amp;<br/>padding(4) = 0<br/>padding(5) = 0<br/>padding(6) = 0<br/>padding(7) = 0<br/>MD5Update 8, padding<br/>End Sub<br/>Public Sub MD5Update(InputLen As Long, InputBuffer() As Byte)<br/>Dim II As Integer, I As Integer, J As Integer, K As Integer, lngBufferedBytes As Long, lngBufferRemaining As Long, lngRem As Long<br/><br/>lngBufferedBytes = ByteCounter Mod 64<br/>lngBufferRemaining = 64 - lngBufferedBytes<br/>ByteCounter = ByteCounter + InputLen<br/><br/>If InputLen &gt;= lngBufferRemaining Then<br/>For II = 0 To lngBufferRemaining - 1<br/>ByteBuffer(lngBufferedBytes + II) = InputBuffer(II)<br/>Next II<br/>MD5Transform ByteBuffer<br/>lngRem = (InputLen) Mod 64<br/>For I = lngBufferRemaining To InputLen - II - lngRem Step 64<br/>For J = 0 To 63<br/>ByteBuffer(J) = InputBuffer(I + J)<br/>Next J<br/>MD5Transform ByteBuffer<br/>Next I<br/>lngBufferedBytes = 0<br/>Else<br/>I = 0<br/>End If<br/>For K = 0 To InputLen - I - 1<br/>ByteBuffer(lngBufferedBytes + K) = InputBuffer(I + K)<br/>Next K<br/>End Sub<br/>Private Sub MD5Transform(Buffer() As Byte)<br/>Dim X(16) As Long, A As Long, B As Long, C As Long, d As Long<br/><br/>A = State(1)<br/>B = State(2)<br/>C = State(3)<br/>d = State(4)<br/>Decode 64, X, Buffer<br/>FF A, B, C, d, X(0), S11, -680876936<br/>FF d, A, B, C, X(1), S12, -389564586<br/>FF C, d, A, B, X(2), S13, 606105819<br/>FF B, C, d, A, X(3), S14, -1044525330<br/>FF A, B, C, d, X(4), S11, -176418897<br/>FF d, A, B, C, X(5), S12, 1200080426<br/>FF C, d, A, B, X(6), S13, -1473231341<br/>FF B, C, d, A, X(7), S14, -45705983<br/>FF A, B, C, d, X(8), S11, 1770035416<br/>FF d, A, B, C, X(9), S12, -1958414417<br/>FF C, d, A, B, X(10), S13, -42063<br/>FF B, C, d, A, X(11), S14, -1990404162<br/>FF A, B, C, d, X(12), S11, 1804603682<br/>FF d, A, B, C, X(13), S12, -40341101<br/>FF C, d, A, B, X(14), S13, -1502002290<br/>FF B, C, d, A, X(15), S14, 1236535329<br/><br/>GG A, B, C, d, X(1), S21, -165796510<br/>GG d, A, B, C, X(6), S22, -1069501632<br/>GG C, d, A, B, X(11), S23, 643717713<br/>GG B, C, d, A, X(0), S24, -373897302<br/>GG A, B, C, d, X(5), S21, -701558691<br/>GG d, A, B, C, X(10), S22, 38016083<br/>GG C, d, A, B, X(15), S23, -660478335<br/>GG B, C, d, A, X(4), S24, -405537848<br/>GG A, B, C, d, X(9), S21, 568446438<br/>GG d, A, B, C, X(14), S22, -1019803690<br/>GG C, d, A, B, X(3), S23, -187363961<br/>GG B, C, d, A, X(8), S24, 1163531501<br/>GG A, B, C, d, X(13), S21, -1444681467<br/>GG d, A, B, C, X(2), S22, -51403784<br/>GG C, d, A, B, X(7), S23, 1735328473<br/>GG B, C, d, A, X(12), S24, -1926607734<br/><br/>HH A, B, C, d, X(5), S31, -378558<br/>HH d, A, B, C, X(8), S32, -2022574463<br/>HH C, d, A, B, X(11), S33, 1839030562<br/>HH B, C, d, A, X(14), S34, -35309556<br/>HH A, B, C, d, X(1), S31, -1530992060<br/>HH d, A, B, C, X(4), S32, 1272893353<br/>HH C, d, A, B, X(7), S33, -155497632<br/>HH B, C, d, A, X(10), S34, -1094730640<br/>HH A, B, C, d, X(13), S31, 681279174<br/>HH d, A, B, C, X(0), S32, -358537222<br/>HH C, d, A, B, X(3), S33, -722521979<br/>HH B, C, d, A, X(6), S34, 76029189<br/>HH A, B, C, d, X(9), S31, -640364487<br/>HH d, A, B, C, X(12), S32, -421815835<br/>HH C, d, A, B, X(15), S33, 530742520<br/>HH B, C, d, A, X(2), S34, -995338651<br/><br/>II A, B, C, d, X(0), S41, -198630844<br/>II d, A, B, C, X(7), S42, 1126891415<br/>II C, d, A, B, X(14), S43, -1416354905<br/>II B, C, d, A, X(5), S44, -57434055<br/>II A, B, C, d, X(12), S41, 1700485571<br/>II d, A, B, C, X(3), S42, -1894986606<br/>II C, d, A, B, X(10), S43, -1051523<br/>II B, C, d, A, X(1), S44, -2054922799<br/>II A, B, C, d, X(8), S41, 1873313359<br/>II d, A, B, C, X(15), S42, -30611744<br/>II C, d, A, B, X(6), S43, -1560198380<br/>II B, C, d, A, X(13), S44, 1309151649<br/>II A, B, C, d, X(4), S41, -145523070<br/>II d, A, B, C, X(11), S42, -1120210379<br/>II C, d, A, B, X(2), S43, 718787259<br/>II B, C, d, A, X(9), S44, -343485551<br/><br/>State(1) = LongOverflowAdd(State(1), A)<br/>State(2) = LongOverflowAdd(State(2), B)<br/>State(3) = LongOverflowAdd(State(3), C)<br/>State(4) = LongOverflowAdd(State(4), d)<br/>End Sub<br/><br/>Private Sub Decode(Length As Integer, OutputBuffer() As Long, InputBuffer() As Byte)<br/>Dim intDblIndex As Integer, intByteIndex As Integer, dblSum As Double<br/>For intByteIndex = 0 To Length - 1 Step 4<br/>dblSum = InputBuffer(intByteIndex) + InputBuffer(intByteIndex + 1) * 256# + InputBuffer(intByteIndex + 2) * 65536# + InputBuffer(intByteIndex + 3) * 16777216#<br/>OutputBuffer(intDblIndex) = UnsignedToLong(dblSum)<br/>intDblIndex = intDblIndex + 1<br/>Next intByteIndex<br/>End Sub<br/>Private Function FF(A As Long, B As Long, C As Long, d As Long, X As Long, S As Long, ac As Long) As Long<br/>A = LongOverflowAdd4(A, (B And C) Or (Not (B) And d), X, ac)<br/>A = LongLeftRotate(A, S)<br/>A = LongOverflowAdd(A, B)<br/>End Function<br/>Private Function GG(A As Long, B As Long, C As Long, d As Long, X As Long, S As Long, ac As Long) As Long<br/>A = LongOverflowAdd4(A, (B And d) Or (C And Not (d)), X, ac)<br/>A = LongLeftRotate(A, S)<br/>A = LongOverflowAdd(A, B)<br/>End Function<br/>Private Function HH(A As Long, B As Long, C As Long, d As Long, X As Long, S As Long, ac As Long) As Long<br/>A = LongOverflowAdd4(A, B Xor C Xor d, X, ac)<br/>A = LongLeftRotate(A, S)<br/>A = LongOverflowAdd(A, B)<br/>End Function<br/>Private Function II(A As Long, B As Long, C As Long, d As Long, X As Long, S As Long, ac As Long) As Long<br/>A = LongOverflowAdd4(A, C Xor (B Or Not (d)), X, ac)<br/>A = LongLeftRotate(A, S)<br/>A = LongOverflowAdd(A, B)<br/>End Function<br/><br/>Function LongLeftRotate(value As Long, Bits As Long) As Long<br/>Dim lngSign As Long, lngI As Long<br/>Bits = Bits Mod 32<br/>If Bits = 0 Then LongLeftRotate = value: Exit Function<br/>For lngI = 1 To Bits<br/>lngSign = value And &amp;HC0000000<br/>value = (value And &amp;H3FFFFFFF) * 2<br/>value = value Or ((lngSign &lt; 0) And 1) Or (CBool(lngSign And &amp;H40000000) And &amp;H80000000)<br/>Next<br/>LongLeftRotate = value<br/>End Function<br/>Private Function LongOverflowAdd(Val1 As Long, Val2 As Long) As Long<br/>Dim lngHighWord As Long, lngLowWord As Long, lngOverflow As Long<br/>lngLowWord = (Val1 And &amp;HFFFF&amp;) + (Val2 And &amp;HFFFF&amp;)<br/>lngOverflow = lngLowWord &#92; 65536<br/>lngHighWord = (((Val1 And &amp;HFFFF0000) &#92; 65536) + ((Val2 And &amp;HFFFF0000) &#92; 65536) + lngOverflow) And &amp;HFFFF&amp;<br/>LongOverflowAdd = UnsignedToLong((lngHighWord * 65536#) + (lngLowWord And &amp;HFFFF&amp;))<br/>End Function<br/>Private Function LongOverflowAdd4(Val1 As Long, Val2 As Long, val3 As Long, val4 As Long) As Long<br/>Dim lngHighWord As Long, lngLowWord As Long, lngOverflow As Long<br/>lngLowWord = (Val1 And &amp;HFFFF&amp;) + (Val2 And &amp;HFFFF&amp;) + (val3 And &amp;HFFFF&amp;) + (val4 And &amp;HFFFF&amp;)<br/>lngOverflow = lngLowWord &#92; 65536<br/>lngHighWord = (((Val1 And &amp;HFFFF0000) &#92; 65536) + ((Val2 And &amp;HFFFF0000) &#92; 65536) + ((val3 And &amp;HFFFF0000) &#92; 65536) + ((val4 And &amp;HFFFF0000) &#92; 65536) + lngOverflow) And &amp;HFFFF&amp;<br/>LongOverflowAdd4 = UnsignedToLong((lngHighWord * 65536#) + (lngLowWord And &amp;HFFFF&amp;))<br/>End Function<br/><br/>Private Function UnsignedToLong(value As Double) As Long<br/>If value &lt; 0 Or value &gt;= OFFSET_4 Then Error 6<br/>If value &lt;= MAXINT_4 Then UnsignedToLong = value Else UnsignedToLong = value - OFFSET_4<br/>End Function<br/>Private Function LongToUnsigned(value As Long) As Double<br/>If value &lt; 0 Then LongToUnsigned = value + OFFSET_4 Else LongToUnsigned = value<br/>End Function</div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>程序的XP化已经不是一个新话题了，使用图片或ActiveX控件的比比皆是，但这样的XP化并不是真正的，只是模仿了XP的外观。使用. manifest文件倒是真的，不过在exe文件之外还要有一个.manifest文件，也不太方便，尤其是在做只有一个exe文件的小工具时。那么，能不能把.manifest文件整合到exe里面呢，经过测试，我终于发现了方法。<br/>　　注意：有程序员用了本方法后反应没有效果，再此特别申明，这是真正的XP样式，使用的资源也是XP系统里的，所以要看到效果，必须是在XP系统，并使用XP风格样式时才行，Win2000的就不要试了，在系统不是XP外观时，用此方法生成的程序也不会有XP样式。另外，在VB IDE里面也不会有效果，需要编译为.exe文件。<br/>　　下面我们来具体看一下实现的方法。请先下载本文附件的"XPStyle.res"文件，正常编辑程序界面后（如图），在工程资源管理器窗口的空白区域点鼠标右键，选择“添加”->“添加文件”，选择本文附件中的"XPStyle.res"，具体过程请参考附图。第二步，在程序中声明API函数 InitCommonControls，声明语句为Private Declare Sub InitCommonControls Lib "comctl32.dll" ()，在启动窗口的Initialize事件中调用此函数。注意，是Initialize事件，如果在Load事件中调用此函数将造成窗口不能被正确加载。现在将其编译为.exe文件就可以看到效果了。<br/>　　这样实现的XP样式还有一个问题，就是如果把控件放在Frame控件里，将不能正常显示，尤其是OptionButton，将完全变成黑色。解决起来其实也不难，就是不要把控件做为Frame的子窗口，如果必须要这样做，可以在Frame里再添加一个PictureBox，将控件做为 PictureBox的子窗口。<br/><br/>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代码<br/>_______________________________________________________________<br/><br/>Private Declare Sub InitCommonControls Lib "comctl32.dll" ()<br/><br/>Private Sub Form_Initialize()<br/>&nbsp;&nbsp;&nbsp;&nbsp;InitCommonControls<br/>End Sub
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] VB-XP]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>