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

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

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

本例所述為使用VC編寫的一個可以動態(tài)生成菜單項的類文件,這里展示的是其核心代碼,代碼備有比較詳細的注釋,相對而言理解起來并不復雜。

主要功能代碼如下:

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

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// 用于應用程序“關(guān)于”菜單項的 CAboutDlg 對話框

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

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

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

// 實現(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 對話框
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)于...\”菜單項添加到系統(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è)置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
 // 執(zhí)行此操作
 SetIcon(m_hIcon, TRUE);  // 設(shè)置大圖標
 SetIcon(m_hIcon, FALSE); // 設(shè)置小圖標

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

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

// 如果向?qū)υ捒蛱砑幼钚』粹o,則需要下面的代碼
// 來繪制該圖標。對于使用文檔/視圖模型的 MFC 應用程序,
// 這將由框架自動完成。

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

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

 // 使圖標在工作矩形中居中
 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;

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

//當用戶拖動最小化窗口時系統(tǒng)調(diào)用此函數(shù)取得光標顯示。
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ù)對象,STL提供的函數(shù)對象,函數(shù)適配器詳解

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

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

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

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

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

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

    深入詳解C編寫Windows服務程序的五個步驟

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

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

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

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

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

    C++超詳細講解強制類型轉(zhuǎn)換

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

    C語言學習之函數(shù)知識總結(jié)

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

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

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

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

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

最新評論

康定县| 区。| 积石山| 广宁县| 法库县| 郓城县| 北流市| 读书| 鄱阳县| 西昌市| 旺苍县| 松桃| 客服| 石屏县| 云浮市| 隆回县| 兰考县| 庆阳市| 措勤县| 汕尾市| 徐汇区| 麻栗坡县| 武隆县| 镇江市| 馆陶县| 仁化县| 五峰| 平乐县| 会同县| 郑州市| 高要市| 上栗县| 来宾市| 武夷山市| 黔江区| 阿克苏市| 广水市| 巩留县| 平泉县| 深水埗区| 商河县|