<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>鬼の领地 &#187; VB</title>
	<atom:link href="http://blog.upsuper.org/tag/vb/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.upsuper.org</link>
	<description>the place where there are some ghost appearing...</description>
	<lastBuildDate>Thu, 17 Jun 2010 08:12:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>真彩色展示</title>
		<link>http://blog.upsuper.org/show-true-color/</link>
		<comments>http://blog.upsuper.org/show-true-color/#comments</comments>
		<pubDate>Fri, 15 Feb 2008 01:21:34 +0000</pubDate>
		<dc:creator>upsuper</dc:creator>
				<category><![CDATA[小程序]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[色彩]]></category>

		<guid isPermaLink="false">http://blog.upsuper.org/?p=7</guid>
		<description><![CDATA[比较无聊的我用VB写了一个能生成所有24位真彩色的程序，可以循环播放真彩色。在这个程序中，你开始会觉得看不出来有变化，不知不觉间就完全变掉了。每轮一共512桢，每桢256*256，向右绿色增加，向下蓝色增加，播放为红色的变化。
如果感兴趣可以在这里下载：allTrueColor.exe (28KB)
Windows 9x需要有VB6运行库支持。另外运行本程序可能导致CPU占用率极高（我用双核，其中一个核可以达到100%）。这个程序的变化速度取决于电脑的运行速度，但通常是比较快速的，这完全得益于使用Windows API代替VB自带的函数带来的效率。

下面是源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Option Explicit
Dim isBegin As Boolean, isAdd As Boolean
Dim i As Integer, j As Integer, k As Integer
Private Declare Function SetPixel Lib &#34;gdi32&#34; _
    (ByVal hdc As Long, _
    ByVal x As Long, ByVal y As Long, _
    ByVal crColor As Long) As Long
&#160;
Private [...]]]></description>
			<content:encoded><![CDATA[<p>比较无聊的我用VB写了一个能生成所有24位真彩色的程序，可以循环播放真彩色。在这个程序中，你开始会觉得看不出来有变化，不知不觉间就完全变掉了。每轮一共512桢，每桢256*256，向右绿色增加，向下蓝色增加，播放为红色的变化。</p>
<p>如果感兴趣可以在这里下载：<a href="http://down.upsuper.org/allTrueColor.exe">allTrueColor.exe</a> (28KB)</p>
<p>Windows 9x需要有VB6运行库支持。另外运行本程序可能导致CPU占用率极高（我用双核，其中一个核可以达到100%）。这个程序的变化速度取决于电脑的运行速度，但通常是比较快速的，这完全得益于使用Windows API代替VB自带的函数带来的效率。</p>
<p><span id="more-7"></span></p>
<p>下面是源代码</p>

<div class="wp_codebox"><table><tr id="p72"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
</pre></td><td class="code" id="p7code2"><pre class="vb" style="font-family:monospace;"><span style="color: #000080;">Option</span> <span style="color: #000080;">Explicit</span>
<span style="color: #000080;">Dim</span> isBegin <span style="color: #000080;">As</span> <span style="color: #000080;">Boolean</span>, isAdd <span style="color: #000080;">As</span> <span style="color: #000080;">Boolean</span>
<span style="color: #000080;">Dim</span> i <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>, j <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>, k <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>
<span style="color: #000080;">Private</span> <span style="color: #000080;">Declare</span> <span style="color: #000080;">Function</span> SetPixel <span style="color: #000080;">Lib</span> <span style="color: #800000;">&quot;gdi32&quot;</span> _
    (<span style="color: #000080;">ByVal</span> hdc <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, _
    <span style="color: #000080;">ByVal</span> x <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, <span style="color: #000080;">ByVal</span> y <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>, _
    <span style="color: #000080;">ByVal</span> crColor <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>) <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>
&nbsp;
<span style="color: #000080;">Private</span> <span style="color: #000080;">Sub</span> cmdStart_Click()
    <span style="color: #000080;">Dim</span> hdc <span style="color: #000080;">As</span> <span style="color: #000080;">Long</span>
    hdc = pic.hdc
    isBegin = <span style="color: #000080;">True</span>
    <span style="color: #000080;">Do</span>
        <span style="color: #000080;">For</span> j = 0 <span style="color: #000080;">To</span> 255
            <span style="color: #000080;">For</span> k = 0 <span style="color: #000080;">To</span> 255
                SetPixel hdc, j, k, RGB(i, j, k)
            <span style="color: #000080;">Next</span> k
            DoEvents
        <span style="color: #000080;">Next</span> j
        <span style="color: #000080;">If</span> <span style="color: #000080;">Not</span> isBegin <span style="color: #000080;">Then</span> <span style="color: #000080;">Exit</span> <span style="color: #000080;">Sub</span>
        <span style="color: #008000;">'SavePicture pic.Image, _
            'App.Path &amp; &quot;\&quot; &amp; CStr(i) &amp; &quot;.bmp&quot;
</span>        pic.Refresh
        DoEvents
        <span style="color: #000080;">If</span> isAdd <span style="color: #000080;">Then</span>
            i = i + 1
            <span style="color: #000080;">If</span> i = 255 <span style="color: #000080;">Then</span> isAdd = <span style="color: #000080;">False</span>
        <span style="color: #000080;">Else</span>
            i = i - 1
            <span style="color: #000080;">If</span> i = 0 <span style="color: #000080;">Then</span> isAdd = <span style="color: #000080;">True</span>
        <span style="color: #000080;">End</span> <span style="color: #000080;">If</span>
    <span style="color: #000080;">Loop</span>
<span style="color: #000080;">End</span> <span style="color: #000080;">Sub</span>
&nbsp;
<span style="color: #000080;">Private</span> <span style="color: #000080;">Sub</span> cmdStop_Click()
    isBegin = <span style="color: #000080;">False</span>
<span style="color: #000080;">End</span> <span style="color: #000080;">Sub</span>
&nbsp;
<span style="color: #000080;">Private</span> <span style="color: #000080;">Sub</span> Form_Load()
    isAdd = <span style="color: #000080;">True</span>
<span style="color: #000080;">End</span> <span style="color: #000080;">Sub</span></pre></td></tr></table></div>

<p>整个窗体只有3个控件：一个PictureBox控件pic，长宽256px，记得要把ScaleMode设为Pixel；剩下的就是两个按钮cmdStart和cmdStop了</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.upsuper.org/show-true-color/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LRC歌词展开</title>
		<link>http://blog.upsuper.org/lrc-lyric-file-expand/</link>
		<comments>http://blog.upsuper.org/lrc-lyric-file-expand/#comments</comments>
		<pubDate>Fri, 08 Jul 2005 05:07:20 +0000</pubDate>
		<dc:creator>upsuper</dc:creator>
				<category><![CDATA[雕虫小技]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[音乐]]></category>

		<guid isPermaLink="false">http://blog.upsuper.org/?p=32</guid>
		<description><![CDATA[LRC大家都知道吧（不知道？就是那个带时间标签的文本歌词格式嘛~），很好用的东东~所以最近很多MP3Player也开始支持它了。我手上就有一个联想F520的MP3支持，不过有点小麻烦，这个MP3只支持一行一个时间标签，但是笔者手头上的LRC一行都有好些时间标签，像这样，MP3就会把后面的时间标签全部显示出来（晕~）
看来只能修改修改了~既然我们没办法修改MP3的固件，那就在LRC上动手脚吧~把他展开为每行一个时间标签不就得了~说干就干！

不过我懒得再作界面，所以直接从命令行参数中获取，此外这个纠错机制不是很完善（毕竟才一个过程），大家也可以帮忙修改~
代码如下：

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Sub Main()
    Dim sCommand() As String
    Dim bTmp       As Byte
    Dim sTmp       As String
    Dim cFile      As Collection
    Dim iNum    [...]]]></description>
			<content:encoded><![CDATA[<p>LRC大家都知道吧（不知道？就是那个带时间标签的文本歌词格式嘛~），很好用的东东~所以最近很多MP3Player也开始支持它了。我手上就有一个联想F520的MP3支持，不过有点小麻烦，这个MP3只支持一行一个时间标签，但是笔者手头上的LRC一行都有好些时间标签，像这样，MP3就会把后面的时间标签全部显示出来（晕~）</p>
<p>看来只能修改修改了~既然我们没办法修改MP3的固件，那就在LRC上动手脚吧~把他展开为每行一个时间标签不就得了~说干就干！</p>
<p><span id="more-32"></span></p>
<p>不过我懒得再作界面，所以直接从命令行参数中获取，此外这个纠错机制不是很完善（毕竟才一个过程），大家也可以帮忙修改~</p>
<p>代码如下：</p>

<div class="wp_codebox"><table><tr id="p324"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
</pre></td><td class="code" id="p32code4"><pre class="vb" style="font-family:monospace;"><span style="color: #000080;">Sub</span> Main()
    <span style="color: #000080;">Dim</span> sCommand() <span style="color: #000080;">As</span> <span style="color: #000080;">String</span>
    <span style="color: #000080;">Dim</span> bTmp       <span style="color: #000080;">As</span> <span style="color: #000080;">Byte</span>
    <span style="color: #000080;">Dim</span> sTmp       <span style="color: #000080;">As</span> <span style="color: #000080;">String</span>
    <span style="color: #000080;">Dim</span> cFile      <span style="color: #000080;">As</span> <span style="color: #000080;">Collection</span>
    <span style="color: #000080;">Dim</span> iNum       <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>
    <span style="color: #000080;">Dim</span> sTmp2      <span style="color: #000080;">As</span> <span style="color: #000080;">String</span>
    <span style="color: #000080;">Dim</span> i          <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>
    <span style="color: #000080;">Dim</span> j          <span style="color: #000080;">As</span> <span style="color: #000080;">Integer</span>
    <span style="color: #000080;">Dim</span> sTmp3      <span style="color: #000080;">As</span> <span style="color: #000080;">String</span>
    <span style="color: #000080;">Dim</span> bIsAdd     <span style="color: #000080;">As</span> <span style="color: #000080;">Boolean</span>
    <span style="color: #000080;">Set</span> cFile = <span style="color: #000080;">New</span> <span style="color: #000080;">Collection</span>
    sCommand = Split(Command, <span style="color: #800000;">&quot;*&quot;</span>) <span style="color: #008000;">'用*作分隔符，很简单，文件名不能带*，用?也可以
</span>    <span style="color: #000080;">Open</span> sCommand(0) <span style="color: #000080;">For</span> <span style="color: #000080;">Input</span> <span style="color: #000080;">As</span> #1
    <span style="color: #000080;">Do</span> <span style="color: #000080;">Until</span> EOF(1)
        <span style="color: #000080;">Input</span> #1, sTmp
        iNum = 0
        <span style="color: #000080;">Do</span> <span style="color: #000080;">While</span> ((Mid(sTmp, iNum * 9 + 1, 1) = <span style="color: #800000;">&quot;[&quot;</span>) <span style="color: #000080;">And</span> (Mid(sTmp, (iNum + 1) * 9, 1) = <span style="color: #800000;">&quot;]&quot;</span>))
            iNum = iNum + 1
        <span style="color: #000080;">Loop</span>
        sTmp2 = Right(sTmp, Len(sTmp) - 9 * iNum)
        <span style="color: #000080;">For</span> i = 0 <span style="color: #000080;">To</span> iNum - 1
            sTmp3 = Mid(sTmp, i * 9 + 2, 7)
            <span style="color: #000080;">If</span> cFile.Count = 0 <span style="color: #000080;">Then</span>
                cFile.Add <span style="color: #800000;">&quot;[&quot;</span> &amp; sTmp3 &amp; <span style="color: #800000;">&quot;]&quot;</span> &amp; sTmp2
            <span style="color: #000080;">Else</span>
                bIsAdd = <span style="color: #000080;">False</span>
                <span style="color: #000080;">For</span> j = 1 <span style="color: #000080;">To</span> cFile.Count
                    <span style="color: #000080;">If</span> Mid(cFile(j), 2, 7) &gt; Mid(sTmp, i * 9 + 2, 7) <span style="color: #000080;">Then</span>
                        cFile.Add <span style="color: #800000;">&quot;[&quot;</span> &amp; sTmp3 &amp; <span style="color: #800000;">&quot;]&quot;</span> &amp; sTmp2, , j
                        bIsAdd = <span style="color: #000080;">True</span>
                        <span style="color: #000080;">Exit</span> <span style="color: #000080;">For</span>
                    <span style="color: #000080;">End</span> <span style="color: #000080;">If</span>
                <span style="color: #000080;">Next</span> j
                <span style="color: #000080;">If</span> <span style="color: #000080;">Not</span> bIsAdd <span style="color: #000080;">Then</span> cFile.Add <span style="color: #800000;">&quot;[&quot;</span> &amp; sTmp3 &amp; <span style="color: #800000;">&quot;]&quot;</span> &amp; sTmp2
            <span style="color: #000080;">End</span> <span style="color: #000080;">If</span>
        <span style="color: #000080;">Next</span> i
    <span style="color: #000080;">Loop</span>
    <span style="color: #000080;">Close</span> #1
    <span style="color: #000080;">Open</span> sCommand(1) <span style="color: #000080;">For</span> <span style="color: #000080;">Output</span> <span style="color: #000080;">As</span> #1
    <span style="color: #000080;">For</span> i = 1 <span style="color: #000080;">To</span> cFile.Count
        <span style="color: #000080;">Print</span> #1, cFile(i)
    <span style="color: #000080;">Next</span> i
    <span style="color: #000080;">Close</span> #1
<span style="color: #000080;">End</span> <span style="color: #000080;">Sub</span></pre></td></tr></table></div>

<p>大家应该还能看的懂吧~这个经过试验还是不错的~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.upsuper.org/lrc-lyric-file-expand/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>调试不要热键</title>
		<link>http://blog.upsuper.org/debug-need-no-hotkey/</link>
		<comments>http://blog.upsuper.org/debug-need-no-hotkey/#comments</comments>
		<pubDate>Thu, 07 Jul 2005 09:39:31 +0000</pubDate>
		<dc:creator>upsuper</dc:creator>
				<category><![CDATA[雕虫小技]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[快捷键]]></category>

		<guid isPermaLink="false">http://blog.upsuper.org/?p=82</guid>
		<description><![CDATA[很多人写软件的时候，希望做一些热键方便用户，这样的文章在网上不少见了~不过真正开始写热键的时候，就知道了，调试它是多么可怕~
当正在调试的程序里面有全局热键时，一但点击停止，马上VB关闭~这个分析起来是由于整个VB的消息全部先通过程序中的处理函数，程序一结束，处理函数没了，VB也活不了了~
因此，知道热键正常了，就应该及时屏蔽，免得老麻烦鼠标去开VB~
屏蔽方法非常简单，只要将那句SetWindowLong的注释掉就可以了~这样不要每次麻烦的按程序关了，只要■一下就行了~
]]></description>
			<content:encoded><![CDATA[<p>很多人写软件的时候，希望做一些热键方便用户，这样的文章在网上不少见了~不过真正开始写热键的时候，就知道了，调试它是多么可怕~</p>
<p>当正在调试的程序里面有全局热键时，一但点击停止，马上VB关闭~这个分析起来是由于整个VB的消息全部先通过程序中的处理函数，程序一结束，处理函数没了，VB也活不了了~</p>
<p>因此，知道热键正常了，就应该及时屏蔽，免得老麻烦鼠标去开VB~</p>
<p>屏蔽方法非常简单，只要将那句SetWindowLong的注释掉就可以了~这样不要每次麻烦的按程序关了，只要■一下就行了~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.upsuper.org/debug-need-no-hotkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“热键”让我一身冷汗</title>
		<link>http://blog.upsuper.org/hotkey-let-me-a-cold-sweat/</link>
		<comments>http://blog.upsuper.org/hotkey-let-me-a-cold-sweat/#comments</comments>
		<pubDate>Thu, 07 Jul 2005 04:05:50 +0000</pubDate>
		<dc:creator>upsuper</dc:creator>
				<category><![CDATA[琐事杂谈]]></category>
		<category><![CDATA[VB]]></category>
		<category><![CDATA[快捷键]]></category>

		<guid isPermaLink="false">http://blog.upsuper.org/?p=81</guid>
		<description><![CDATA[这次我的新程序中我准备使用热键。这可又是一个挑战了。以前的热键多是特定的功能特定的热键，最多允许修改特定功能的热键。我这个可不同了，我又多个同类窗体，每个窗体还有可能又由用户定义多个热键，这好像以前没什么人试过，也是一种挑战~我就喜欢挑战！
虽说我喜欢挑战，但这次的挑战的确太大了~网上既然找不到相关文献资料，就自己做呗~
首先，由于每个同类窗体都要许多热键，因此决定再建一个类，每个窗体绑定一个类（现在回想，真是个好办法耶），然后再为窗体创建热键~不过问题来了，绑定窗体时，消息要传输到一个公用函数（汗！不能传递到窗体类里的函数），这就麻烦了~
不管它~传递出去就出去~为每个热键配一个ID不就得了，到了响应函数，再回头找ID对应的事情干咯~
我在前面也说到了，这个程序有使用数据库，这里也不例外~不过在调试的关键时刻，出错（晕~），然后点“调试”，没用（更晕~）按Ctrl+Pause Break，VB被关闭（昏迷不醒~），再看看热键实例，发现了问题之所在呀，在没有指定热键的情况下，没将消息处理权还回去（汗~），结果就发生了这等怪事~
说道数据库，出错的就是它，但是由于错误代码在消息处理函数内部，不能重复运行（郁闷~），结果我一点结束调试，VB又被关闭（差点就让人抬医院了~）
热键热键，真是害人那~
热键，让我一身冷汗~
]]></description>
			<content:encoded><![CDATA[<p>这次我的新程序中我准备使用热键。这可又是一个挑战了。以前的热键多是特定的功能特定的热键，最多允许修改特定功能的热键。我这个可不同了，我又多个同类窗体，每个窗体还有可能又由用户定义多个热键，这好像以前没什么人试过，也是一种挑战~我就喜欢挑战！</p>
<p>虽说我喜欢挑战，但这次的挑战的确太大了~网上既然找不到相关文献资料，就自己做呗~</p>
<p>首先，由于每个同类窗体都要许多热键，因此决定再建一个类，每个窗体绑定一个类（现在回想，真是个好办法耶），然后再为窗体创建热键~不过问题来了，绑定窗体时，消息要传输到一个公用函数（汗！不能传递到窗体类里的函数），这就麻烦了~</p>
<p>不管它~传递出去就出去~为每个热键配一个ID不就得了，到了响应函数，再回头找ID对应的事情干咯~</p>
<p>我在前面也说到了，这个程序有使用数据库，这里也不例外~不过在调试的关键时刻，出错（晕~），然后点“调试”，没用（更晕~）按Ctrl+Pause Break，VB被关闭（昏迷不醒~），再看看热键实例，发现了问题之所在呀，在没有指定热键的情况下，没将消息处理权还回去（汗~），结果就发生了这等怪事~</p>
<p>说道数据库，出错的就是它，但是由于错误代码在消息处理函数内部，不能重复运行（郁闷~），结果我一点结束调试，VB又被关闭（差点就让人抬医院了~）</p>
<p>热键热键，真是害人那~</p>
<p>热键，让我一身冷汗~</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.upsuper.org/hotkey-let-me-a-cold-sweat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
