C ++编译器错误 - RC2108:预期的数字对话框常量

时间:2017-06-13 12:34:23

标签: c++ mfc visual-studio-2005

我正在使用VS2005来定位目前正在构建MFC GUI的WinCE设备。 我收到与行

相关的错误

CTEXT IDC_PG,168,183,63,63

  

my_app.rc(95):错误RC2108:预期的数字对话常量

我确信CTEXT线是有问题的(错误指向此后的线。我已经从块的中间移动CTEX线到结束,我在CTEXT之后也遇到线路错误,当它是n时中)但我不知道这里可能有什么不对。

这是完整的代码块:

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

提前感谢您对此有所了解。

2 个答案:

答案 0 :(得分:1)

你用这句话解释了你的问题:"我不想做它"静态"因为我打算使用该小部件来显示currentPage"

项目中编译的资源是resource.h,所有* .rc和* rc2文件只能包含与您的应用程序链接的静态数据。所有资源项必须具有一个ID(从应用程序代码中看到的UINT,但是操作系统的STRING),它是常量并在编译时定义。

如果需要动态创建控件,则必须在代码中执行此操作。您可以通过将它们作为对话框类的成员来管理它们,或者在指针向量中的动态存储器中管理它们(CWnd' s无法复制)。 MFC提供CObArray,它为动态分配的CWnd *提供一些基本的RAII。

如果您真的觉得需要在对话框中引用矩形来放置动态控件,请在编辑器的对话框中插入一些虚拟的,不可见的静态控件。

或者,如果您已经知道您需要的最大窗口小部件数,请将它们作为静态项放在对话框资源上,并在对话框的OnInitDialog()成员函数中显示/隐藏项。

很抱歉,为了给你带来坏消息...我希望你有一个好的备份。

答案 1 :(得分:0)

另一方面,如果您只希望能够在运行时访问窗口小部件,要更改其内容,请右键单击对话框 - >创建类,确保类型为CDialog。然后,您可以通过右键单击它们来创建控件(窗口小部件)的变量 - >创建变量。

控制变量的经验法则是为动态控件创建控制变量,这些变量将在对话框的生命周期内更改内容。

对于只显示用户数据的简单对话框,我们最好使用常用类型变量,这些变量会在输入时自动填充控件,并在成功退出时收集数据。

建议阅读:https://msdn.microsoft.com/en-us/library/0khz1cy9(v=vs.90).aspx

希望这是你想要做的。您需要有一个工作资源文件才能使用MFC的代码生成功能。