WM_DESTROY WM_CLOSE WM_QUIT三個訊息的理解

DefWindowProc對WM_CLOSE的處理是調用DestroyWindow, DestroyWindow完成視窗的清理工作,最後像視窗過程發送WM_DESTROY。對於WM_DESTROY,DefWindowProc不會處理。也就是說,你如果不處理這個訊息,雖然你的視窗已經銷毀,但進程並不會結束。一般處理WM_DESTROY時都是釋放資源(例如申請的記憶體等),然後調用PostQuitMessage。    

WM_CLOSE訊息處理後

當我們想關閉控制項控制代碼,節省資源時,可以::SendMessage (hand,WM_CLOSE,NULL,NULL)此時控制項控制代碼被關閉。此時m_hWnd被CloseHand後並被賦予了NULL。雖然此時這個控制項的沒有被析構,但是當我們調用CWnd的方法時會出現assert警告框,這是為什麼呢?_AFXWIN_INLINE void CWnd::GetWindowRect(LPRECT lpRect) const { ASSERT(::IsWindow(m_hWnd));

STL容器總結系列(1)

一、容器作為STL的最主要組成部分--容器,分為向量(vector),雙端隊列(deque),表(list),隊列(queue),堆棧(stack),集合(set),多重集合(multiset),映射(map),多重新對應(multimap)。以下順序按照:容器特性所在標頭檔進行。向量vector可以用常數時間訪問和修改任意元素,在序列尾部進行插入和刪除時,具有常數時間複雜度,對任意項的插入和刪除就有的時間複雜度與到末尾的距離成正比,尤其對向量頭的添加和刪除的代價是驚人的高的<vector

d3d 畫旋轉方棱椎與六面體

 //ÏÂÃæÊdzÌÐòËùÐèÒªµÄincludeÎļþ£¬µÚÒ»¸öincludeÊÇÊÓ´°Ëù±ØÐëµÄ£¬//µÚ¶þ¸öÊÇDirect3D 8Ëù±ØÐëµÄ¡£#include <WINDOWS.H>#include <D3DX8.H> HWND hWnd;HDC hDC;HINSTANCE hInstance; //µÃµ½³ÌÐòµÄÀý×Ó LPDIRECT3D8

ini檔案動態配置程式參數

#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(

doc/view/frame之間的關係系列文章(1)

一直以來我沒有系統的把23種設計模式一口氣看完,總是用到時上網查一查。沒來得及去思考,總結這23種設計模式,於是在理解mfc架構時總是不能得心應手,實在是痛苦不堪。今天在研究麻將時,建立一個sdi的工程,於是把這個架構粗略的研究了一番。  大致有下面這些心得:建立SDI嚮導的過程中,vc6.0為我們做了下面這些事情:1.new了DOC,FRAME,VIEW三個對象2.建立了FRAME,VIEW兩個視窗3.將FRAME對象地址儲存到APP對象中,將DOC對象地址儲存到VIEW對象中,將VIEW對象

d3d設定材質與燈光

//-----------------------------------------------------------------------------// Desc: 設定材質和燈光//-----------------------------------------------------------------------------VOID SetLight(){    //設定材質    D3DMATERIAL9 mtrl;    ZeroMemory( &mtrl,

模態對話方塊分析(1)

在Windows作業系統中,面向使用者的GUI基本上可分為對話方塊形式和文檔/視圖兩種表現形式。對話方塊的顯示方式又可分為模態對話方塊和非模態對話方塊,以適應不同的使用者互動需求。由於對話方塊和文檔/視圖架構結構各有特色,能不能將文檔/視圖架構結構當作一對話方塊來使用,或在對話方塊中實現文檔/視圖架構結構內的特色功能呢,答案是肯定的。  下面,從Windows

資料代碼地址分布

   大家可以運行這段代碼,我相信足以讓你明白 #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"在文本常量區,指標自身在棧裡  

d3d設定燈光時需要注意的地方

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)); 

pragma pack用法

#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  

d3d實現一個旋轉的三角形

#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 =

如何得到目前時間日期

一、使用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 =

3d3燈光設定注意的地方

#include <d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#pragma comment(lib, "winmm.lib")//-----------------------------------------------------------------------------// Desc: 全域變數//----------------------------------

AfxEnableControlContainer()

要想在應用程式中使用ActiveX控制項,必須使你的應用程式成為ActiveX控制項包容器。ActiveX   控制項包容器就是完全支援ActiveX控制項,並能把控制群組合進自己的視窗或對話方塊的父應用程式。利用MFC的AppWizard,你可以很方便地建立你的包容器程式。事實上,在用AppWizard建立新的應用程式時,你的應用程式就被預設設定為控制項包容器,即在第3步選中支援ActiveX   Controls的複選框。如果你在建立過程中沒有選擇這項支援人員,以後也可以手動地加入這項支援。

PrepareCtrl(int nIDC); //返回指定ID的控制視窗的控制代碼

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.     

什麼情況下要有拷貝建構函式

 拷貝建構函式,經常被稱作X(X&),是一種特殊的建構函式,他由編譯器調用來完成一些基於同一類的其他對象的構件及初始化。它的唯一的一個參數(對象的引用)是不可變的(因為是const型的)。這個函數經常用在函數調用期間於使用者定義型別的值傳遞及返回。拷貝建構函式要調用基類的拷貝建構函式和成員函數。如果可以的話,它將用常量方式調用,另外,也可以用非常量方式調用。 在C++中,下面三種對象需要拷貝的情況。因此,拷貝建構函式將會被調用。 1). 一個對象以值傳遞的方式傳入函數體 2).

d3d紋理過濾

//=============================================================================// Desc: 最近點採樣和線性紋理過濾方式//=============================================================================#include <d3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma

控制代碼Hwnd 與 視窗Wnd的聯絡

CWnd是MFC類庫中所有視窗類別的基類。微軟在MFC中將所有視窗的通用操作都封裝到了這個類中,如:ShowWindow等等,同時它也封裝了視窗控制代碼即m_hWnd成員。 由HWnd得到CWnd*:CWnd wnd;HWnd

D3DXVec3TransformNormal和D3DXVec3TransformCoord的區別

一個是對向量的旋轉,一個是對點的旋轉 座標和向量是有區別的:向量的第四維數值是0,座標的第四維數值是1向量 = 兩個座標的差值      第四維同樣做減法,結果是0向量的座標變換用D3DXVec3TransformNormal, 點的變換用D3DXVec3TransformCoord。D3DXVec3Transform和D3DXVec3TransformCoord相似,區別在於後者變換後將w投射回1 實際執行計算的時候是:D3DXVec3TransformCoord VOut.x = V1.x

總頁數: 61357 1 .... 14809 14810 14811 14812 14813 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.