mfc让图片与按钮一起_MFC 基础知识:对话框背景添加图片和按钮Button添加图片...
很長(zhǎng)時(shí)間沒(méi)有看MFC相關(guān)的知識(shí)了,我大概是在大二時(shí)候?qū)W習(xí)的MFC相關(guān)知識(shí)及圖像處理,現(xiàn)在由于要幫個(gè)朋友完成個(gè)基于C++的程序,所以又回顧了下相關(guān)知識(shí)。的確,任
// TODO: 在此添加額外的初始化代碼
//初始化窗口 設(shè)置窗口為500*500大小
MoveWindow(0,0,500,500);
/*******************************************************************************/
/* (重點(diǎn)知識(shí):實(shí)現(xiàn)按鈕位置設(shè)置)
*/
/* 1.使用Ctrl+Shift+X打開(kāi)類資源導(dǎo)向 增加開(kāi)始\結(jié)束按鈕的成員變量 Button型 */
/* 2.使用函數(shù)SetWindowPos()設(shè)置兩個(gè)按鈕的位置
*/
/*******************************************************************************/
/*******************************************************************************/
/* SetWindowPos()函數(shù)
*/
/*參數(shù):const CWnd* pWndInsertAfter,int x,int y,int cx,int cy,UINT nFlags */
/*
hwnd是窗口的句柄,x、y、cx、cy分別是窗口的x和y坐標(biāo)、寬和高度
*/
/*
hWndInsertAfter用來(lái)指定窗口的Z位置,代表深度.這個(gè)參數(shù)接受5種值:
*/
/* HWND_BOTTOM、 HWND_NOTOPMOST、HWND_TOP、HWND_TOPMOST或者另一個(gè)窗口的句柄 */
/*
wFlags用來(lái)指定附加的選項(xiàng)
*/
/*******************************************************************************/
//窗口句柄設(shè)置為NULL SWP_SHOWWINDOW顯示窗口 SWP_NOSIZE保持當(dāng)前大小忽略cx\xy故設(shè)置為0
m_buttonstart.SetWindowPos(NULL,20,280,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
m_buttonfix.SetWindowPos(NULL,20,325,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
m_buttonexit.SetWindowPos(NULL,20,370,0,0,SWP_SHOWWINDOW|SWP_NOSIZE);
//設(shè)置按鈕屬性 點(diǎn)擊按鈕背景圖片變換
m_buttonstart.LoadBitmaps(IDB_StartMovie1,IDB_StartMovie2);
m_buttonfix.LoadBitmaps(IDB_StartMovie1,IDB_StartMovie2);
m_buttonexit.LoadBitmaps(IDB_StartMovie1,IDB_StartMovie2);
return TRUE; // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE此時(shí)你運(yùn)行程序會(huì)出現(xiàn)如下錯(cuò)誤:Error class "CButton"沒(méi)有成員“LoadBitmaps”。函數(shù)LoadBitmaps()的功能是點(diǎn)擊按鈕實(shí)現(xiàn)兩張背景圖片的替換。
第五步需要在XXXDlg.h頭文件中把public成員變量CButton全部修改為CBitmapButton,如下圖為修改第一個(gè)變量所示:
// CRecoveryMovieDlg 對(duì)話框
class CRecoveryMovieDlg : public CDialogEx
{
// 構(gòu)造
public:
CRecoveryMovieDlg(CWnd* pParent = NULL);// 標(biāo)準(zhǔn)構(gòu)造函數(shù)
// 對(duì)話框數(shù)據(jù)
enum { IDD = IDD_RECOVERYMOVIE_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX);// DDX/DDV 支持
// 實(shí)現(xiàn)
protected:
HICON m_hIcon;
// 生成的消息映射函數(shù)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
public:
CBitmapButton m_buttonstart;
CBitmapButton m_buttonfix;
CBitmapButton m_buttonexit;
};第六步:此時(shí)雖然你能運(yùn)行程序,但是按鈕背景依然沒(méi)有,,因?yàn)槟氵€需要分別設(shè)置三個(gè)按鈕的屬性“Owner Draw”為T(mén)rue,它指定按鈕為所有者描述的按鈕。
運(yùn)行結(jié)果如下圖所示:
?
最后希望文章對(duì)大家有所幫助,如果文章中有不足之處或錯(cuò)誤的地方,還請(qǐng)海涵!個(gè)人推薦初學(xué)者尤其很多老師布置作業(yè)需要用MFC完成的可以學(xué)習(xí),沒(méi)有什么語(yǔ)言流行,它們都是貫通的,都需要一步一個(gè)腳印的去學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的mfc让图片与按钮一起_MFC 基础知识:对话框背景添加图片和按钮Button添加图片...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java语言中的数据类型_Java语言中
- 下一篇: mysql实验总结范文_数据库课程设计实