最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VC動(dòng)態(tài)生成菜單項(xiàng)的實(shí)現(xiàn)方法

 更新時(shí)間:2014年08月01日 09:01:05   投稿:shichen2014  
這篇文章主要介紹了VC動(dòng)態(tài)生成菜單項(xiàng)的實(shí)現(xiàn)方法,在桌面應(yīng)用程序開(kāi)發(fā)中常會(huì)用到的一個(gè)功能,需要的朋友可以參考下

本例所述為使用VC編寫(xiě)的一個(gè)可以動(dòng)態(tài)生成菜單項(xiàng)的類(lèi)文件,這里展示的是其核心代碼,代碼備有比較詳細(xì)的注釋?zhuān)鄬?duì)而言理解起來(lái)并不復(fù)雜。

主要功能代碼如下:

#include "stdafx.h"
#include "Test.h"
#include "TestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于應(yīng)用程序“關(guān)于”菜單項(xiàng)的 CAboutDlg 對(duì)話(huà)框

class CAboutDlg : public CDialog
{
public:
 CAboutDlg();

// 對(duì)話(huà)框數(shù)據(jù)
 enum { IDD = IDD_ABOUTBOX };

 protected:
 virtual void DoDataExchange(CDataExchange* pDX);  // DDX/DDV 支持

// 實(shí)現(xiàn)
protected:
 DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()

// CTestDlg 對(duì)話(huà)框
CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CTestDlg::IDD, pParent)
{
 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
 ON_WM_SYSCOMMAND()
 ON_WM_PAINT()
 ON_WM_QUERYDRAGICON()
 //}}AFX_MSG_MAP
 ON_BN_CLICKED(IDC_BTNADDSYSTEMMENU, OnBnClickedBtnaddsystemmenu)
END_MESSAGE_MAP()

// CTestDlg 消息處理程序
BOOL CTestDlg::OnInitDialog()
{
 CDialog::OnInitDialog();

 // 將\“關(guān)于...\”菜單項(xiàng)添加到系統(tǒng)菜單中。

 // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。
 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
 ASSERT(IDM_ABOUTBOX < 0xF000);

 CMenu* pSysMenu = GetSystemMenu(FALSE);
 if (pSysMenu != NULL)
 {
 CString strAboutMenu;
 strAboutMenu.LoadString(IDS_ABOUTBOX);
 if (!strAboutMenu.IsEmpty())
 {
  pSysMenu->AppendMenu(MF_SEPARATOR);
  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
 }
 }

 // 設(shè)置此對(duì)話(huà)框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對(duì)話(huà)框時(shí),框架將自動(dòng)
 // 執(zhí)行此操作
 SetIcon(m_hIcon, TRUE);  // 設(shè)置大圖標(biāo)
 SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標(biāo)

 // TODO:在此添加額外的初始化代碼
 
 return TRUE; // 除非設(shè)置了控件的焦點(diǎn),否則返回 TRUE
}

void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
 if(nID==ID_FILE_OPEN)
 {
 MessageBox("測(cè)試添加系統(tǒng)菜單功能","信息提示",MB_OK);
 }
 else if ((nID & 0xFFF0) == IDM_ABOUTBOX)
 {
 CAboutDlg dlgAbout;
 dlgAbout.DoModal();
 }
 else
 {
 CDialog::OnSysCommand(nID, lParam);
 }
}

// 如果向?qū)υ?huà)框添加最小化按鈕,則需要下面的代碼
// 來(lái)繪制該圖標(biāo)。對(duì)于使用文檔/視圖模型的 MFC 應(yīng)用程序,
// 這將由框架自動(dòng)完成。

void CTestDlg::OnPaint() 
{
 if (IsIconic())
 {
 CPaintDC dc(this); // 用于繪制的設(shè)備上下文

 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

 // 使圖標(biāo)在工作矩形中居中
 int cxIcon = GetSystemMetrics(SM_CXICON);
 int cyIcon = GetSystemMetrics(SM_CYICON);
 CRect rect;
 GetClientRect(&rect);
 int x = (rect.Width() - cxIcon + 1) / 2;
 int y = (rect.Height() - cyIcon + 1) / 2;

 // 繪制圖標(biāo)
 dc.DrawIcon(x, y, m_hIcon);
 }
 else
 {
 CDialog::OnPaint();
 }
}

//當(dāng)用戶(hù)拖動(dòng)最小化窗口時(shí)系統(tǒng)調(diào)用此函數(shù)取得光標(biāo)顯示。
HCURSOR CTestDlg::OnQueryDragIcon()
{
 return static_cast<HCURSOR>(m_hIcon);
}

