日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

MFC 对话框小总结

發(fā)布時間:2025/5/22 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC 对话框小总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡單記錄一下,以備日后用到,參數(shù)就忽略了,用的時候直接MSDN好了~

下列內(nèi)容可參考:http://blog.csdn.net/yc_8301/article/details/2570951

        http://www.cnblogs.com/Totems/archive/2012/07/11/2586841.html

        http://wmnmtm.blog.163.com/blog/static/38245714200810265737699/

1.獲取和設(shè)定窗口信息

  GetDlgItem( ID... ) 獲取ID窗口的句柄

  CWnd::GetWindowText(str...)獲取窗口內(nèi)的信息

  CWnd::SetWindowText(str...)設(shè)置窗口內(nèi)的信息

  CWnd::GetWindowTextLength(str...) 獲取窗口內(nèi)信息的長度

2.屏蔽回車和ESC鍵直接退出程序

? ? 這里使用的方法很簡單,就是增加虛函數(shù)OnOk和OnCancel把這兩個函數(shù)的內(nèi)容設(shè)置成空函數(shù)。

  步驟,在類中分別添加黃色部分,然后在.cpp文件中對這兩個函數(shù)分別實現(xiàn)為空函數(shù)。

  

// Generated message map functions//{{AFX_MSG(CHwDlg)virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();afx_msg void OnClose(); afx_msg void OnOK();afx_msg void OnCancel();afx_msg void OnOk1();afx_msg void OnCancel1();afx_msg void OnButton1();//}}AFX_MSG DECLARE_MESSAGE_MAP() };

3.在BUTTON上設(shè)置位圖

  在BUTTON屬性上,把樣式中的所有者繪制和位圖都勾選上。然后,我們要選擇兩個圖標(biāo),這里我就直接用程序自帶的位圖編輯器自己編輯了兩個位圖。

然后修改DoDataExchange(...)內(nèi)容,以及OnInitDialog(...)函數(shù)。

void CHwDlg::DoDataExchange(CDataExchange* pDX) {CDialog::DoDataExchange(pDX);DDX_Control( pDX, IDC_BUTTON1, m_BitmapBtn ); //{{AFX_DATA_MAP(CHwDlg)//}}AFX_DATA_MAP } BOOL CHwDlg::OnInitDialog() {CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.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);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_BitmapBtn.LoadBitmaps(IDB_BITMAP2,IDB_BITMAP1); return TRUE; // return TRUE unless you set the focus to a control }

?

?

4.把enter鍵換為tab鍵同樣的功能

  重載PreTranslateMessage(...)函數(shù),如下,我們截取按鍵消息,來實現(xiàn)控件焦點的轉(zhuǎn)移。

BOOL CHwDlg::PreTranslateMessage(MSG* pMsg)?

{
? ? ?// TODO: Add your specialized code here and/or call the base class
? ? if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
? ? {
? ? ? ? CWnd *mwnd = GetNextDlgTabItem (GetFocus()); //取得當(dāng)前焦點控件的下一個控件的句柄
? ? ? ? if (mwnd)
? ? ? ? {
? ? ? ? ? ? ?mwnd->SetFocus(); //設(shè)置下一件控件得到輸入焦點
? ? ? ? ? ? ?return TRUE;
? ? ? ? }
? ? }

? ? return CDialog::PreTranslateMessage(pMsg);
}

總結(jié)

以上是生活随笔為你收集整理的MFC 对话框小总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。