原创 大數階乘的計算(四)

看了northwolves 的文章大數階乘的計算(三) http://dev.csdn.net/article/28/28432.shtm 很有啓發,聯想起以前自己編寫過一個類似的函數,方法與其差不多,都是動態數組的增位保存方式。效率上比

原创 大數階乘的計算(五)

對計算(四)我總覺得沒有發揮Long類型的最大潛力,一定是我的算法還有改進餘地。經進一步推敲,終於又有了突破,速度一下子又提高 4 倍!同一臺機器上10000!用時9.8秒,而且大膽的算了一次20000!,啊,43秒搞定。現將代碼貼出,供

原创 ToolBar的模樣自己畫(二)

進入正題了,下面就該是類中的代碼了,因爲主要是利用API,所以聲明很多,耐心點吧!'類模塊中的代碼:類名cToolbarOption ExplicitPrivate Const CDDS_ITEM As Long = &H10000Pri

原创 AutoRedraw屬性爲True時VB都做了什麼?

AutoRedraw是VB特有的,大多數程序建立雙緩衝是沒有VB這麼方便的,都需自己定義一個內存DC,這個DC,一般來說,只有程序內部知道,別的程序不太可能取得並改寫它。AutoRedraw屬性爲True時,就建立了常說的雙緩衝,擁有前臺

原创 任意指定透明色的繪圖方法

透明位圖繪製方法在網上見得很多,多數是採用事先做好一個Mask圖,這方法優點是速度快,但就是太麻煩,靈活性差。任意指定透明色,當然經常也要用到,爲此,API提供了一個函數TransparentBlt,可這個函數,非常讓人遺憾,VB的API

原创 可以代替窗體Refresh方法的函數

VB中打開AutoRedraw可方便的建立雙緩衝,利用API在後臺繪圖,最後一次性整體更新到前臺,實現穩定無閃爍的動畫效果,一般情況下,VB會自動進行後臺到前臺的刷新,這主要有兩種情況:1、收到WM_PAIT消息2、代碼調用Refresh

原创 一種簡單而快速的灰度圖處理法

因自己的程序中需對一個窗體區域頻繁進行彩色轉灰度處理,爲此專門寫了個函數。處理對象是一塊經常變化的動態區域,且是一系列繪圖中的一部分,速度要求較高,算法上力求簡單,所以採用以下兩步方案:1、基於DDB來寫,雖然轉入DIB,可不必面對各種色

原创 一個優化後的壓縮算法(下)

'類中壓縮與解壓算法Private Sub Compress()    Dim lngTemp As Long, intCount As Integer    Dim intBufferLocation As Integer    Dim

原创 無外部控件製作多媒體播放器(四)

音樂文件列表也是個不容忽視的問題,自己定個格式當然可以,但好在大家熟悉的M3U格式並不複雜,MediaPlayer或WinAmp都支持它,通用性也好,比起wpl要簡易得多,所以我就來介紹一下M3U格式文件的製作與讀寫M3U是文本文件,以#

原创 中心漸變的快速填充函數

XP爲我們開創了程序界面革命的新時代,它的界面最核心的特點之一就是“漸變”。在追求個性化亮麗界面的今天,到處可見漂亮的VB界面源碼,可惜它們都還在用圖片,或描點描線來生成窗體及控件。要知道,GradientFill函數正是MS爲我們準備的

原创 多功能文本輸出函數

這是一個我自己編寫的多功能文本輸出函數,可提供Print語句需配合定位、字體等屬性才能實現的功能;還可提供自動換行、字體旋轉、無效文本等功能。 Public Enum DrawTextAlign    DT_LEFT = &H0&   

原创 無外部控件製作多媒體播放器(三)

ASF全名爲高級系統格式,是MS大力推寵的一種媒體格式,並已得到廣泛支持。其最主要的分支就是用於音頻的WMA與視頻的WMV,當然還有ASF自身。在下面地址可下載到ASF格式的說明文檔:http://www.microsoft.com/wi

原创 無外部控件製作多媒體播放器(二)

本來想寫點進度控制與音量調整的代碼的,後來發現還是太簡單了,就是幾個MCI命令,來回搬弄,自己都沒興趣寫下去。所以我想還是寫些獨門一點的:音樂信息的讀取!目前常見的主流音樂格式就兩種,MP3與WMA,它們都有在文件中保存音樂信息的特定格式

原创 ToolBar的模樣自己畫(四)

'幾個GDI繪圖函數功能的封裝,有一定通用性,有些是我平時自己就喜歡用的模塊。Private Function NewMyHdc(dHdc As Long, w As Long, h As Long, Optional Bm As Lon

原创 UDT長度的含義是什麼?

UDT的長度有兩種,一種是寫入文件時的長度,一種是實際在內存中的長度。二者肯定是不一樣的!對於定長UDT,一般都是需要其寫入文件時的長度。若所有UDT都是定長的,可用len直接得出,若包含變長內容,如你的xx() as xxx動態數組,或