应用程序类对象实例初始操作的分析
BOOL CSomeApp::InitInstance()
{
Enable3dControls();
LoadStdProfileSettings();
AddDocTemplate(...) ...... ShowWindow(...);
m_pMainWnd->DragAcceptFiles();
EnableShellOpen();
RegisterShellFileTypes(TRUE);
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
if (!ProcessShellCommand(cmdInfo))
return FALSE;
return TRUE;
}
下面对InitInstance中的一些操作及其流程进行分析
1.常规设置
如:
SetDialogBkColor()
Enable3dControls()..
(如果设置了后者,则前者就不必要了)
SetRegistryKey(指定注册表键,替代INI文件)
2.LoadStdProfileSettings()
LoadStdProfileSettings 完成最近文件列表功能,在菜单中添加最近的文件作为菜单项过程:
建立一个CRecentFileList从注册表或INI文件中读入最近文件列表;
当菜单建立时,文件列表将添加到菜单中ID_FILE_MRU_FILE*位置;
3.m_pMainWnd->DragAcceptFiles()接收文件拖入
使主窗口能响应文件拖入消息WM_DROPFILES;
当有文件拖入时, 框架窗口的OnDropFiles将处理,以打开这些文件。
void CFrameWnd::OnDropFiles(HDROP hDropInfo)
{
SetActiveWindow(); // activate us first !
UINT nFiles = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0);
CWinApp* pApp = AfxGetApp();
ASSERT(pApp != NULL);
for (UINT iFile = 0; iFile < nFiles; iFile++)
{
TCHAR szFileName[_MAX_PATH];
::DragQueryFile(hDropInfo, iFile, szFileName, _MAX_PATH);
//应用程序打开拖入文档
pApp->OpenDocumentFile(szFileName);
}
::DragFinish(hDropInfo);
}
- 上一篇:基于ICMP的木马的编写!!!!!!
- 下一篇:VC学习:虚拟按键的总结及示例