Time of Update: 2018-12-05
DefWindowProc對WM_CLOSE的處理是調用DestroyWindow, DestroyWindow完成視窗的清理工作,最後像視窗過程發送WM_DESTROY。對於WM_DESTROY,DefWindowProc不會處理。也就是說,你如果不處理這個訊息,雖然你的視窗已經銷毀,但進程並不會結束。一般處理WM_DESTROY時都是釋放資源(例如申請的記憶體等),然後調用PostQuitMessage。
Time of Update: 2018-12-05
當我們想關閉控制項控制代碼,節省資源時,可以::SendMessage (hand,WM_CLOSE,NULL,NULL)此時控制項控制代碼被關閉。此時m_hWnd被CloseHand後並被賦予了NULL。雖然此時這個控制項的沒有被析構,但是當我們調用CWnd的方法時會出現assert警告框,這是為什麼呢?_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const { ASSERT(::IsWindow(m_hWnd));
Time of Update: 2018-12-05
一、容器作為STL的最主要組成部分--容器,分為向量(vector),雙端隊列(deque),表(list),隊列(queue),堆棧(stack),集合(set),多重集合(multiset),映射(map),多重新對應(multimap)。以下順序按照:容器特性所在標頭檔進行。向量vector可以用常數時間訪問和修改任意元素,在序列尾部進行插入和刪除時,具有常數時間複雜度,對任意項的插入和刪除就有的時間複雜度與到末尾的距離成正比,尤其對向量頭的添加和刪除的代價是驚人的高的<vector
Time of Update: 2018-12-05
//ÏÂÃæÊdzÌÐòËùÐèÒªµÄincludeÎļþ£¬µÚÒ»¸öincludeÊÇÊÓ´°Ëù±ØÐëµÄ£¬//µÚ¶þ¸öÊÇDirect3D 8Ëù±ØÐëµÄ¡£#include <WINDOWS.H>#include <D3DX8.H> HWND hWnd;HDC hDC;HINSTANCE hInstance; //µÃµ½³ÌÐòµÄÀý×Ó LPDIRECT3D8
Time of Update: 2018-12-05
#include <windows.h>#include <stdio.h>#include <string.h> #define WOM_WOMCLTMD_INI "E://work//vctest//testmjong//womcltmd.ini"int main(void){ unsigned int func_rtn; char StrBuf[256]; char work[256]; memset(StrBuf, '/0', sizeof(
Time of Update: 2018-12-05
一直以來我沒有系統的把23種設計模式一口氣看完,總是用到時上網查一查。沒來得及去思考,總結這23種設計模式,於是在理解mfc架構時總是不能得心應手,實在是痛苦不堪。今天在研究麻將時,建立一個sdi的工程,於是把這個架構粗略的研究了一番。 大致有下面這些心得:建立SDI嚮導的過程中,vc6.0為我們做了下面這些事情:1.new了DOC,FRAME,VIEW三個對象2.建立了FRAME,VIEW兩個視窗3.將FRAME對象地址儲存到APP對象中,將DOC對象地址儲存到VIEW對象中,將VIEW對象
Time of Update: 2018-12-05
//-----------------------------------------------------------------------------// Desc: 設定材質和燈光//-----------------------------------------------------------------------------VOID SetLight(){ //設定材質 D3DMATERIAL9 mtrl; ZeroMemory( &mtrl,
Time of Update: 2018-12-05
在Windows作業系統中,面向使用者的GUI基本上可分為對話方塊形式和文檔/視圖兩種表現形式。對話方塊的顯示方式又可分為模態對話方塊和非模態對話方塊,以適應不同的使用者互動需求。由於對話方塊和文檔/視圖架構結構各有特色,能不能將文檔/視圖架構結構當作一對話方塊來使用,或在對話方塊中實現文檔/視圖架構結構內的特色功能呢,答案是肯定的。 下面,從Windows
Time of Update: 2018-12-05
大家可以運行這段代碼,我相信足以讓你明白 #include <stdio.h> #include <stdlib.h> const int i = 10; //文本常量區 int j = 10; //初始化全域區 int n; // 未初始化全域區 char *p = "test"; // "test"在文本常量區,指標自身在初始化全域區 int main() { char *p1 = "Hello"; // "Hello"在文本常量區,指標自身在棧裡
Time of Update: 2018-12-05
void Render(){ g_pD3dDevice->Clear(0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(45, 50, 170), 1.0f, 0); if (SUCCEEDED(g_pD3dDevice->BeginScene())) { SetLight(); g_pD3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX));
Time of Update: 2018-12-05
#include <iostream>#include <stdlib.h>#include <memory.h>#include <vector>using namespace std;#include <string>#include <iostream>#pragma pack(push)#pragma pack(1)typedef struct YOUR{ int sd :2; char
Time of Update: 2018-12-05
#include "d3d9.h"#include "d3dx9math.h"#pragma comment(lib,"d3d9.lib") #pragma comment(lib,"d3dx9.lib") #pragma comment(lib, "winmm.lib") LPDIRECT3D9 g_pD3D = NULL;//Direct3D¶ÔÏóLPDIRECT3DDEVICE9 g_pd3dDevice =
Time of Update: 2018-12-05
一、使用MFC可以用以下代碼得到CTime time = CTime::GetCurrentTime(); ///構造CTime對象int m_nYear = time.GetYear(); ///年int m_nMonth = time.GetMonth(); ///月int m_nDay = time.GetDay(); ///日int m_nHour = time.GetHour(); ///小時int m_nMinute =
Time of Update: 2018-12-05
#include <d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#pragma comment(lib, "winmm.lib")//-----------------------------------------------------------------------------// Desc: 全域變數//----------------------------------
Time of Update: 2018-12-05
要想在應用程式中使用ActiveX控制項,必須使你的應用程式成為ActiveX控制項包容器。ActiveX 控制項包容器就是完全支援ActiveX控制項,並能把控制群組合進自己的視窗或對話方塊的父應用程式。利用MFC的AppWizard,你可以很方便地建立你的包容器程式。事實上,在用AppWizard建立新的應用程式時,你的應用程式就被預設設定為控制項包容器,即在第3步選中支援ActiveX Controls的複選框。如果你在建立過程中沒有選擇這項支援人員,以後也可以手動地加入這項支援。
Time of Update: 2018-12-05
DoDataExchange(CDataExchange *pDX) 收藏 在對話方塊中有這麼一個函數 其作用是與對應的變數交換對話方塊資料 MSDN 解釋為: Called by the framework to exchange and validate dialog data. virtual void DoDataExchange( CDataExchange* pDX ); pDX A pointer to a CDataExchange object.
Time of Update: 2018-12-05
拷貝建構函式,經常被稱作X(X&),是一種特殊的建構函式,他由編譯器調用來完成一些基於同一類的其他對象的構件及初始化。它的唯一的一個參數(對象的引用)是不可變的(因為是const型的)。這個函數經常用在函數調用期間於使用者定義型別的值傳遞及返回。拷貝建構函式要調用基類的拷貝建構函式和成員函數。如果可以的話,它將用常量方式調用,另外,也可以用非常量方式調用。 在C++中,下面三種對象需要拷貝的情況。因此,拷貝建構函式將會被調用。 1). 一個對象以值傳遞的方式傳入函數體 2).
Time of Update: 2018-12-05
//=============================================================================// Desc: 最近點採樣和線性紋理過濾方式//=============================================================================#include <d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma
Time of Update: 2018-12-05
CWnd是MFC類庫中所有視窗類別的基類。微軟在MFC中將所有視窗的通用操作都封裝到了這個類中,如:ShowWindow等等,同時它也封裝了視窗控制代碼即m_hWnd成員。 由HWnd得到CWnd*:CWnd wnd;HWnd
Time of Update: 2018-12-05
一個是對向量的旋轉,一個是對點的旋轉 座標和向量是有區別的:向量的第四維數值是0,座標的第四維數值是1向量 = 兩個座標的差值 第四維同樣做減法,結果是0向量的座標變換用D3DXVec3TransformNormal, 點的變換用D3DXVec3TransformCoord。D3DXVec3Transform和D3DXVec3TransformCoord相似,區別在於後者變換後將w投射回1 實際執行計算的時候是:D3DXVec3TransformCoord VOut.x = V1.x