Visual c++ visualc&x2B+;2005:如何访问.cpp文件中的Win32窗体控件值? 我最近开始在VisualStudio 2005中四处游逛,我在VisualC++中搞砸了。当我双击设计器中的一个控件时,它会打开一个.h文件,我知道它是用于原型声明的,如果我把所有的精力都放在其中,我可以让我的程序工作,但我不喜欢把代码放在.h文件中

Visual c++ visualc&x2B+;2005:如何访问.cpp文件中的Win32窗体控件值? 我最近开始在VisualStudio 2005中四处游逛,我在VisualC++中搞砸了。当我双击设计器中的一个控件时,它会打开一个.h文件,我知道它是用于原型声明的,如果我把所有的精力都放在其中,我可以让我的程序工作,但我不喜欢把代码放在.h文件中,visual-c++,class,controls,Visual C++,Class,Controls,然而,当我把东西放在.cpp文件中时,我似乎根本无法访问控件。我遇到很多编译器错误等等,我想知道VC++期望什么,因为我更习惯于GCC/MinGW环境 我收到的错误最多的是: 错误C2228:“.trackBar1/.value/.etc”的左边必须有class/struct/union 错误C2227:“->trackBar1/->Value/->etc”的左侧必须指向class/struct/union/generic类型 我尝试了以下方法来访问控件: Junk::Form1::trackB

然而,当我把东西放在.cpp文件中时,我似乎根本无法访问控件。我遇到很多编译器错误等等,我想知道VC++期望什么,因为我更习惯于GCC/MinGW环境

我收到的错误最多的是:

错误C2228:“.trackBar1/.value/.etc”的左边必须有class/struct/union

错误C2227:“->trackBar1/->Value/->etc”的左侧必须指向class/struct/union/generic类型

我尝试了以下方法来访问控件:

Junk::Form1::trackBar1->value
Junk::Form1::trackBar1.value
Junk::Form1->trackBar1
Junk->Form1->trackBar1
this->trackBar1->value //This is legal in the .h file, and how I can get it to work there
trackBar1->value
还有一些只是出于绝望的尝试。我尝试指定与.h文件中相同的名称空间和所有内容,但似乎仍然无法访问该控件

我使用VisualStudio 2005,带有VisualC++ C++ Win32表单应用程序。Visual Studio用于创建控件实例的代码是:

this->trackBar1 = (gcnew System::Windows::Forms::TrackBar());  
在Dev-C++或code::blocks中,我习惯于将类声明放在.h文件中,然后通过执行class::function在.cpp文件中指定函数,但在Visual Studio中,我似乎无法理解为什么我不能这样做,或者我正在做的是非常错误和愚蠢的事情


谢谢。

谢谢你澄清这个问题,这里有一些想法

  • 确保.h文件包含在相应的cpp中,例如,确保
福安

确保foo.cpp包含foo.h,如下所示:

#include "foo.h"

... definitions ...
  • 在类的上下文中,引用trackBar1应该是有效的,这是上面的最后一个示例。如果您不在类的范围内,则需要声明封闭类的实例并引用其trackBar实例
还有,就像我之前说的:

您需要知道“Form1”是对象、类或命名空间的值还是实例。如果它是比使用::更晚的名称空间/类,则说明名称空间是合适的。从错误中看,它可能不是名称空间/类/结构。你似乎也试图把它当作一个指针。是指针吗?它是怎么更新的

<>我将简化实验,使用一个非常简单的C++头文件/CPP例子。确认这是有效的。慢慢地将粘贴复制到您的功能中,看看它在什么阶段中断。制作一个hello world程序是VS 2005,并添加您的代码


当您发现它在哪里中断,并且仍然中断时,请使用简化的示例代码集编辑您的问题,我们可以更好地帮助您进行调试。

这可能是因为控件已更改(即双击)。返回控件(在设计视图中)并更改名称。然后把它换回来。然后重新编译

干杯

#include "foo.h"

... definitions ...