void CTestDlg::OnBnClickedBtnaddsystemmenu()
{
 CMenu *pMenu=GetSystemMenu(FALSE);
 pMenu->AppendMenu(0,ID_FILE_OPEN,"顯示提示信息");
 MessageBox("增加系統(tǒng)菜單操作成功!","信息提示",MB_OK);
}

相關(guān)文章

  • C++:函數(shù)對(duì)象,STL提供的函數(shù)對(duì)象,函數(shù)適配器詳解

    C++:函數(shù)對(duì)象,STL提供的函數(shù)對(duì)象,函數(shù)適配器詳解

    這篇文章主要介紹了C++:函數(shù)對(duì)象,STL提供的函數(shù)對(duì)象,函數(shù)適配器的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-08-08
  • Visual C++ 常用數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法詳解

    Visual C++ 常用數(shù)據(jù)類(lèi)型轉(zhuǎn)換方法詳解

    本文純粹是總結(jié)一下有關(guān)類(lèi)型轉(zhuǎn)換的貼子,需要的朋友可以參考下
    2017-06-06
  • 詳解Matlab中自帶的Java操作合集

    詳解Matlab中自帶的Java操作合集

    其實(shí)Matlab中也有一些自帶的Java操作,例如:獲取鼠標(biāo)在全屏位置、獲取當(dāng)前剪切板內(nèi)容、獲取鼠標(biāo)處像素顏色等,本文總結(jié)了七個(gè)這樣的操作,感興趣的可以了解一下
    2022-03-03
  • 深入詳解C編寫(xiě)Windows服務(wù)程序的五個(gè)步驟

    深入詳解C編寫(xiě)Windows服務(wù)程序的五個(gè)步驟

    本篇文章介紹了,使用C編寫(xiě)Windows服務(wù)程序的五個(gè)步驟的詳細(xì)概述。需要的朋友參考下
    2013-05-05
  • C++中的多態(tài)與多重繼承實(shí)現(xiàn)與Java的區(qū)別

    C++中的多態(tài)與多重繼承實(shí)現(xiàn)與Java的區(qū)別

    這篇文章主要介紹了C++中的多態(tài)與多重繼承實(shí)現(xiàn)與Java的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • c++實(shí)現(xiàn)堆排序的示例代碼

    c++實(shí)現(xiàn)堆排序的示例代碼

    本文主要介紹了c++實(shí)現(xiàn)堆排序的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C++超詳細(xì)講解強(qiáng)制類(lèi)型轉(zhuǎn)換

    C++超詳細(xì)講解強(qiáng)制類(lèi)型轉(zhuǎn)換

    在C++語(yǔ)言中新增了四個(gè)關(guān)鍵字static_cast、const_cast、reinterpret_cast和dynamic_cast。這四個(gè)關(guān)鍵字都是用于強(qiáng)制類(lèi)型轉(zhuǎn)換的
    2022-05-05
  • C語(yǔ)言學(xué)習(xí)之函數(shù)知識(shí)總結(jié)

    C語(yǔ)言學(xué)習(xí)之函數(shù)知識(shí)總結(jié)

    函數(shù)是一組一起執(zhí)行一個(gè)任務(wù)的語(yǔ)句。每個(gè)?C?程序都至少有一個(gè)函數(shù),即主函數(shù)?main()?,所有簡(jiǎn)單的程序都可以定義其他額外的函數(shù)。本文就為大家詳細(xì)講講C語(yǔ)言中函數(shù)的相關(guān)知識(shí)點(diǎn),希望有所幫助
    2022-07-07
  • C++的std::transform()的實(shí)現(xiàn)

    C++的std::transform()的實(shí)現(xiàn)

    在 C++ 標(biāo)準(zhǔn)庫(kù)中,std::transform() 是一個(gè)非常有用的算法函數(shù),它能夠?qū)⒔o定范圍中的每個(gè)元素進(jìn)行變換,并將變換后的結(jié)果存儲(chǔ)到另一個(gè)范圍中,本文就詳細(xì)的介紹一下具體用法,感興趣的可以了解一下
    2023-08-08
  • C語(yǔ)言中關(guān)于指針變量的坑

    C語(yǔ)言中關(guān)于指針變量的坑

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中關(guān)于指針變量坑的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評(píng)論

灵璧县| 靖西县| 益阳市| 平定县| 农安县| 邳州市| 万安县| 天长市| 宁武县| 中西区| 天峻县| 巴楚县| 巴林左旗| 双鸭山市| 定兴县| 泗阳县| 嘉义市| 台南市| 巫溪县| 蒙阴县| 建瓯市| 苏州市| 台北县| 颍上县| 工布江达县| 大方县| 呼和浩特市| 马山县| 连云港市| 商南县| 定安县| 建始县| 广东省| 樟树市| 靖边县| 平度市| 邯郸县| 嫩江县| 泰和县| 宜都市| 花莲市|