資源簡(jiǎn)介
/*
整理:
1、雙緩沖繪圖技術(shù)概述
原理:將一般的在CDC中繪圖改成在一內(nèi)存設(shè)備中繪圖(CDC型變量,一般命名為pMemDC),然后使用BitBlt()函數(shù)將pMemDC中的圖像復(fù)制到CDC中;
步驟: ①創(chuàng)建內(nèi)存設(shè)備CDC *pMemDC;關(guān)聯(lián)設(shè)備CreateCompatibleDC();
②創(chuàng)建兼容位圖 HBITMAP ::CreateCompatibleBitmap();
③選入設(shè)備內(nèi)存設(shè)備(HBITMAP)::SelectObject(m_hDC,hBitmap);
④內(nèi)存設(shè)備繪圖
⑤復(fù)制到CDC,使用函數(shù) BitBlt()
2、手動(dòng)重繪
原理: 利用內(nèi)存設(shè)備的BitBlt()函數(shù)將初始CDC選入。將上面第⑤步的設(shè)備互換。
*/
/*
程序過(guò)程:
1、繪制背景,在函數(shù)DrawSome()中實(shí)現(xiàn);并將其放在OnPaint()函數(shù)中,保證每次刷新時(shí)依然存在;
2、修改WM_ERASEBKGND消息響應(yīng)函數(shù),使得不加入背景刷(此步可以取消,暫時(shí)無(wú)影響,因?yàn)閷rawSome()放在了OnPaint()中);
3、響應(yīng)鼠標(biāo)左鍵按下,記錄初始坐標(biāo)點(diǎn);
4、響應(yīng)鼠標(biāo)按下移動(dòng),并實(shí)時(shí)繪制矩形,此處用到雙緩沖繪圖技術(shù);
5、響應(yīng)鼠標(biāo)左鍵松開,繪制紅色矩形。
*/

代碼片段和文件信息
//?ReDraw.cpp?:?定義應(yīng)用程序的類行為。
//
#include?“stdafx.h“
#include?“ReDraw.h“
#include?“ReDrawDlg.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#endif
//?CReDrawApp
BEGIN_MESSAGE_MAP(CReDrawApp?CWinApp)
ON_COMMAND(ID_HELP?&CWinApp::onhelp)
END_MESSAGE_MAP()
//?CReDrawApp?構(gòu)造
CReDrawApp::CReDrawApp()
{
//?支持重新啟動(dòng)管理器
m_dwRestartManagerSupportFlags?=?AFX_RESTART_MANAGER_SUPPORT_RESTART;
//?TODO:?在此處添加構(gòu)造代碼,
//?將所有重要的初始化放置在?InitInstance?中
}
//?唯一的一個(gè)?CReDrawApp?對(duì)象
CReDrawApp?theApp;
//?CReDrawApp?初始化
BOOL?CReDrawApp::InitInstance()
{
//?如果一個(gè)運(yùn)行在?Windows?XP?上的應(yīng)用程序清單指定要
//?使用?ComCtl32.dll?版本?6?或更高版本來(lái)啟用可視化方式,
//則需要?InitCommonControlsEx()。否則,將無(wú)法創(chuàng)建窗口。
INITCOMMONCONTROLSEX?InitCtrls;
InitCtrls.dwSize?=?sizeof(InitCtrls);
//?將它設(shè)置為包括所有要在應(yīng)用程序中使用的
//?公共控件類。
InitCtrls.dwICC?=?ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
//?創(chuàng)建?shell?管理器,以防對(duì)話框包含
//?任何?shell?樹視圖控件或?shell?列表視圖控件。
CShellManager?*pShellManager?=?new?CShellManager;
//?標(biāo)準(zhǔn)初始化
//?如果未使用這些功能并希望減小
//?最終可執(zhí)行文件的大小,則應(yīng)移除下列
//?不需要的特定初始化例程
//?更改用于存儲(chǔ)設(shè)置的注冊(cè)表項(xiàng)
//?TODO:?應(yīng)適當(dāng)修改該字符串,
//?例如修改為公司或組織名
SetRegistryKey(_T(“應(yīng)用程序向?qū)傻谋镜貞?yīng)用程序“));
CReDrawDlg?dlg;
m_pMainWnd?=?&dlg;
INT_PTR?nResponse?=?dlg.DoModal();
if?(nResponse?==?IDOK)
{
//?TODO:?在此放置處理何時(shí)用
//??“確定”來(lái)關(guān)閉對(duì)話框的代碼
}
else?if?(nResponse?==?IDCANCEL)
{
//?TODO:?在此放置處理何時(shí)用
//??“取消”來(lái)關(guān)閉對(duì)話框的代碼
}
//?刪除上面創(chuàng)建的?shell?管理器。
if?(pShellManager?!=?NULL)
{
delete?pShellManager;
}
//?由于對(duì)話框已關(guān)閉,所以將返回?FALSE?以便退出應(yīng)用程序,
//??而不是啟動(dòng)應(yīng)用程序的消息泵。
return?FALSE;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????2994??2016-06-18?16:12??ReadMe.txt
?????文件??????105636??2016-06-18?17:13??ReDraw.aps
?????文件????????1993??2016-06-18?16:12??ReDraw.cpp
?????文件?????????442??2016-06-18?16:12??ReDraw.h
?????文件???????10234??2016-06-18?17:13??ReDraw.rc
?????文件????????5910??2016-06-18?16:17??ReDraw.vcxproj
?????文件????????1981??2016-06-18?16:12??ReDraw.vcxproj.filters
?????文件?????????143??2016-06-18?16:12??ReDraw.vcxproj.user
?????文件????????7580??2016-06-18?17:39??ReDrawDlg.cpp
?????文件?????????952??2016-06-18?17:08??ReDrawDlg.h
?????目錄???????????0??2016-06-18?16:12??res\
?????文件????????1266??2016-06-18?16:12??resource.h
?????文件???????67777??2009-08-31?02:31??res\ReDraw.ico
?????文件?????????668??2016-06-18?16:12??res\ReDraw.rc2
?????文件?????????139??2016-06-18?16:12??stdafx.cpp
?????文件????????1632??2016-06-18?16:12??stdafx.h
?????文件?????????234??2016-06-18?16:12??targetver.h
評(píng)論
共有 條評(píng)論