簡體   English   中英

resource.h中的宏用於什么?

[英]What are the macros in resource.h used for?

在visual studio中創建資源文件時,IDE會自動生成一個名為resource.h的頭文件,其中包含以下文本:

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by BackupRestore.rc

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        101
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

正如你可以看到它的評論並說它們是“新對象的默認值”。 這到底是什么意思? 默認情況下是否在其他地方引用它們,如果不是,它們將在何處使用? 我正在嘗試使用最少量的代碼和文件創建一個項目,並且已經測試了刪除resource.h文件,並且解決方案似乎在沒有它的情況下構建正常,所以我想知道它是否必不可少或者如果刪除它將導致未來的問題。

總結:resource.h文件及其內容用於什么? 默認情況下,定義的宏是否在其他地方使用? 程序員什么時候可以引用它們/在代碼中使用它們,如果有的話? 它們是否必不可少,將它們刪除會產生未來問題嗎

在此先感謝 - 請注意我是C ++和宏的新手。

文檔中

_APS_NEXT_RESOURCE_VALUE是將用於對話框資源,菜單資源等的下一個符號值。 資源符號值的有效范圍是10x6FFF

_APS_NEXT_COMMAND_VALUE是將用於命令標識的下一個符號值。 命令符號值的有效范圍是0x80000xDFFF

_APS_NEXT_CONTROL_VALUE是將用於對話框控件的下一個符號值。 對話框控制符號值的有效范圍是80xDFFF

_APS_NEXT_SYMED_VALUE是使用符號瀏覽器中的“新建”命令手動分配符號值時將發出的下一個符號值。

因此,如果您在實際的對話框編輯器中,當您單擊一個新按鈕(例如)時,它就是如何跟蹤下一個可用資源ID。 資源ID通常用於跟蹤靜態文本(例如,字段標簽),綁定等內容。

如果您已經定義了資源ID,那么它必須是_APS_NEXT的較小值。 例如,在您的resource.h您可能有

#define IDC_SOME_RADIO_BUTTON    1056

然后你必須更新

#define _APS_NEXT_CONTROL_VALUE       1057

再次這樣,下次單擊按鈕時,它將獲得唯一ID。 它們必須是唯一的,因為它們只是在您嘗試將該資源ID用於某些內容時將被替換的預處理器宏。 例如

void HandleRadioButtion()
{
    // do something important
}

然后,您可以使用資源ID將其綁定到函數

BEGIN_MESSAGE_MAP(SomeDlg, CDialog)
    ON_BN_CLICKED(IDC_SOME_RADIO_BUTTON, HandleRadioButton)
END_MESSAGE_MAP()

這些宏僅適用於IDE。 代碼本身不會在任何地方引用它們。

要創建最少的資源文件,您可以跳過使用IDE來創建資源,而是從頭開始編寫它們(作為純文本文件)。 實際上,這是在IDE啟用所有這些自動化之前完成的。 資源文件格式記錄在MSDN中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM