欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門(mén)教程網(wǎng)!

C語(yǔ)言

當(dāng)前位置:主頁(yè) > 軟件編程 > C語(yǔ)言 >

自己簡(jiǎn)單封裝的一個(gè)CDialog類(lèi)實(shí)例

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語(yǔ)言|點(diǎn)擊: 次

本文實(shí)例講述了自己簡(jiǎn)單封裝的一個(gè)CDialog類(lèi)實(shí)例。分享給大家供大家參考。具體如下:

該代碼比較短小,實(shí)現(xiàn)了消息映射。

Dialog.h頭文件如下:

#include <windows.h>
class CDialog
{
public:
 //一條消息所包含的信息
 struct MAP
 {
  UINT Msg;
  bool (*pf)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
  int len;
  MAP *pNext;
 };
public:
 WORD m_wRes;//Dialog資源的ID
 //頭、尾指針,用來(lái)操作消息列表
 static MAP *m_pHead;
 MAP *m_pEnd;
public:
 bool Show(HINSTANCE,HWND);
 void AddMsg(bool (*fp)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam),UINT);
 static bool OnClose(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
 static bool OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
 CDialog();
private:
 static INT_PTR CALLBACK DialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam);
 void InitMap();
};
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);

Dialog.cpp源文件如下:

#include "Dialog.h"
CDialog* pThis;//保存基類(lèi)指針
CDialog::MAP* CDialog::m_pHead = NULL;
//窗口過(guò)程函數(shù)
INT_PTR CDialog::DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 //遍歷消息列表以查找是否有相應(yīng)的響應(yīng)函數(shù)
 CDialog::MAP* pTemp = m_pHead;
 for(int i = 1;i <= m_pHead->len;++i)
 {
  if(uMsg == pTemp->Msg)
  {
   pTemp->pf(hwndDlg,uMsg,wParam,lParam);
   return FALSE;
  }
  pTemp = pTemp->pNext;
 }
 return FALSE;
}
//創(chuàng)建消息列表
void CDialog::InitMap()
{
 m_pHead = new MAP;
 m_pHead->len = 2;
 m_pHead->Msg = WM_CLOSE;
 m_pHead->pf = OnClose;
 MAP *pNew = new MAP;
 pNew->Msg = WM_INITDIALOG;
 pNew->pf = OnInit;
 pNew->pNext = NULL;
 m_pHead->pNext = pNew;
 m_pEnd = pNew;
}
//消息響應(yīng)函數(shù)
bool CDialog::OnClose(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 EndDialog(hwndDlg,0);
 return true;
}
CDialog::CDialog()
{
 InitMap();
}
//程序入口函數(shù)
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
 pThis->Show(hInstance,NULL);
 return 0;
}
//顯示Dialog
bool CDialog::Show(HINSTANCE hIns,HWND hParent)
{
 DialogBox(hIns,MAKEINTRESOURCE(m_wRes),hParent,DialogProc);
 return true;
}
//由子類(lèi)重寫(xiě)此函數(shù)以在對(duì)話(huà)框初始化時(shí)進(jìn)行一些操作
bool CDialog::OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 return true;
}
//向消息列表中增加消息
void CDialog::AddMsg(bool (*fp)(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam),UINT uMsg)
{
 MAP *pNew = new MAP;
 pNew->Msg = uMsg;
 pNew->pf = fp;
 pNew->pNext = NULL;
 m_pEnd->pNext = pNew;
 m_pEnd = pNew;

 ++m_pHead->len;
}

使用時(shí),只需要把這2個(gè)文件包含進(jìn)去,用資源編輯器創(chuàng)建一個(gè)Dialog,然后再自己寫(xiě)一個(gè)類(lèi),繼承我的CDialog類(lèi),把m_wRes這個(gè)成員變更設(shè)為你創(chuàng)建的Dialog的ID,再extern一個(gè)全局變量m_pThis并把this指針賦給它就可以了。

要增加消息響應(yīng)函數(shù)的話(huà),只要在你的類(lèi)的構(gòu)造函數(shù)里調(diào)用AddMsg()這個(gè)函數(shù),然后再寫(xiě)你的消息響應(yīng)函數(shù)就好了。

AddMsg有兩個(gè)參數(shù),第一個(gè)參數(shù)是你的消息響應(yīng)函數(shù)名,第二個(gè)參數(shù)是你要響應(yīng)的消息。

示例如下:

#include "MyDlg.h"
#include "resource.h"
//定義一個(gè)指向CDialog的指針并在下面的構(gòu)造函數(shù)中賦值為this
extern CDialog* pThis;
MyDlg App;
MyDlg::MyDlg()
{
 m_wRes = IDD_DIALOG1;
 pThis = this;
 AddMsg(OnCommand,WM_COMMAND);
}
//WM_COMMAND消息響應(yīng)函數(shù)
bool MyDlg::OnCommand(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
 MessageBox(hwndDlg,"","",0);
 return true;
}
//WM_INITDIALOG消息響應(yīng)函數(shù)
bool MyDlg::OnInit(HWND hwndDlg,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
 MessageBox(hwndDlg,"","",0);
 return true;
}

希望本文所述對(duì)大家基于MFC的win32程序設(shè)計(jì)有所幫助。

上一篇:VC創(chuàng)建DLL動(dòng)態(tài)鏈接庫(kù)的方法

欄    目:C語(yǔ)言

下一篇:C++實(shí)現(xiàn)優(yōu)酷土豆去視頻廣告的方法

本文標(biāo)題:自己簡(jiǎn)單封裝的一個(gè)CDialog類(lèi)實(shí)例

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3080.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有