| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2126 人关注过本帖
标题:在VC++2008中,怎样解决两个窗口可以相互引用得的问题
只看楼主 加入收藏
anjin_hu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-1-19
收藏
 问题点数:0 回复次数:0 
在VC++2008中,怎样解决两个窗口可以相互引用得的问题
目的:定义了两个窗体,第一个按下按键,打开第二个窗体,第二个窗体按下按键,可以更改label1的text,label1在第一个窗体中。

以下是部分程序:
Form1.h:
#include "frm2.h"

namespace xxx {

...
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{ ... }

protected:
~Form1()
{ ... }
private: System::Windows::Forms::Button^  button1;
protected:
private: System::Windows::Forms::Label^  label1;

frm2^ fs2;

#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{ ... }
#pragma endregion
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
fs2 = gcnew frm2;
fs2->Show();
}
};
}

frm2.h:
#pragma once

...

namespace xxx {

ref class Form1;

public ref class frm2 : public System::Windows::Forms::Form
{
public:
frm2(void)
{ ... }

protected:
~frm2()
{ ... }
public:  Form1^ to_f1;
private: System::Windows::Forms::Button^  button1;
protected:

private:
/// <summary>
/// 必需的设计器变量。
/// </summary>
System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
void InitializeComponent(void)
{ ... }
#pragma endregion
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
to_f1->label1->Text = "this is form2 text";
}
};
}

这时会编译出错,产生如下信息:
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2027: 使用了未定义类型“xxx::Form1”
1>        c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(22) : 参见“xxx::Form1”的声明
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2227: “->label1”的左边必须指向类/结构/联合/泛型类型
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2227: “->Text”的左边必须指向类/结构/联合/泛型类型
1>xxx.cpp
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2027: 使用了未定义类型“xxx::Form1”
1>        c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(22) : 参见“xxx::Form1”的声明
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2227: “->label1”的左边必须指向类/结构/联合/泛型类型
1>c:\documents and settings\haj.haj-asus\my documents\visual studio 2008\projects\xxx\xxx\frm2.h(89) : error C2227: “->Text”的左边必须指向类/结构/联合/泛型类型

若屏蔽to_f1->label1->Text = "this is form2 text";这一句,则编译通过。

要怎样才能解决这个问题呢?我的目的即是两个窗体分别可以引用另一窗体的某些控件或属性或者有其它的方法可以实现。

另外,我若在frm2.h中用#include "Form1.h",也会编译出错。
搜索更多相关主题的帖子: 窗口 
2010-01-19 18:53
快速回复:在VC++2008中,怎样解决两个窗口可以相互引用得的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014108 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved