private void MakeProgramEntry(CodeWriter writer) { writer.Write("#include \"stdafx.h\""); writer.NewLine(); writer.Write("#include <Windows.h>"); writer.NewLine(); writer.Write("int init()"); using (writer.NewBlock()) { if (Source.InitEcSectionInfo != null) { for (int i = 0; i < Source.InitEcSectionInfo.InitMethod.Length; i++) { writer.NewLine(); writer.Write(GetCppMethodName(Source.InitEcSectionInfo.InitMethod[i])); writer.Write("();"); writer.AddComment("为{" + Source.InitEcSectionInfo.EcName[i] + "}做初始化"); } } if (Source.Code.MainMethod != 0) { writer.NewLine(); writer.Write("return "); writer.Write(GetCppMethodName(Source.Code.MainMethod)); writer.Write("();"); } else { writer.NewLine(); writer.Write("return e::user::cmd::_启动子程序();"); } } switch (ProjectType) { case EocProjectType.Windows: writer.NewLine(); writer.Write("int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("return init();"); } break; case EocProjectType.Console: writer.NewLine(); writer.Write("int main()"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("return init();"); } break; default: throw new Exception("未知项目类型"); } }
private void MakeProgramEntry(CodeWriter writer) { writer.Write("#include \"stdafx.h\""); writer.NewLine(); writer.Write("#include <Windows.h>"); writer.NewLine(); writer.Write("int init()"); using (writer.NewBlock()) { if (Source.InitEcSectionInfo != null) { for (int i = 0; i < Source.InitEcSectionInfo.InitMethod.Length; i++) { writer.NewLine(); writer.Write(GetCppMethodName(Source.InitEcSectionInfo.InitMethod[i])); writer.Write("();"); writer.AddComment("为{" + Source.InitEcSectionInfo.EcName[i] + "}做初始化"); } } if (Source.Code.MainMethod != 0) { writer.NewLine(); writer.Write("return "); writer.Write(GetCppMethodName(Source.Code.MainMethod)); writer.Write("();"); } else { writer.NewLine(); writer.Write("return e::user::cmd::EocUser__启动子程序();"); } } switch (ProjectType) { case EocProjectType.Windows: writer.NewLine(); writer.Write("int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("return init();"); } break; case EocProjectType.Console: writer.NewLine(); writer.Write("int main()"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("return init();"); } break; case EocProjectType.Dll: writer.NewLine(); writer.Write("BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("switch(ul_reason_for_call)"); using (writer.NewBlock()) { writer.NewLine(); writer.Write("case DLL_PROCESS_ATTACH:"); writer.NewLine(); writer.Write("init();"); writer.NewLine(); writer.Write("break;"); } writer.NewLine(); writer.Write("return TRUE;"); } break; default: throw new Exception("未知项目类型"); } }