原创 CString的堆錯誤 Heap block at

CString編程中遇到堆錯誤 Heap block at 00619088 modified at 006190F3 past requested size of 6   CString::GetBuffer(0)或(LPTSTR)(L

原创 由FPS到CreateDevice的渲染結構體參數的理解

初學DirectX,網上N多資料和源碼。  http://dx-engine.googlecode.com/svn/trunk 找了一篇源碼作參考,只寫了一個框架,可是FPS怎麼也無法突破80,看有人的實例FPS動輒上萬。於是開始查找原因

原创 WM_COMMAND和WM_NOTIFY消息的區別

 WM_COMMAND和WM_NOTIFY都是控件通知消息。        控件通知消息,是指這樣一種消息,一個窗口內的控件發生了一些事情,需要通知父窗口。當用戶與控件窗口交互時,控件通知消息就會從控件窗口發送到它的主窗口,這種消息一般不

原创 實現類似於Windows開始運行中的帶有自動匹配下拉列表的組合框(或編輯框)

1. 創建已經實現IAutoComplete接口的COM對象,需要初始化CoInitialize(NULL); IAutoComplete *pac = NULL; HRESULT hRet = CoCreateInstance(CL

原创 獲取網絡遊戲中所有導出到LUA的函數

現在的網絡遊戲大多集成了LUA作爲腳本系統引擎,如果想要通過腳本修改一些遊戲功能,比如掛機、自動吃藥等等,就需要了解遊戲提供了哪些導出函數接口:   1. 通過解壓遊戲資源包,獲取遊戲腳本文件,可以直觀的看到函數名稱、參數等,是最佳的方法

原创 單行編輯框文本垂直居中(包含計算字體高度)

有時爲了界面更漂亮,使用高度比較高的編輯框,但單行文本的編輯框文字是靠上顯示的,反而不美觀了,使文本垂直居中有兩種方法: 1. 屬性設爲多行,不接收換行,然後計算中間位置,使用SetRect設置到文本位置(注意OnSize還要處理) 可在

原创 IOCP之accept、AcceptEx、WSAAccept的區別

1. accept、WSAAccept是同步操作,AcceptEx是異步操作 2. WSAAccept函數在accept函數基礎上添加了條件函數判斷是否接受客戶端連接 3. AcceptEx是異步的,可以同時發出多個AcceptEx請求,

原创 IOCP中CompletionKey(完成鍵)與Overlapped(重疊結構體)的區別

BOOL GetQueuedCompletionStatus(   HANDLE                   CompletionPort,       // 完成端口句柄   LPDWORD               lpNu

原创 Winsock工作模型

Winsock工作模型 ( 轉 ) 首先得弄清楚同步、異步、阻塞、非阻塞的概念。 同步和異步是針對通訊的工作模式,阻塞和非阻塞是指socket的I/O操作。 實際上對於socket,只存在阻塞和非阻塞,同步與異步是在程序實現上有所不同。

原创 IOCP中爲什麼使用WSAIoctl獲取AcceptEx函數指針

    Winsock2的其他供應商不一定會實現AcceptEx函數。同樣情況也包括的其他Microsoft的特定APIs如TransmitFile,GetAcceptExSockAddrs以及其他Microsoft將在以後版本的wind

原创 Invalidate、UpdateWindow、RedrawWindow的區別

void Invalidate( BOOL bErase = TRUE ) Invalidate()是強制系統進行重畫,但是不一定就馬上進行重畫。因爲Invalidate()只是令窗口客戶區變爲無效。強制系統調用WM_PAINT,而這個消

原创 VS2005編譯LUA

根據 lua/INSTALL   裏的說明   第一步 編譯core lib 建立一個static library工程,把lua/src目錄下的c,h文件(不包括子目錄)添加到項目裏, 添加include路徑。 編譯得到lua的靜態庫 第

原创 MFC對話框Border類型(None、Thin、Resizing、Dialog Frame)對應的部分屬性

在運行中轉換對話框類型需要用到的屬性 Dialog Frame WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME WS_EX_DLGMODALFRAM

原创 內聯彙編 error C2400 "第一操作數"中的內聯彙編語法錯誤;找到","

寫了一段內聯彙編   DWORD type = 0     _asm    {     pushad     MOV EDX,DWORD PTR DS:[ESI]     MOV EAX,DWORD PTR DS:[EDX+0xA0]