Time of Update: 2018-12-04
函式宣告:template<class InputIterator, class T> inlineInputIterator find(InputIteratorFirst,//起始尋找位置InputIteratorLast,//終止尋找位置const T&Value//待尋找的值)這個函數就是在Iterators range內執行線性尋找.如果找到一個適合的值,則返回該值的一個迭代器.否則返回終止尋找位置的迭代器.一個簡單的例子:vector<string>
Time of Update: 2018-12-04
Vector的erase成員函數有許多容易導致問題的情況.其中以迭代器失效問題最為常見.關於迭代器的失效問題,以及erase如何刪除vector中指定值(可能不止一個),我曾今也對erase的使用方式和內容結合起來寫過一些字.博文地址:http://blog.csdn.net/yuanweihuayan/article/details/6790516似乎對於刪除的解析已經夠全面了.可是最近在項目裡面發現一個很奇怪的問題,跟蹤了很久都沒有發現是什麼問題導致的.今天知道了問題的原因,但是為什麼會這樣
Time of Update: 2018-12-04
int main(){/*數組建立與分析:例子一:string strValue = "{\"ldh\":\"001\",\"gfc\":\"002\",\"yyj\":\"003\",\"andy\":[\"005\",\"123\",\"true\"]}";Json::Reader read;Json::Value value;value["ldh"] = "001";value["gfc"] = "002";value["andy"].append( "005" );value["andy
Time of Update: 2018-12-04
對於這個函數我也是最近想研究控制項自繪才知道它真正怎麼用.以前只是見到過.嗯,廢話不多說.我先說下我的問題:如何響應滑鼠離開某個表單(控制項)事件?先大概講下步驟,然後再集中對TrackMouseEvent進行詳解:為按鈕添加以下幾個函數:● OnMuseMove:這個函數時MFC內部已經做好了的事件:主要響應滑鼠移動事件.但是這個事件有一個嚴重的問題:它只能識別滑鼠是否在其上移動.● OnMouseLeave():這個是自訂函數(但是要在訊息映射裡面與WM_MOUSELEAVE對應OnMous
Time of Update: 2018-12-04
關於erase,我的理解就是:刪除指定的元素,然後把剛剛刪除的元素其後面所有元素往前移.然後改變end指標.使其往前移動一位.最重要的是,當前的迭代器不動(但是由於元素往前移了,所以它指向了原始狀態的下一個元素).比如我有一個vector,vector的元素分別是0,1,2,3,4;如果我想刪除元素值為3的元素.那麼當我使用erase後,它的記憶體元素分別為0(begin),1,2,4(end),4.刪除以後的迭代器指向的元素為4.(是第一個4)看起來比較囉嗦,按照這一原理我們來看幾個簡單的例
Time of Update: 2018-12-04
最近在學習按鈕的自繪.關於按鈕的自繪,主要的痛點如下:1. 如果想要做到的效果稍微有點美觀的話,我想這幾個狀態時必須要考慮的:滑鼠移入、滑鼠按下、滑鼠彈起、滑鼠移開.然後相應對其處理即可.這裡主要討論如何捕捉這些事件:首先是滑鼠按下和滑鼠彈起事件,這兩個事件比較簡單,windows已經和我們寫好了這兩個響應訊息(我們只需重載他們即可).一個是OnLButtonUp一個是OnLButtonDown..我們可以在滑鼠按下和彈起時設定一個標誌位即可.其實我們可以再DrawItem裡面進行判斷.(這個
Time of Update: 2018-12-04
Tiffany Trader, Associate Editor, HPCwireThe end is in sight for cheapGPU-based supercomputing, according to an International Science GridThis Week (iSGTW) opinion piece out this week. Author Greg Pfisterargues that CUDA development has thus far
Time of Update: 2018-12-04
1.如果函數func是__cdecl(預設調用方式),調用時情況如下 int main() ...{ //參數從右至左壓棧 push 4 push 3 push 2 push 1 call func add esp 0x10 //調用者恢複堆棧指標esp,4個參數的大小是0x10(4x4) } 2.如果函數func是__stdcall,調用時情況如下 int main()
Time of Update: 2018-12-04
1. 我們必須理解一個地址空間是由一個可執行模組和多個DLL模組構成的.當一個模組提供一個記憶體配置函數的時候,它必須同時提供另一個用來釋放記憶體的函數.2. 實際開發中,應該避免從DLL中匯出變數,因為這等於去掉了代碼中的一個抽象層,從而使得DLL的代碼更加難以維護.此外,只有當匯出C++類的模組使用的編譯器與匯入C++類的模組使用的編譯器有統一廠家提供,否則應該避免從DLL中匯出類.3. 構
Time of Update: 2018-12-04
WTL 學習筆記 -- 幾則技巧 l 在WTL項目中插入ATL控制項。有點不明白,WTL本身就是擴充ATL,但WTL嚮導產生的工程,竟不能使用ATL控制項。還得手工加一些東西來欺騙VS6,VS6才讓插入ATL控制項。1. 在工程增加一個Atl.idl檔案,並排除在編譯之外。library Atl { }; 2. 在源檔案加入一個宏。#if 0 #include < atlcom.h
Time of Update: 2018-12-04
提示:Cannot open include file: 'stdafx.h ': No such file or directory #include "stdAfx.h " 放到另外#include的前面,也就是程式的最前面。使用先行編譯標頭檔需要把它放到程式最前面,否則它前面的內容會被忽略。 ------------------------------------------------------------------------------- The way
Time of Update: 2018-12-04
編程的書中經常介紹UNICODE,還有字串函數中經常見各種格式,下面以以"abc我你他"為例分別介紹測試源碼:TCHAR* p = _T("abc我你他"); std::cout << _tcsclen(p);我們寫的代碼應該是這個樣子的,即既符合ANSI又符合UNICODE的代碼,使用_T宏和_ts函數集。一、ANSI編碼:普通英文字母一個,漢字佔兩個位元組。"abc我你他"佔用9個位元組。 編譯選項裡沒有相關選項 輸出9 此時,_tcsclen為strlen,結果為位元組數。
Time of Update: 2018-12-04
#ifdef_DEBUGafxDump<<"DumpingmyPerson:/n";myPerson->Dump(afxDump);afxDump<<"/n";#endif1)TRACE();/TRACE0();/TRACE1();/TRACE2();/TRACE3();:其用法和C中的printf()函數類似;TRACEn()和TRACE()的區別是前者使用的資源較少,前者中n表示所帶參數的個數。使得TRACE可用:Tools-MFCTracer-Enablin
Time of Update: 2018-12-04
WinExec相當於DOS年代C語言裡的system(...),VC為了保持與16位程式的相容,把system改了個名字,就成了WinExec,所以只能執行標準的執行檔案,如果你執行WinExec("Temp.txt"),那是行不通的。在32位的世界裡推薦CreateProcess,這個函數的參數非常多。至於那個ShellExecutEx,顧名思義,通過Windows的Shell啟動一個東西,這就不一定是程式了,可以使所有在系統中註冊過的有關聯程式的東西,比如你可以用這個函數“
Time of Update: 2018-12-04
一、WinInet API 簡介 WinInet (Win32 Internet Extensions) API是 Windows 提供的編寫 Internet 用戶端程式的專用介面。這些介面提供了對普通 網際網路通訊協定 (IP)的訪問:HTTP、FTP、Gopher。二、WinInet API 結構圖(部分)三、主要函數介紹 1. InternetOpen 初始化WinInet。函數原型如下: HINTERNET
Time of Update: 2018-12-04
(1) 近指標(near):近指標為16位指標,它只含有地址的位移量部分。近指標用於不超過64K 位元組的單個資料區段或程式碼片段。在微、小和中編譯模式下產生的資料指標是近指標(預設狀態);在微、小和中編譯模式下產生的碼指標(指向函數的指標)是近指標(預設狀態)。 (2)遠指標(far) 遠指標為32位指標,指標的段地址和位移量都在指標內。可用於任意編譯模式。每次使用遠指標時都要重裝段寄存器。遠指標可定址的目標不能超過64K
Time of Update: 2018-12-04
WaitForMultipleObjects是Windows中的一個功能非常強大的函數,幾乎可以等待Windows中的所有的核心對象(關於該函數的描述和例子見MSDN,)。但同時該函數在用法上卻需要一定的技巧. 原型:DWORD WaitForMultipleObjects( DWORD nCount, const HANDLE* lpHandles, BOOL bWaitAll, DWORD dwMilliseconds);當WaitForMultipleObjects等到多個核心對象的時候,
Time of Update: 2018-12-04
一般在開頭有一個單元分隔字元NAL,兩個單元分隔字元之間的資料包就是一幀映像。就是00 00 01
Time of Update: 2018-12-04
CString 的bug有一些[指標問題,],絕大多會犯這個東東,要細心運行結果才看出來,加深理解.VC,java等和C++思維要轉一些.[補充]VC++ 7.0出來了.6.0有一些BUG.關於GetBuffer/ReleaseBuffer,網上比較流行的一種說法是:如果你要直接修改CString的內部資料,就要調用GetBuffer/ReleaseBuffer.我也同意這樣的表述.下面是幾個例子,主要是錯誤的例子,來加深理解.1CString strTest = "123";char* p =
Time of Update: 2018-12-04
ONERASEBKGND()是畫背景的,先與OnPaint()運行OnPaint( )與OnDraw( )的區別: OnPaint()是訊息響應函數,默認是WM_PAINT訊息的入口. OnDraw()是虛函數,是被OnPaint( )調用的函數. OnPaint( )優先於OnDraw( ),如果重載了OnPaint( ),則不會響應OnDraw( ).如果需要,則需明確調用OnDraw( )函數. 都一樣的,OnDraw只不過是MFC和自己對OnPaint作了點手腳! 沒什麼和!