欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

// 用于應用程序“關于”菜單項的 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();

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

 // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內。
 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);
 }
 }

 // 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
 // 執(zhí)行此操作
 SetIcon(m_hIcon, TRUE);  // 設置大圖標
 SetIcon(m_hIcon, FALSE); // 設置小圖標

 // TODO:在此添加額外的初始化代碼
 
 return TRUE; // 除非設置了控件的焦點,否則返回 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);
 }
}

// 如果向對話框添加最小化按鈕,則需要下面的代碼
// 來繪制該圖標。對于使用文檔/視圖模型的 MFC 應用程序,
// 這將由框架自動完成。

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

 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)調用此函數(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);
}

相關文章

  • C語言實現(xiàn)打印數(shù)組以及打印注意事項說明

    C語言實現(xiàn)打印數(shù)組以及打印注意事項說明

    這篇文章主要介紹了C語言實現(xiàn)打印數(shù)組以及打印注意事項說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • C++使用模板實現(xiàn)單鏈表

    C++使用模板實現(xiàn)單鏈表

    這篇文章主要為大家詳細介紹了C++使用模板實現(xiàn)單鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C語言中用于產生隨機數(shù)的函數(shù)使用方法總結

    C語言中用于產生隨機數(shù)的函數(shù)使用方法總結

    這篇文章主要介紹了C語言中用于產生隨機數(shù)的函數(shù)使用方法總結,分別介紹了rand()函數(shù)和srand()函數(shù)以及封裝出的arc4random()函數(shù),需要的朋友可以參考下
    2016-05-05
  • C++修煉之拷貝構造函數(shù)

    C++修煉之拷貝構造函數(shù)

    這篇文章主要內容是6個默認成員函數(shù)之一的拷貝構造函數(shù)的認識與學習,讓同學們充分理解淺拷貝與深拷貝,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • C++函數(shù)的嵌套調用和遞歸調用學習教程

    C++函數(shù)的嵌套調用和遞歸調用學習教程

    這篇文章主要介紹了C++函數(shù)的嵌套調用和遞歸調用學習教程,是C++入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C++編程中指針的聲明與基本使用講解

    C++編程中指針的聲明與基本使用講解

    這篇文章主要介紹了詳解C++編程中C++編程中指針的聲明與基本使用講解,文中舉了簡單的例子來講如何在基本的數(shù)據(jù)結構中使用指針,以及固定和可變指針的介紹,需要的朋友可以參考下
    2016-01-01
  • Qt中互斥鎖QMutex和QMutexLocker的使用

    Qt中互斥鎖QMutex和QMutexLocker的使用

    本文主要介紹了Qt中互斥鎖QMutex和QMutexLocker的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-05-05
  • C++?STL反向迭代器的實現(xiàn)

    C++?STL反向迭代器的實現(xiàn)

    本文主要介紹了C++?STL反向迭代器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Qt數(shù)據(jù)庫應用之超級自定義委托

    Qt數(shù)據(jù)庫應用之超級自定義委托

    Qt中需要用到自定義委托的情形很多,比如提供下拉框選擇,進度條展示下載進度啥的,默認的單元格是沒有這些效果的,需要自己單獨用委托的形式來展示。本文將為大家介紹Qt中如何進行超級自定義委托,需要的可以參考一下
    2022-03-03
  • 淺談C語言之字符串處理函數(shù)

    淺談C語言之字符串處理函數(shù)

    下面小編就為大家?guī)硪黄獪\談C語言之字符串處理函數(shù)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論