应用程序初始化函数里//m_pMainWnd = &dlg;为什么加这一句?

mirroatl73 2012-12-01 01:57:45


BOOL CCxSkinButtonDemoApp::InitInstance()
{
AfxEnableControlContainer();

// Standard initialization

#ifdef _AFXDLL
Enable3dControls(); // Call this when using MFC in a shared DLL
#else
Enable3dControlsStatic(); // Call this when linking to MFC statically
#endif

CCxSkinButtonDemoDlg dlg;
m_pMainWnd = &dlg;
int nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
}
else if (nResponse == IDCANCEL)
{
}

// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}
...全文
284 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoqingqing 2012-12-03
  • 打赏
  • 举报
回复
m_pMainWnd 你可理解为C程序的main(其实不是)。你建立的是MFC对话框,所以,肯定要找到入口嘛,m_pMainWnd是主窗口指针,可以找到主窗口(窗口有函数入口和对应的函数相应路径)
mirroatl73 2012-12-02
  • 打赏
  • 举报
回复
微软这么做的目的是什么?
引用 2 楼 VisualEleven 的回复:
MSDN上关于m_pMainWnd有段说明: The Microsoft Foundation Class Library will automatically terminate your thread when the window referred to by m_pMainWnd is closed. If this thread is the primary ……
mirroatl73 2012-12-02
  • 打赏
  • 举报
回复
微软这么做的目的是什么?
引用 1 楼 baoyz 的回复:
App文件里的初始化函数。 CCxSkinButtonDemoDlg dlg; //为打开对话框设置一个对话框变量 m_pMainWnd = &dlg; //m_pMainWnd是“Microsoft Visual Studio\VC98\MFC\Include\AFXWIN.H”里的CWinThread类的一个公共变量 //以……
mirroatl73 2012-12-02
  • 打赏
  • 举报
回复
//m_pMainWnd = &dlg;去掉这句话下面if(nResponse == IDOK)语句就会弹出对话框,不去掉这句话,就弹不出来 之前,看msdn的解释是,应用程序线程会代替cwinapp对象,来释放线程?

int nResponse = dlg.DoModal();     //打开对话框
if (nResponse == IDOK)     
{  AfxMessageBox("upspring!");   }     
else if (nResponse == IDCANCEL)     
{     } 
引用 1 楼 baoyz 的回复:
App文件里的初始化函数。 CCxSkinButtonDemoDlg dlg; //为打开对话框设置一个对话框变量 m_pMainWnd = &dlg; //m_pMainWnd是“Microsoft Visual Studio\VC98\MFC\Include\AFXWIN.H”里的CWinThread类的一个公共变量 //以……
Eleven 2012-12-02
  • 打赏
  • 举报
回复 1
MSDN上关于m_pMainWnd有段说明: The Microsoft Foundation Class Library will automatically terminate your thread when the window referred to by m_pMainWnd is closed. If this thread is the primary thread for an application, the application will also be terminated. If this data member is NULL, the main window for the application's CWinApp object will be used to determine when to terminate the thread. m_pMainWnd is a public variable of type CWnd*.
baoyz 2012-12-02
  • 打赏
  • 举报
回复
App文件里的初始化函数。 CCxSkinButtonDemoDlg dlg; //为打开对话框设置一个对话框变量 m_pMainWnd = &dlg; //m_pMainWnd是“Microsoft Visual Studio\VC98\MFC\Include\AFXWIN.H”里的CWinThread类的一个公共变量 //以后直接用m_pMainWnd,就是对话框的CWnd*类句柄了。 int nResponse = dlg.DoModal(); //打开对话框 if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { }
SkinMagicToolkit 一:文件说明 SkinMagicLib.h 必须的头文件,请添到工程中。 SkinMagic.lib + SkinMagic.dll 动态链接库配套使用 编译时需要在工程中添SkinMagic.dll,程序运行时需要SkinMagic.dll 以下版本的编译出来的程序运行时不再依赖SkinMagic.dll SkinMagicLibMD6.lib 静态链接库,用于VC6的Release版编译 SkinMagicLibMT6.lib 静态链接库,用于VC6的Debug版编译 二:使用步骤 1。把SkinMagicLib.h, SkinMagicLibMT6.lib, SkinMagicLibMD6.lib放到你的VC6工程目录下 2。在StdAfx.h中添 #include "SkinMagicLib.h" 3。在工程设置中添对应的库 Win32 Release中填上SkinMagicLibMD6.lib Win32 Debug中填上SkinMagicLibMT6.lib 4。在InitInstance()函数的开始处添初始化SkinMagic资源的代码。 VERIFY(1 == InitSkinMagicLib(AfxGetInstanceHandle(), NULL, NULL, NULL)); 5。在InitInstance()函数载皮肤文件并设置程序皮肤。 你可以选择添皮肤文件到资源中,并编译到程序中。或者程序在运行时动态载皮肤文件 a. 比如添corona.smf,设置资源类型为"SKINMAGIC", 资源ID为IDR_SKIN_CORONA CBossKeyDlg dlg; m_pMainWnd = &dlg; //载SkinMagic皮肤 VERIFY(1 == LoadSkinFromResource(NULL, (LPSTR)IDR_SKIN_CORONA, "SKINMAGIC")); VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame")); VERIFY(1 == SetDialogSkin("Dialog")); int nResponse = dlg.DoModalEx(bStartShow); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } b. 程序在运行时动态载皮肤文件 CBossKeyDlg dlg; m_pMainWnd = &dlg; //载SkinMagic皮肤 VERIFY(1 == LoadSkinFile("corona.smf")); VERIFY(1 == SetWindowSkin(m_pMainWnd->m_hWnd, "MainFrame")); VERIFY(1 == SetDialogSkin("Dialog")); int nResponse = dlg.DoModalEx(bStartShow); if (nResponse == IDOK) { } else if (nResponse == IDCANCEL) { } 6。在ExitInstance()函数中释放SkinMagic资源 //释放SkinMagic资源: ExitSkinMagicLib();

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