VCL초기화 순서를 정리해 봤습니다.
Dephi2010의 VCL Form Application을
Debug모드에서 실행해서
vcl의 어떤 유닛들이 어떤 순서대로 초기화 되는지 살펴 보았습니다.
SysInit::_InitExe()
{
System::_StartExe()
{
SetExceptionHandler();
System::InitUnits() // 각 유닛 초기화 실행
{
//InitTable에 등록된 함수를 차례대로 호출 해줌
1.System::Initialization
* CpuCount/FpuInit/CmdLine/MainThreadId
2.Windows::Initialization
- os-Check
3.SysUtils::Exception.Create
* InitExceptions
4.SysUtils::initialization
-FormatInit(Locale설정)
5. VarUtils::initialization
6. Variants::initialization
7. TypeInfo( 없음)
8. Classes::TThread.Create;
9. Classes::Initialization
10. IOUtils::TPath.Create
11. IOUtils::Initialization(없음)
12. IniFiles::Initialization(없음)
13. Registry::Initialization(없음)
14. Graphics::Initialization
15. TimeSpan::TTimeSpan.Create
16. SyncObjs::Initiaalization
17. UxTheme::Initialization
18. MultiMon::Initialization
19. ActnList::Initialization
20. Controls::Initialization
* InitControls( Mouse,Screen,Application 초기화)
//여기에서 Mouse나 Screen, Application 등의 전역 객체가 생성됩니다.
21. Themes::Initialization(없음)
22. Menus::Initialization
23. HelfIntfs::Initialization(없음)
24. FlatSB::Initialization
25. Printers::Initialization(없음)
26. GraphUtil::Initialization
27. ExtCtrls::Initialization
28. ComCtrls::Initialization
29. Dialogs::Initialization
30. ClipBrd::Initialization
31. Forms::Initialization
}
}
}
WinMain();//Delphi(begin~end)
위 순서를 굳이 정확히 알 필요는 없구요
WinMain이 호출되기 전에
위와같은 초기화 과정이 호출된다는것 정보만 알고계시면 될듯 합니다.
그럼..
|