Time of Update: 2018-12-03
《Effective C++》堪稱C++之經典書籍,但是不能因為她是經典而對其唯命是從,相反應該帶著自己的腦袋來思考書中的每一條款,只有這樣才能有所得。 故事發生在條款27(盡量少做轉型動作),其中一段代碼所產生的結果令我費解。class Window{public: virtual void onResize() { . . . } . . .};class SpecialWindow : public Window{public: virtual void
Time of Update: 2018-12-03
想必很多學C++的都沒聽說過內在函數,我也是初次聽見。什麼是內在函數?英文是Intrinsic Function。這是一種編譯器特殊函數,它的行為類似與C++的內嵌函式,但是由於它是編譯器提供的,所以編譯器對其更加瞭解更利於最佳化。比如說memcpy等就是內在函數。如果編譯器有選擇/Optimization,那麼編譯器在產生代碼的時候將直接插入運行代碼而不是調用該函數,這和內嵌函式差不多,但是如上所說,由於編譯器對其的瞭解,這個最佳化會更好。
Time of Update: 2018-12-03
Plug-in is Everywhere
Time of Update: 2018-12-03
上文是在網上找的檢測程式重複啟動並執行類,但是感覺不是很好用,而且還使用了API,似乎完全沒有必要,於是晚上自己寫了一個函數,經過測試,在多使用者下仍然可以檢測到程式的多次運行。當然,如果程式改了名字還是可以再次運行,不過這種方式只怕沒有什麼太好的辦法來,除非是在.NET環境或註冊表中寫入一些標誌,但似乎也沒有必要。 if (AppInstance()) { MessageBox.Show("警告:程式正在運行中! 請不要重複開啟程式!", "
Time of Update: 2018-12-03
C#中設定檔的使用方法(連接字串的儲存)0、添加對System.Configuration.dll 的引用(重要!!)1、在程式中增加新的設定檔在項目名稱處點 右鍵-添加-建立項-應用程式設定檔會在項目中新加一個檔案 App.config,然後可以在其中大類,主要有 <connectionStrings> <appSettings> 等就象這個樣子<?xml version="1.0" encoding="utf-8"
Time of Update: 2018-12-03
經過我的測試,還比較好用,但是有個問題,如果不登出,用另一個使用者進入,則程式不能判斷出已運行。所以只限於用在單使用者環境,還是不太完美。class Program { [STAThread] static void Main(string[] args) { //防止程式多次運行 if (!OneInstance.IsFirst("MyTest")) {
Time of Update: 2018-12-03
編程的時候,能夠捕捉指定的異常是很好的習慣,但是那麼多的異常名稱卻是很難記住,這裡羅列出來,以便參考。System..::.Object System..::.Exception System..::.SystemException System..::.AccessViolationException System..::.AppDomainUnloadedException System..::.ArgumentException
Time of Update: 2018-12-03
以前在網上查過,似乎也可以通過讀取access系統資料表的方法來獲得,但是實在想不想來是什麼,今天又在網上找了找,終於發現更加方便的方法,更重要的是,這種方法也可以通用所有OLEDB資料來源。 這裡用到了OleDbConnection兩個方法:GetSchemaGetOleDbSchemaTable 看MSDN的協助,寫的很不清楚,還是用代碼來說話吧。 1、擷取OLEDB串連的架構conn.Open();DataTable cnSch =
Time of Update: 2018-12-03
讀配置很簡單,可以用ConfigurationManager.AppSettings[key] 來讀出,可是寫設定檔時,如果寫成這樣ConfigurationManager.AppSettings[key] = "111";總是提示唯讀,那麼該怎麼辦呢? using System;using System.Collections.Generic;using System.Text;using System.Configuration;namespace BQKJ.Common{ /// &
Time of Update: 2018-12-03
A throw-expression with no operand re-throws the exception currently being handled. Such an expression should appear only in a catch handler or in a function called from within a catch handler. The re-thrown exception object is the original
Time of Update: 2018-12-03
原文: http://www.cnblogs.com/rhcad/archive/2011/05/20/2052177.html#2102587 這周與廣州的李健一起將外掛程式架構“X3 C++
Time of Update: 2018-12-03
引用時C++的一個特性,它就像能自動被編譯器逆向引用的常量型指標一樣。C++中引用的思想來自Algol語言。引用是支援C++運算子多載文法的基礎,也為函數參數的傳入傳出控制提供了便利。拷貝建構函式是特殊的建構函式,需要用引用來實現從現有的相同類型的對象產生新的對象。編譯器用拷貝建構函式通過傳值方式來傳遞和返回對象。 C和C++指標的區別在於,C++是一種類型要求更強的語言。C不允許隨便把一個類型的指標指派給另一個對象,但允許通過void*來實現。C++是不允許這樣做的。 引用
Time of Update: 2018-12-03
索引靜態化並不是單例 (Singleton) 模式餓漢模式懶漢模式 (堆棧-粗糙版)懶漢模式 (局部靜態變數-最佳版)範例代碼和注意事項 (最優實現)擴充閱讀參考資料我非常贊成合理的使用 設計模式 能讓代碼更容易理解和維護, 不過我自己除了簡單的 單例 (Singleton) 模式 外, 其它都很少用 可恥的是, 直到前段時間拜讀了 C++ In Theory: The Singleton Pattern, Part I, 我才發現自己的 單例 (Singleton)
Time of Update: 2018-12-03
剛剛看過這篇《30 years of C》,回想了這幾年的學習曆程。 在大學裡,我學習的第一門程式設計語言是C,但花時間最多的還是C++。大約五年前,開始啃《
Time of Update: 2018-12-03
通過MFC寫了很多代碼,後來在一個.NET程式中希望調用一些已經存在的功能模組,而不希望重新使用.NET語言重寫,所以開始測試MFC與.NET相互調用是否可行,結果證明完全可以。1、MFC調用.NET視窗:1.1、建立一個MFC對話方塊程式MfcApp,在其中增加一個.NET的WinForm視窗MyWinForm。1.2、在對話方塊CMfcAppDlg上增加一個Button,並添加一個訊息響應函數OnBnClickedButton1()。1.3、在MfcAppDlg.cpp中包含標頭檔#incl
Time of Update: 2018-12-03
在使用VC開發應用程式時經常遇到要一個視窗記住位置,經常重寫幾乎完全一樣的代碼非常繁瑣,於是編寫了一個類,簡化了記憶和恢複視窗位置的操作。class MEDICONEXPORT CUniRememberMe{public: CUniRememberMe(void); ~CUniRememberMe(void); // 記住視窗的位置 ,bRemember 1-儲存視窗的位置到註冊表中 0-載入視窗的位置 CUniRememberMe(CWnd * pWnd , bool
Time of Update: 2018-12-03
微軟很厲害,C++是非常優秀的電腦語言,C#比C++還厲害,C#=C++++。#本身不就包含四個+號嗎?而微軟發明了C#!C#中的long比C++中的long要long兩倍!!。不信你看:
Time of Update: 2018-12-03
#inlcude <QtGui/QApplication>#inlcude "dialog.h"int main ( int argc, char *argv[]){QApplication a (argc,argv);Dialog w;w.show();return a.exec();}return
Time of Update: 2018-12-03
方法聲明(dstring.h):/**************************************************************************** * Dynamic strings ****************************************************************************//* * tcl.h -- * * This header file describes the
Time of Update: 2018-12-03
首先選擇File菜單中的New命令,彈出New對話方塊。選擇MFCAppWizard(exe),並在ProjectName中輸入MapxSample作為工程名稱。然後單擊OK按鈕,進入應用程式嚮導的第一步。通過應用程式嚮導建立一多文檔(或單文檔)介面應用程式。 在建立MapX控制項之前,必須將MapX.h和MapX.cpp檔案加入到工程中。從Project菜單中選擇Add To Project > Files命令,開啟InsertFiles into