2017-06-13 44 views
0

私はVS2005を使って、現在MFC GUIを構築しているWinCEデバイスをターゲットにしています。 私はC++コンパイラエラー - RC2108:予想される数値ダイアログ定数

my_app.rc(95)と言っ

CTEXT IDC_PG,168,183,63,63

行に関連のエラー取得しています:私は確信して予想数値ダイアログ定数

:エラー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'68 'を取得しましたか? – 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あるプロジェクトでコンパイルされたリソースは、「currentPageにを表示するためにそのウィジェットを使用するようにイム計画として 『静的』私はそれを作りたいいけません」、すべての* .rcファイルと* rc2ファイルには、アプリケーションにリンクされている静的データのみが含まれます。すべてのリソース項目は、定数であり、コンパイル時に定義されたID(アプリケーションコードから見たUINT、OSのSTRING)を持っていなければなりません。

コントロールを動的に作成する必要がある場合は、コード内でコントロールを作成する必要があります。あなたは、ダイアログクラスのメンバーとして、またはポインタのベクトルの動的メモリ(CWndのコピーすることはできません)としてそれらを管理することができます。 MFCは、動的に割り当てられたCWnd *に基本的なRAIIを提供するCObArrayを提供します。

ダイナミックコントロールを配置するためにダイアログで四角形を参照する必要があると感じたら、エディタを使用してダミーの非表示の静的コントロールをダイアログに挿入します。

また、必要なウィジェットの最大数が既に分かっている場合は、それらを静的項目としてダイアログリソースに配置し、ダイアログのOnInitDialog()メンバー関数で項目を表示/非表示にします。

申し訳ありませんが、あなたに悪いニュースをお届けします...あなたは良いバックアップがあることを願っています。

+0

非常に洞察力のある、ありがとう – dram

+0

@ドラム:私はあなたが本当に望んでいるのか分からなかったので、下にローサーバージョンもあります。 –

0

実行時にウィジェットにアクセスして内容を変更したい場合は、ダイアログ - >クラスの作成を右クリックして、タイプがCDialogであることを確認します。次に、コントロール - ウィジェットを右クリック - >変数を作成することで、コントロール(ウィジェット)の変数を作成することができます。

制御変数の経験則では、制御ダイアログを作成して、ダイアログの存続期間中内容を変更するダイナミックコントロールの変数を作成します。

ユーザーからのデータを表示して収集する単純なダイアログでは、入力時に自動的にコントロールを入力し、正常終了のデータを収集するcommon-types変数が最適です。

推奨読書:https://msdn.microsoft.com/en-us/library/0khz1cy9(v=vs.90).aspx

がうまくいけば、これはあなたが何をしたいです。MFCのコード生成機能を使用するには、実際のリソースファイルが必要です。

関連する問題