在做效能分析時,最好的方式應是從演算法著手。若演算法都大同小異,接著還要強迫效能提昇,有人建議看 machine code,但不會看 machine code 的話,也只能從實際的測時著手,故計時器在此便顯得重要,本篇文章便提出一些計時的方法與說明。
1. time :
在做效能分析時,最好的方式應是從演算法著手。若演算法都大同小異,接著還要強迫效能提昇,有人建議看 machine code,但不會看 machine code 的話,也只能從實際的測時著手,故計時器在此便顯得重要,本篇文章便提出一些計時的方法與說明。
1. time :
這是初步,主要展示取得一個 window handle 後,將其 window 存成 bmp 圖檔。至於要存哪個 window,
可再用 FindWindow 與 FindWindowEx 繼續找下去
第二個問題
假設 1a+2b+3c+4d+5e+6f >=10 且 2a+3b+4c+5d+6e+7f <= 21,其中 a,b,c,d,e,f 都是大於等於 0 的整數,要求符合條件的 abcdef,這裡主要的問題是第一個限制式,因為它是愈加愈大,所以如果用它拿來當主判斷的話會遺失很多可用資訊。這裡用第二式為主判斷,判斷成功後再去判斷第一式合不合條件,原始碼如下
取得包含 E2 儲存格之整塊範圍, 空白將不計
' MsgBox Range("E2").CurrentRegion.Address ' $D$2:$H$4
' 將 B2:F5 此範圍定義一個名字叫 "DataRange"
Dim myRgn As Range
' Select B5:F5 Sub SelectRange() ' 以 Range 選取 B5:F5 Range("B5:F5").Select Range(Range("B5", "F5")).Select ' 加入 Cell Range(Cells(5, 2), Cells(5, 6)).Select ' 選擇特定紀錄,應��欄位數改變 Range(Range("B5"), Range("B5").End(xlToRight)).Select ' 相當選擇 "B5" 後,再按下 Ctrl + → 取得最右邊儲��格 ' 相關參數: xlToRight, xlToLeft, xlToUp, xlToDown End Sub
SetTimer 在 Win32 程式設計是很常用到的一個技巧,但過程要一點觀念,所以這裡先說整個流程,一共會介紹三個 API,這裡先概述。
一開始先用 SetTimer 進行定時執行之動作,這裡包含了 "設定多久執行" 和 "執行什麼函式";
這篇文章有點長,步驟有點煩雜,覺得累的話請先喝杯水再來。
在 C/C++ 裡面,有些函式提供了很人性化的介面機制,叫 function pointer - 函式指標,只要在 MSDN 上原型裡面,參數看到是 PROC 結尾的,幾乎都是函式指標。只要是在 API 裡面出現的函式指標,那跟 struct 沒什麼二樣,有一定的函式規格,還要再去查這個函式指標的原型長怎樣。
Win32 API 裡面定義了許多結構體,像是為了表達座標,於是定義了一個結構體叫 POINT。假設我們要調用 Win32 API 的 GetCursorPos - 取得現在 mouse 座標的函式,先看一下函式原型
BOOL WINAPI GetCursorPos(
------------------------------------------------------------------
// 1. 結構體介紹