2012-10-06 31 views
3

我的win32程序已經變得有點大以至於保存在一個主文件中。我的計劃是將代碼分成三個文件,一個proc的主文件,一個處理文件的文件和一個處理字體的文件。雖然我在分割文件時遇到了麻煩,但我不知道如何將它們包含在內以便作爲一個主文件。比如我的一些主要的:將Win32程序拆分爲多個文件

#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 

我應該如何區分這些文件?我之前嘗試過,但我無法繞過我的頭,讓所有的文件訪問主要變量。任何人都可以給我一些指點?謝謝!

回答

1

對於全局變量(非常數),你應該放在一個頭文件:

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

你將在主CPP文件離開非EXTERN版本(它可以在任何文件,但你可能不會移動它們)。只需將常量和宏移動到頭文件中,編譯器就可以自己計算出它們。最後,在你所有的cpp文件中包含這個頭文件。

對於函數,您需要頭文件中的聲明和代碼文件中的定義。

頭文件

void myFunc(); 

代碼文件:

void myFunc() 
{ 
    // Do something 
} 
+0

感謝您的答覆,我也跟着你所寫的,一切工作正常,除了在.cpp文件中的實際功能。出於某種原因,只有當我將它們作爲內聯函數時,它們纔會工作,如果不是,我會得到一個他們已經在此處定義的錯誤(這裏是錯誤所在的位置)。將它們聲明爲內聯函數會對我的程序效率產生多大影響?謝謝! –

+0

對不起,我忘了提及功能。我已經添加了如何處理它們。 – CrazyCasta

相關問題