Отредактировано OP.
Моя программа нуждается в большой очистке и реструктуризации.
В другом посте я спросил о том, чтобы покинуть среду MFC DocView и перейти к циклу WinProc & Message Loop (как это называется для краткости?). Ну, в настоящее время я думаю, что я должен очистить то, что у меня есть в Doc View и, возможно, позже преобразовать его в не-MFC, что даже имеет смысл. В моем классе Document сейчас нет ничего полезного.
Я думаю, что начинать нужно с функции InitInstance () (опубликовано ниже).
В этой части:
POSITION pos=pDocTemplate->GetFirstDocPosition();
CLCWDoc *pDoc=(CLCWDoc *)pDocTemplate->GetNextDoc(pos);
ASSERT_VALID(pDoc);
POSITION vpos=pDoc->GetFirstViewPosition();
CChildView *pCV=(CChildView *)pDoc->GetNextView(vpos);
Это кажется странным для меня. У меня только один документ и один вид. Я чувствую, что я иду об этом в обратном направлении с GetNextDoc () и GetNextView (). Пытаться использовать глупую аналогию; Как будто у меня в руке книга, но я должен посмотреть в ее указателе, чтобы выяснить, на какой странице находится название книги. Я устал чувствовать смущение по поводу моего кода. Мне либо нужна коррекция, либо уверенность, либо и то и другое. :)
Кроме того, все разные предметы находятся в произвольном порядке. Я хотел бы изменить их порядок, который может быть более стандартным, структурированным или простым.
ВСЕ предложения приветствуются!
BOOL CLCWApp::InitInstance()
{
InitCommonControls();
if(!AfxOleInit())
return FALSE;
// Initialize the Toolbar dll. (Toolbar code by Nikolay Denisov.)
InitGuiLibDLL(); // NOTE: insert GuiLib.dll into the resource chain
SetRegistryKey(_T("Real Name Removed"));
// Register document templates
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CLCWDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CChildView));
AddDocTemplate(pDocTemplate);
// Parse command line for standard shell commands, DDE, file open
CCmdLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
// Dispatch commands specified on the command line
// The window frame appears on the screen in here.
if (!ProcessShellCommand(cmdInfo))
{
AfxMessageBox("Failure processing Command Line");
return FALSE;
}
POSITION pos=pDocTemplate->GetFirstDocPosition();
CLCWDoc *pDoc=(CLCWDoc *)pDocTemplate->GetNextDoc(pos);
ASSERT_VALID(pDoc);
POSITION vpos=pDoc->GetFirstViewPosition();
CChildView *pCV=(CChildView *)pDoc->GetNextView(vpos);
if(!cmdInfo.m_Fn1.IsEmpty() && !cmdInfo.m_Fn2.IsEmpty())
{
pCV->OpenF1(cmdInfo.m_Fn1);
pCV->OpenF2(cmdInfo.m_Fn2);
pCV->DoCompare(); // Sends a paint message when complete
}
// enable file manager drag/drop and DDE Execute open
m_pMainWnd->DragAcceptFiles(TRUE);
m_pMainWnd->ShowWindow(SW_SHOWNORMAL);
m_pMainWnd->UpdateWindow(); // paints the window background
pCV->bDoSize=true; //Prevent a dozen useless size calculations
return TRUE;
}
Спасибо