收录日期:2021/01/19 08:05:04 时间:2016/05/22 22:52:03 标签:基础类
c的入口是main()
Win32 Application的入口是winmain()
请问MFC的入口是什么?
winmain(),不过被藏起来了,看不到。
MFC不过是一些类的集合,它不存在什么入口。应该说用MFC编写的Win32应用程序的入口是WinMain(......)才对。
还有那个应用程序全局变量也很重要
/////////////////////////////////////////////////////////////////////////////
// Standard WinMain implementation
//  Can be replaced as long as 'AfxWinInit' is called first

int AFXAPI AfxWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
ASSERT(hPrevInstance == NULL);

int nReturnCode = -1;
CWinThread* pThread = AfxGetThread();
CWinApp* pApp = AfxGetApp(); //通过全局函数获取你的程序指针,然后
                                       //通过虚拟函数进行调用InitInstance
 
// AFX internal initialization
if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow))
goto InitFailure;

// App global initializations (rare)
if (pApp != NULL && !pApp->InitApplication())
goto InitFailure;

// Perform specific initializations
if (!pThread->InitInstance())
{
if (pThread->m_pMainWnd != NULL)
{
TRACE0("Warning: Destroying non-NULL m_pMainWnd\n");
pThread->m_pMainWnd->DestroyWindow();
}
nReturnCode = pThread->ExitInstance();
goto InitFailure;
}
nReturnCode = pThread->Run();

InitFailure:
#ifdef _DEBUG
// Check for missing AfxLockTempMap calls
if (AfxGetModuleThreadState()->m_nTempMapLock != 0)
{
TRACE1("Warning: Temp map lock count non-zero (%ld).\n",
AfxGetModuleThreadState()->m_nTempMapLock);
}
AfxLockTempMaps();
AfxUnlockTempMaps(-1);
#endif

AfxWinTerm();
return nReturnCode;
}
在winmain.cpp里面
创建应用程序对象。
theApp
基本同意 codelover(蜡笔小钦),不过C++语言先构造全局变量(theApp)应该先从他的构造函数开始。在你的程序中一般先从InitInstance(),InitDialog()函数中作一些初始动作。
codelover(蜡笔小钦) 基本正确
extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
// call shared/exported WinMain
return AfxWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
}
codelover(蜡笔小钦)的分析不免有“用复杂问题去解决复杂问题”之嫌,应该用Win32应用程序去分析MFC应用程序,而不能用MFC应用程序自身去解剖它自己。
mfc不过是winapi被用c++类封装起来了。实质还是win32,所以就是winmain是入口。

如何将二进制数据转换为字符串? 请问System.Data.oleDb.oleDbCommand 的parameters属性有什么用? 求magic winmail3.0的注册码。能告诉我的话要分随时给 哪里有 sqlserver 2000 sqlxml 安全设置方面的资料 请问如何动态改变xml文件的PI? 请问如何得到系统目录?如:win98 为c:\\windows\\system,win2000为d:\\winnt\\system32? 100分求解密 初学vb,请教4个小问题: 我只学过一点VFP,怎样才能学好C++和BCB? 为什么MSDN上可以找到的函数在头文件中找不到?up有分 求助:TreeView1与数据库连接问题 写端口信息[WriteFile(hComm]总是返回零字节,写端口失败,急求原因!!! 大家帮忙看看,为什么会出现这个问题? 使用一个控件可否不用id,用名称,因为控件自写,老要改,一改id变,名称不变 请问各位大虾:一个select查询问题,问题简单请不要笑。 如何在(RedHat)lunix 9.0 下安装声卡驱动程序? 请问如何统计一个数据的有效期。比如到了一个月后提醒到时间了。 在数据窗口中,长字符列,如何在本列中自动换行?急在线等候 在websnap中怎样通过程序实现下载另外一台机子的文件(通过映射盘)? 怎么样共享一个dll中的数据和函数? ODBC错误?还是ADODB错误! 刚毕业,诚心请教网络方面考什么认证比较好。 Applet中的Static变量问题 紧急求救!!!! 关于ADO与数据库连接的问题 生成工程后的程序发布问题 有关session的问题,搞了一下午了没有搞定 关于javabean中连接数据库的问题,真苦恼啊 初学者的迷惑...... 请各位指点:在exec中调用变量就不对-----------------waiting!!! csdn论坛不能自动登陆吗??