Пример #1
0
        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("未知项目类型");
            }
        }
Пример #2
0
        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("未知项目类型");
            }
        }