【问题标题】:Splitting a Win32 program into multiple files将 Win32 程序拆分为多个文件
【发布时间】:2012-11-15 11:01:54
【问题描述】:

我的 win32 程序变得有点大,无法保存在一个主文件中。我的计划是将代码分成三个文件,一个用于 procs 的主文件,一个用于处理文件的文件和一个用于处理字体的文件。我在拆分文件时遇到了麻烦,我不知道应该如何包含它们才能让它们充当一个主文件。例如我的一些主要内容:

    #include <iostream>
    #include <windows.h>
    #include "resource.h"
    #include <commctrl.h>
    #include "hideconsole.h"

    #define IDC_MAIN_MDI    101
    #define IDC_MAIN_TOOL   102
    #define IDC_MAIN_STATUS 103

    #define IDC_CHILD_EDIT 101

    #define ID_MDI_FIRSTCHILD 50000

    const char szClassName[] = "MainClass";                         //window class
    const char szChildClassName[] = "ChildClass";                   //child class

    HWND g_hMDIClient = NULL;
    HWND g_hMainWindow = NULL;

//functions and procs for windows

我应该如何分离这些文件?我之前尝试过,但我无法集中精力让所有文件都可以访问主变量。谁能给我一些指示?谢谢!

【问题讨论】:

    标签: winapi include


    【解决方案1】:

    对于全局变量(非常量),你应该放在一个头文件中:

    extern HWND g_hMDIClient = NULL;
    extern HWND g_hMainWindow = NULL;
    

    您将在您的主 cpp 文件中保留非外部版本(它可以在任何文件中,但您最好不要移动它们)。只需将常量和宏移动到头文件中,编译器就可以自行计算出来。最后,将此头文件包含在所有 cpp 文件中。

    对于函数,您需要头文件中的声明和代码文件中的定义。

    头文件:

    void myFunc();
    

    代码文件:

    void myFunc()
    {
        // Do something
    }
    

    【讨论】:

    • 感谢您的回复,我按照您写的内容进行操作,一切正常,除了 .cpp 文件中的实际功能。出于某种原因,它们只有在我将它们设为内联函数时才会起作用,否则我会得到一个错误,它们已经在此处定义(这里是错误所在的同一位置)。将它们声明为内联函数会大大影响我的程序效率吗?谢谢!
    • 对不起,我忘了提到功能。我已经添加了如何处理它们。
    猜你喜欢
    • 2021-12-06
    • 2015-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2015-01-13
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多