2008-12-21 47 views
0

我最近開始在Visual Studio 2005中徘徊,而且我正在使用Visual C++。當我雙擊設計器中的一個控件時,它會打開.h文件,我已經將它理解爲原型聲明,如果我把所有的膽量都放在函數中,我可以讓我的程序工作,但我不喜歡讓.h文件中的代碼。Visual C++ 2005:如何訪問.cpp文件中的Win32窗體控件值?

但是,當我把東西放在一個.cpp文件中時,我似乎根本無法訪問控件。我收到了很多編譯器錯誤等,我想知道VC++期望什麼,因爲我更習慣於GCC/MinGW環境。

我收到最多的錯誤是:

error C2228: left of '.trackBar1/.value/.etc' must have class/struct/union
error C2227: left of '->trackBar1/->Value/->etc' must point to class/struct/union/generic type

我已經嘗試了以下訪問控制:

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文件中的所有內容,而且我仍然無法訪問該控件。

我正在使用Visual Studio 2005與Visual C++ CLR Win32窗體應用程序。的Visual Studio用於創建控件的實例中的代碼是:

this->trackBar1 = (gcnew System::Windows::Forms::TrackBar()); 

在開發 - C++或代碼::塊,我已經習慣了投入.h文件的類聲明,然後指定在.cpp文件中執行class :: function函數,但在Visual Studio中,我似乎無法弄清楚爲什麼我不能做同樣的事情,或者我做了什麼可怕的錯誤和愚蠢的事情。

謝謝。

回答

0

感謝澄清的問題,這裏的一些想法

  • 確保.h文件包含在對應的CPP,例如確保,如果你定義

了foo.h

class 
{ 
... 
}; 

確保Foo.cpp中已經包括了foo.h,像這樣:

#include "foo.h" 

... definitions ... 
  • 看起來像在你的類的上下文中引用trackBar1應該是有效的,這是你上面的最後一個例子。如果你超出了你的類的範圍,你將需要聲明一個封閉類的實例並引用它的trackBar實例。

此外,就像我之前說:

你需要知道,如果你的「Form1的」是一個對象或一個類或命名空間的值或實例。如果它的後面一個名稱空間/類比使用::來澄清命名空間是合適的。從錯誤看來它可能不是一個名稱空間/類/結構。你似乎也試圖把它當作一個指針來對待。它是一個指針嗎?它是如何被發現的?

我將簡化與一個極其簡單的C++頭/ CPP示例實驗。確認這個作品。在功能慢慢地複製粘貼,並看到它打破了哪個階段。做一個Hello World程序是VS 2005和添加在你的代碼。

當你找到它打破了,它仍然是斷開的,用你的一組簡化的示例代碼編輯您的問題,我們可以更好地幫助你調試。

0

這可能發生,因爲對照組改變(即雙擊)。回到控制(在設計視圖),並更改名稱。然後改回它。然後重新編譯。

乾杯!

相關問題