C/C++相關文章

出自GaryLee
跳轉到: 導覽, 搜尋
計算整數平方根的小程式
參考網路上的程式修改而來可以簡單計算整數的平方根的程式碼。計算結果也是整數,適用於fixed-point計算,或是不需要很準確的場合。
簡單計算兩個整數相加是否會overflow
這是一個從Python source code內看來判斷兩個整數相加是否會overflow的方法。很精練的c程式。
取得目前的工作視窗的執行檔名及版本
簡單的工作但是花了不少時間在網路上面查了很多資料,希望可以幫有相同需要的人省點時間。
一個小程式展示類似小畫家的Drawing功能
這是一個非常小的程式,以BCB寫成。主要展示如何使用TPaintBox, TBitmap及TCanvas來做Drawing的動作。
在Microsoft VC8寫的程式找不到的DLL問題
如果你有在新版的Visual Studio開發程式,卻發現自己的程式執行時找不到DLL時,看看這篇吧
在BCB中的多國語言程式製作
說明在BCB中如何撰寫多國語言程式。
一個計算Form上有多少相同類別的範例
常有人問要怎麼知道Form上面所有相同類別元件的個數,或是取得他們。希望下面這個範例對於有類似的問題的人有所幫助。
控制其他視窗的位置及大小
看過不少人在網路上面問要如何控制別的程式視窗的大小及位置。其實,很簡單!只要取得該視窗的Window Handle然後透過Windows API中的MoveWindow()即可做到。
在BCB下判斷目前Win32作業系統是哪種?
Win32Platfrom是一個global變數,在建立一般的BCB程式時都會有這個變數,透過這個變數就可以得知目前所使用的Win作業系統是95或是NT。
如何用BCB偵測使用者切換
在Windows XP中,提供了一個切換使用者的功能,這個功能對於使用者來說是個很好用的功能。但是對於某些程式的設計者來說卻是一個惡夢。因為這個功能,產生一些不同與以往程式的行為。因此,如果能夠在自己的程式中設計一個機制來偵測是否目前的session已經被更動,就可以進一步的處理一些同步的問題了。
如何產生shared object(.so)檔案
如何產生shared object(.so)檔案?
在BCB中使用StringTable
通常寫軟體時,如果剛開始的時候沒有注意到將來要考慮i18n的問題時。到後面要補救就會變的工程浩大。不過,如果您的軟體是使用BCB Enterprise Edition所開發時,那麼這個步驟將會變得簡單一些。不過,前提是你必需使用Enterprise Edition才行。因為只有 ExterpriseEdition上面才有Translation Manager可用。
Windows下建立捷徑的的程式碼
在Windows平台下,要建立一個捷徑,可不如使用他這麼簡單。要透過Windows的COM物件去使用Shell的功能才有辦法做到。
使用auto_ptr解決memory leak的問題
auto_ptr是在C++的STL被引進的機制之一,釵hC++初學者對於這個機制的用法並不是很清楚,甚至對於為何要使用這樣一個機制也不瞭解。本文將對這個機制做一個說明。
BCB中的RTTI機制
RTTI在BCB中其實有兩個意義。首先,針對一般標準的C++中所定義的,RTTI是所謂的Run-Time Type Identification的縮寫。傳統的程式語言中,所謂的資料型態僅在Compile-Time有所作用。舉例而言,您宣告了一個變數a,並且指定其型態為整數。您如何在Run-Time期間知道他的型態是整數呢?很遺憾的是,在原來的C/C++中您是無法知道這樣的事情的。或陰z會問,這樣的資訊有何作用?若是您考慮物件的繼承關係,您就會發現其重要性了。
取得桌面的檔案管理員視窗
有些時候也許您會想要控制桌面(Desktop),有些比較熟Windows API的人,可能會馬上想到使用GetDesktopWindow()來取得桌面視窗。可是,這個函式所捉到的視窗其實不是真正的具有檔案管理員的視窗。因此,下面提供的兩個函式,可以讓您抓到真正具有檔案管理功能的視窗。
基本避免Memory Leak的技巧
很多程式初學者比較沒有在注意一些Memory處理上的問題。其實只要平時稍微注意一下,就可以避免掉很多問題,而且也可以讓你的程式更好以及更穩定。
在BCB中如何讓Main form在Startup時隱藏
在BCB中預設的狀況下,都一定會顯示主要的Form。不過,在某些應用之下我們會希望能夠一開始的時候就將所有的Form通通隱藏起來。若只是單單的將Form的Visible屬性設定為false是沒有用的。
解決PopupMenu在TTrayIcon上使用的問題
如果你有在BCB中使用TTrayIcon來製作TrayIcon的弁遄A你一定會覺得在BCB下面寫TrayIcon真是輕鬆又簡單。不過當你想再加上PopupMenu時,事情似乎就不是那麼盡如人意了。
包裝OutputDebugString()為printf()的樣式
下面的程式碼是將OutputDebugString()函式將以包裝後,使其具有類似於printf的變數功能,這在顯示除錯資訊時,是非常有用的。
BCB中將兩個時間相減求天數的方法
其實,在BCB中有一個非常好用的時間class,TDateTime。利用他我們不僅可以很容易的將字串形式的時間轉換成為可以計算的時間物件,也可以很輕易的求出兩個時間之間的差距。
BCB下的簡易萬用字元檢查
許多時候,我們會需要使用類似於命令列檔案名稱的萬用字元判斷。舉例來說,有時候需要檢查使用者輸入的檔案是否為".jpg"的檔案。
BCB中轉換螢幕座標到元件內部的座標
如果您曾經用過GetCursorPos()這個函式取得游標的位置。您或雪|為了如何將這個函式所取得的座標轉換成特定元件內部座標而煩惱吧。
BCB中製作靜態執行檔
所謂的靜態可執行檔就是一種不需要搭配其他的DLL就可以直接使用的執行檔。很多人常常在問,為何自己做出來的檔案在其他沒有安裝BCB的電腦就不能執行?主要的原因就是在於當你用BCB寫一個程式時,無論這個程式有多簡單。或多或少都會用到一些BCB所提供的動態程式庫。當把執行檔拿到一台沒有安裝 BCB的電腦時,因為沒有這些DLL,所以就沒有辦法執行了。
BCB移動及縮放沒有邊框的視窗
在BCB中,如果想要做出類似於3M-PostIt這樣的視窗,就要把Form->BorderStyle設定為bsNone。如此一來,視窗的Title bar及邊框就會消失了,但是不幸的是你也就失去了操作視窗的能力。
BCB中將以空白字元分隔的字串分割的範例
很多時候,我們會希望將一個以空白分隔的字串加以分割成一個一個的字。也許其中的分隔字元有時有一個或是多個不一定。
BCB中開啟正在使用中的檔案
在Windows中,如果企圖要開啟正在使用中的檔案,將會傳回開啟失敗。這是因為正在使用的檔案是不允允許寫入的,但是還是可以讀取它。
何謂callback function?
簡單的說,如果你使用了某個function,那麼你就是『call』了一個function。如果系統或是函式是要求你給一個function pointer,這個function pointer指到一個實際的函式(多半這個函式是你自己寫的)。然後它會在適當的時間呼叫此function,則此function就是所謂的 callback function。因為這個function是被『callback』了。
BCB的TIniFile沒作用?
TIniFile是一個提供INI檔案存取能力的VCL元件。但是第一次用的人,又沒有仔細的閱讀它的說明。常常會遇到一個問題。就是指定的INI檔案沒有辦法被讀取或是寫入。
使用萬用字元的方式搜尋檔案
這個範例主要是在BCB下,提供一個函式SearchFile,透過他可以透過萬用字元的方式來找尋特定目錄下的檔案。
BCB的Typinfo::GetPropList()無法Link的問題
有位網友問到他在使用BCB內的RTTI時,遇到一個奇怪的問題。當他在使用下面這個函式時,發生無法Link的問題。
將剪貼簿文字自動貼到其他視窗的方法
一位網友問了如何將文字貼到其他視窗的問題,我把他給我的範例修改一下貼在這裡。
BCB中改變相同型態元件的方法
常有人問到怎麼樣改變畫面上相同型態元件的方法。有些人可能會回答利用一個陣列去存放這些元件,透過瀏覽這個陣列的方式將元件一個一個的改過來。其實,善用VCL所提供的機制,我們可以用另外一種更具變化的方法來做。
ShellExecute的用法
在Windows下面,要讓自己的程式能夠執行其他的程式,我想最簡單的作法就是透過ShellExecute()這個函式來做。
BCB的TOpenDialog無法自動回復的起始目錄的問題
TOpenDialog有個InitialDir的設定,可是設定後卻無法在每次Dialog開啟時自動回到該目錄。應該如何做呢?
將多個Object files(.o)結合為一個
雖然說大部分的狀況下,您應該都是將許多的Object file合成一個lib檔案。但是,說不定有些時候您想要將它們merge成一個較大的object file,而非lib檔案。本文將說明如何完成這項任務。
取得BCB的TRichEdit元件的Scrollbar資訊
在使用TRichEdit元件時,有時我們會想要取得他的ScrollBar的資訊。可是在TRichEdit的Property中似乎沒有對應的項目,也沒有對應的Method可供呼叫。那麼要如何才能知道目前ScrollBar的位置等資訊呢?
如何取得GetLastError()對應的訊息
在使用Windows API時,常常要透過GetLastError()取得前一個錯誤的代碼。當然,取得代碼是沒有用的,我們真正要的是取得代碼所對應的訊息。
取得GroupBox或Panel上的所有元件的辦法
在前面的文章中,我們已經有說明如何取得在一個Form上面所有的Componenet的方式。但是,如果您只是要取得某個特定GroupBox或是Panel上的視窗元件,其實可以有更簡單的方式。
VC++下面包裝OutputDebugString成為printf style的介面
這個範例程式將OutputDebugString包裝成printf介面,有需要的人可以自行copy回去使用,這對於輸出Debug資訊上有一定程度的幫助。
讓MFC的程式在開始時就藏起來
這個文件說明了如何將一個MFC程式的視窗在一開始的時候就隱藏起來。
個人工具