2017-06-13 60 views
0

我正在使用VS2005來定位WinCE設備,目前正在構建MFC GUI。 我越來越能排C++編譯器錯誤 - RC2108:預期的數值對話框常量

CTEXT IDC_PG,168,183,63,63

相關的錯誤說

my_app.rc(95):錯誤RC2108:預期數值對話框不斷

我相信那CTEXT線是有問題的(錯誤指向這條線之後的線,我已經將CTEX線從塊的中間移動到了末尾,在CTEXT之後,當它在中間時也出現錯誤),但是我有不知道這裏可能不正確。

這是代碼滿塊:

BEGIN 
    LTEXT   "Static",IDC_SEL,337,122,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_ESC,337,183,62,63,SS_NOTIFY 
    LTEXT   "Static",IDC_RETURN,337,122,63,123,SS_NOTIFY 
    LTEXT   "Static",IDC_RB,337,45,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_LB,337,0,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_DN,337,61,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_UP,337,0,63,61,SS_NOTIFY 
    LTEXT   "Static",IDC_SET,274,183,63,63,SS_NOTIFY 
    LTEXT   "Static",IDC_VYPLN,0,183,211,63,SS_NOTIFY 
    LISTBOX   IDC_LF,1,1,338,182,LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_TABSTOP 
    CTEXT   "Static",IDC_PHOTO,0,0,337,245 
    CTEXT   "Static",IDC_BG,0,0,400,245 
    LTEXT   "Static",IDC_ESC2,202,182,62,63,SS_NOTIFY 
    CTEXT   IDC_PG,168,183,63,63 //PagingWidget 
END 

預先感謝在此脫落的一些光。

+1

'IDC_PG'是如何定義的以及你從哪裏得到id'168'? – Stefan

+0

在頭文件中定義 - #define IDC_PG 1017 手動計算數字 – dram

+1

您是否曾嘗試將字符串放在前面? 'CTEXT「測試」,IDC_PG,168,183,63,63'? https://msdn.microsoft.com/en-us/library/windows/desktop/aa380915(v=vs.85).aspx – Stefan

回答

1

你在這一句話解釋你的問題:「我不想讓‘靜’,作爲即時通訊計劃使用該控件來顯示當前頁」

在你的項目已編譯的資源是resource.h中,所有* .rc和* rc2文件只能包含與您的應用程序鏈接的靜態數據。所有資源項目必須有一個ID(從應用程序代碼中看到的UINT,但是是OS的STRING),它在編譯時是不變的和定義的。

如果您需要動態創建控件,則必須在代碼中執行此操作。您可以通過將它們作爲對話框類的成員來管理它們,或者在指針向量中的動態內存中管理它們(CWnd's不能被複制)。 MFC提供的CObArray爲動態分配的CWnd *提供了一些基本的RAII。

如果您確實需要在對話框中引用矩形以放置動態控件,請使用編輯器在對話框中插入一些虛擬的,不可見的靜態控件。或者,如果您已經知道您需要的小部件的最大數量,請將它們作爲靜態項目放置在對話框資源上,並在對話框的OnInitDialog()成員函數中顯示/隱藏項目。

對不起,爲了給你帶來壞消息......我希望你有一個很好的備份。

+0

非常有見地,謝謝 – dram

+0

@dram:我不確定你真正想要什麼,所以下面還有一個更加樂觀的版本。 –

0

另一方面,如果您只希望能夠在運行時訪問小部件並更改其內容,請右鍵單擊對話框 - >創建類,確保類型爲CDialog。然後,您可以通過右鍵單擊它們來創建控件(小部件)的變量 - >創建變量。

控制變量的經驗法則是創建控制用於在對話期間更改內容的動態控件的變量。

對於簡單的對話框來說,它只能從用戶中展開和收集數據,最好給我們使用通用類型的變量,這些變量會自動填充入口的控件,並將數據收集到一個成功的出口。

推薦閱讀:https://msdn.microsoft.com/en-us/library/0khz1cy9(v=vs.90).aspx

希望這是你想要做什麼。您需要有一個工作資源文件才能使用MFC的代碼生成功能。