ç¨MFCå¶ä½çå·¥ç¨ç±å¾å¤æ件ææï¼å®ä¸è½è±¡ä¸è¬C++ç¨åºé£æ ·éæå¨ç±»å¤å®ä¹å
¨å±åéï¼å¨è¿éè¦æ³å®ä¹è½è¢«å·¥ç¨å
å¤ä¸ªæ件å
±äº«çå
¨å±åéåå½æ°å¿
é¡»ç¨ä¸äºç¹æ®æ¹æ³æè¡ãå®é
ä¸æå¤ç§æ¹æ³å¯ä»¥å®ç°ï¼è¿éåªä»ç»ä¸¤ç§æ¹æ³ã
ä¸ãå¨åºç¨ç¨åºç±»ä¸å®ä¹
ç¨MFCçæçå·¥ç¨ä¸é½æä¸ä¸ªå为CxxxAppçç±»ï¼å®æ´¾çäºCWinAppç±»ãè¿ä¸ªç±»ä¸»è¦è¿è¡ç¨åºçåå§åï¼çæææ¡£ãè§å¾å¯¹è±¡çå·¥ä½ãæ们å¯ä»¥æéè¦å
¨å±è®¿é®çåéåå½æ°å®ä¹ä¸ºè¿ä¸ªç±»çæååéåæåå½æ°ï¼å°±å¯ä»¥å®ç°å
¨å±è®¿é®äºã
ä»ä¸¥æ ¼æä¹ä¸è®²ï¼è¿ç§åéåå½æ°å¹¶ä¸æ¯å
¨å±çï¼å 为å®ä»ç¶åªæ¯ç±»ä¸çæåï¼åªæ¯ç±äºæ们å¾å®¹æè·å¾CxxxAppç±»çæéï¼æ以æ们å¯ä»¥å¨ææ¡£ãè§
å¾ã对è¯æ¡ä»¥ååç§èªå®ä¹ç±»ä¸è®¿é®å°å®ä»¬ï¼è¾¾å°ä¸å
¨å±åé类似çææã访é®æ¶ç¨å½æ°âAfxGetApp()âè·å¾CxxxAppç±»çæéï¼ç¨
âAfxGetApp()->æåâ访é®åéæå½æ°ã
ä¾ï¼
Test.hï¼ï¼åºç¨ç¨åºç±»å¤´æ件ï¼
class CTestApp : public CWinApp
{
public:
int x; //å
¨å±åé
int f(int y); //å
¨å±å½æ°
â¦â¦â¦â¦
};
Test.cppï¼ï¼åºç¨ç¨åºç±»ç¨åºæ件ï¼
int CTestApp::f(int y) //å
¨å±å½æ°å®ä¹
{
y++;
return y;
}
å®ä¹å¨CTestAppç±»ä¸çåéåå½æ°å¯ä»¥å¨å
¶å®ç±»ä¸è¢«è®¿é®ãæ¯å¦å¨è§å¾çæå½æ°ä¸è¦è®¿é®åéxåå½æ°f()ï¼
void CTestView::xyz()
{
CTestApp *app = (CTestApp *)AfxGetApp(); //çææååºç¨ç¨åºç±»çæé
app->x = 0; //访é®åéx
int z = app->f(1); //访é®å½æ°f()
â¦â¦â¦â¦
}
è¿æ ·ï¼åéxåå½æ°f()å¯ä»¥è§ä½ä¸ºå
¨å±çã
ç¨è¿ç§æ¹æ³å®ç°çå
¨å±åéåå
¨å±å½æ°è½æ¯è¾ç®åï¼ä½ä¹æ缺ç¹ï¼ä¸æ¯è®¿é®ä¸å¤ªæ¹ä¾¿ï¼æ¯æ¬¡é½éè¦è·ååºç¨ç¨åºç±»çæéï¼åå°±æ¯æä¸äºä¸åºç¨ç¨åºç±»æ¬èº«æ å
³çåéåå½æ°æ¾å¨éé¢ï¼ä½¿è¿ä¸ªç±»çä¸å»æªæªçï¼ç ´åäºç±»çå°è£
ã
äºãç¨éæåéåéæå½æ°å®ç°
å¾å欢APIå½æ°çé£ç§è°ç¨æ¹æ³ï¼ä¸è®ºå¨åªä¸ªç±»ä¸åªè¦ç¨â::APIå½æ°âå°±å¯ä»¥è°ç¨äºãåçå©ç¨éæç±»å(static)å¯ä»¥å®ç°ä¸æ¤ç¸ä¼¼çå
¨å±åéåå
¨å±å½æ°ã
éæåéåéæå½æ°æå¦ä¸æ§è´¨ï¼
è¥å¨ä¸ä¸ªç±»ä¸ç¨å
³é®åstatic声ææ°æ®æåï¼åè¿ä¸ªæ°æ®æåå°±åªåå¨ä¸ä¸ªæ·è´ï¼æ 论该类å建äºå¤å°ä¸ªå®ä¾ï¼å®å§ç»åªåå¨ä¸ä¸ªï¼å³ä½¿è¯¥ç±»çå®ä¾ä¸ä¸ªä¹æ²¡å建ï¼å®ä¹åå¨ã
è¥å¨ä¸ä¸ªç±»ä¸ç¨å
³é®åstatic声æå½æ°ï¼è¯¥å½æ°å¯ä»¥ç¨âç±»å::å½æ°åâæ¹å¼è®¿é®ï¼æ éå¼ç¨è¯¥ç±»çå®ä¾ï¼çè³è¿ä¸ªç±»çå®ä¾å¯ä»¥ä¸åå¨ã
å©ç¨è¿ä¸ªæ§è´¨å®ç°çå
¨å±åéåå½æ°ä½¿ç¨èµ·æ¥å¾æ¹ä¾¿ã
å¼å¾æ³¨æçæ¯ï¼å
¨å±åéåå
¨å±å½æ°æ好éä¸å°è£
ï¼ä¸è¦å¨ææ¡£ãè§å¾çç±»å
é¨å®ä¹ï¼è¿æ ·ç¨èµ·æ¥ææå
¨å±çæè§ã
ä¾ï¼
1ãæ·»å ä¸ä¸ªæ²¡æåºç±»çæ°ç±»ï¼è®¾ç±»å起为CPublicï¼å§ä¸ç§°ä¹ä¸ºå
¬ç¨ç±»
åå»âInsertâèåä¸çâNew Classâå½ä»¤ï¼éæ©âClass typeâ为âGeneric Classâï¼å¨âNameâæ ä¸å¡«å
¥ç±»åâCPublicâï¼åå»âOKâï¼åæ°ç±»å»ºç«å®æ¯ã
2ãå
å«å
¬ç¨ç±»ç头æ件ï¼ä½¿å个类é½è½è®¿é®å®
CPublicç头æ件åºå
å«å¨åºç¨ç¨åºç±»ç头æ件ä¸ï¼è¿æ ·å¨å
¶å®ç±»ä¸å¼ç¨CPublicç±»æ¶å°±ä¸éè¦åå
å«äºã
Test.hï¼ï¼åºç¨ç¨åºç±»å¤´æ件ï¼
#include "Public.h" //å
å«å
¬ç¨ç±»å¤´æ件
class CTestApp : public CWinApp
{
â¦â¦â¦â¦
};
3ãå¨å
¬ç¨ç±»ä¸å®ä¹å
¨å±åéåå
¨å±å½æ°ï¼å使ç¨static修饰ï¼éæåéè¿å¿
é¡»å¨ç±»å¤å®ä¹ååå§å
Public.hï¼ï¼å
¬ç¨ç±»å¤´æ件ï¼
class CPublic
{
public:
CPublic();
virtual ~CPublic();
public:
static int x; //å
¨å±åé
static int time; //å
¨å±åé
static int f(int y); //å
¨å±å½æ°
â¦â¦â¦â¦
}
å¨å
¬ç¨ç±»ä¸å¯¹éæåéè¿è¡åå§ååå®ä¹å½æ°ä½ï¼
Public.cppï¼ï¼å
¬ç¨ç±»ç¨åºæ件ï¼
int CPublic::x = 0; //åå§åå
¨å±åé
int CPublic::time; //å®ä¹å
¨å±åé
CPublic::CPublic()
{
}
CPublic::~CPublic()
{
}
int CPublic::f(int y) //å
¨å±å½æ°ï¼è¿éä¸è¦åå static
{
y++;
return y;
}
4ãå
¨å±éç使ç¨
使ç¨åéï¼CPublic::åéå
使ç¨å½æ°ï¼CPublic::å½æ°()
å¦å¨è§å¾çæå½æ°ä¸è®¿é®åéxåå½æ°f()ï¼
void CTestView::xyz()
{
CPublic::x = 0; //访é®åéx
CPublic::time = CPublic::f(1); //访é®å½æ°f()
â¦â¦â¦â¦
}
å¨å
¶å®ç±»ä¸è®¿é®xãtimeåf()çæ¹æ³ä¸æ¤ç¸åã
5ãå ç¹æ³¨æï¼
â ç±äºéæéå¯ç¬ç«äºç±»åå¨ï¼ä¸éè¦çæCPublicç±»çå®ä¾ã
â¡ éææ°æ®æåçå®ä¹ååå§åå¿
é¡»å¨ç±»å¤è¿è¡ï¼å¦ä¾ä¸xçåå§åï¼åétimeè½ç¶æ²¡æåå§åï¼ä½ä¹å¿
é¡»å¨ç±»å¤è¿è¡å®ä¹ãç±äºæ²¡æçæCPublicç±»çå®ä¾ï¼æ以å®çæé å½æ°åææå½æ°é½ä¸ä¼è¢«æ§è¡ï¼å¨éé¢åä»ä¹å·¥ä½é½æ²¡æä»ä¹æä¹ã
⢠å¦æéæå½æ°éè¦è®¿é®CPublicç±»å
çåéï¼è¿äºåéä¹å¿
须为éæçãå 为ééæéå¨ä¸çæå®ä¾æ¶é½ä¸ä¼åå¨ã å¦ï¼
class CPublic
{
public:
int x; //å
é¨åé
static int f(int y) //å
¨å±å½æ°
{
x++;
return x;
};
â¦â¦â¦â¦
};
è¿éxè½ä¸ºç±»å
æåï¼ä½å¦æä¸çæCPublicç±»çå®ä¾ï¼å°±ä¼åºç°å½æ°f()åå¨ï¼èåéxä¸åå¨çé®é¢ã
温馨提示:答案为网友推荐,仅供参考