小编zel*_*ing的帖子

Window.Loaded - ShowDialog() - 无法执行操作

描述

\n\n

您好,我一直在网上搜索有关此问题的信息,但没有找到任何可以修复该问题的信息。

\n\n

我想在主窗口加载时显示一个对话框,因此我为我的MainWindowLoaded 事件分配了一个事件处理程序。处理程序如下:

\n\n
private void Window_Loaded(object sender, RoutedEventArgs e) {\n    if (Settings.Instance.GetBool(ConfigFunctionalityGroup, "CheckForUpdatesOnStartup")) {\n        worker = new BackgroundWorker();\n        worker.DoWork += worker_DoWork;\n        worker.ProgressChanged += worker_ProgressChanged;\n        worker.WorkerReportsProgress = true;\n        worker.RunWorkerAsync();\n    }\n\n    findandreplacedialog = new FindAndReplaceDialog() { Owner = this };\n\n    Open_Environment_Click(null, null);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

Open_Environment_Click是菜单项的事件处理程序,编写如下:

\n\n
private void Open_Environment_Click(object sender, RoutedEventArgs e) {\n    SelectEnvironmentDialog dialog = new SelectEnvironmentDialog(Environments);\n\n    if (dialog.ShowDialog().Value == true) {\n        dialog.SelectedEnvironment.Open();\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

例外

\n\n

ShowDialog当我在 中调用对话框时发生异常Open_Environment_Click

\n\n

异常详情如下:

\n\n …

c# wpf invalidoperationexception showdialog

2
推荐指数
1
解决办法
5436
查看次数

C++ OpenGL glTexImage2D访问冲突

我正在使用OpenGL(freeglut和glew)编写应用程序.

我也想要纹理,所以我对Bitmap文件格式进行了一些研究,并为主标题写了一个结构,为DIB标题写了另一个结构(info标题).

然后我开始编写加载器.它会自动将纹理绑定到OpenGL.这是功能:

static unsigned int ReadInteger(FILE *fp)
{
    int a, b, c, d;

    // Integer is 4 bytes long.
    a = getc(fp);  
    b = getc(fp);  
    c = getc(fp);  
    d = getc(fp);

    // Convert the 4 bytes to an integer.
    return ((unsigned int) a) + (((unsigned int) b) << 8) +
           (((unsigned int) c) << 16) + (((unsigned int) d) << 24);
}

static unsigned int ReadShort(FILE *fp)
{
    int a, b;

    // Short is 2 bytes long.
    a = …
Run Code Online (Sandbox Code Playgroud)

c++ opengl bmp access-violation glteximage2d

1
推荐指数
1
解决办法
6893
查看次数

C++前向声明(指针) - 访问成员

我正在使用OpenGL和DirectX,我已经开始为面向对象的游戏类开发基础知识.当前类的结构如下:

对象
--- | ---演员
--------- | ---典当
--------- | ---控制器

所以我有继承继承的类PawnController类.ActorObject

问题是我需要Controller在pawn类和Pawn控制器类中的实例中引用.
因此我向前宣布PawnControllerActor.h:

// Actor.h

// (...) Actor Declaration (...)

class Pawn;
class Controller;
Run Code Online (Sandbox Code Playgroud)

然后在Pawn.h:

// Pawn.h

class Pawn : public Actor
{
private:
    Controller* controller;
public:
    void DoSomethingWithController(void);
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,没有错误.问题是当我想访问该类中的成员时:

void Pawn::DoSomethingWithController(void)
{
    // this->controller-> can't access members like this (members not found)
}
Run Code Online (Sandbox Code Playgroud)

那么,我该怎么做才能在Pawn中有一个Controller指针和一个指向我的Controller中的Pawn的指针,将它们保存在不同的文件(.h和.cpp)中,同时能够访问它的成员?

感谢您的时间.:d

[如果需要更多信息,我会提供]

c++ pointers class member forward-declaration

0
推荐指数
1
解决办法
1902
查看次数

C++ - 面向对象的基类数组

可能重复:
学习C++:多态和切片
用子类对象初始化的多态基类对象的数组

我已将面向对象的类集成到我的OpenGL应用程序中.基类有一个被调用的函数Tick,应该使用表示增量时间的参数调用每个tick(显而易见).这是它的样子(没有这个问题的无关紧要的东西).

头:

class Object
{
public:
    virtual void Tick(float DeltaTime);
}
class Controller : public Object
{
public:
    virtual void Tick(float DeltaTime);
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为的类Engine包含主循环,初始化和处理(将其与窗口创建分开).
在那个课程中我需要跟踪游戏中的所有对象,所以我创建了一个数组:
Object* Objects = new Object[10]; // for now max 10 objects

然后调用tick函数,我通过数组迭代:

for (unsigned int c = 0; c < 10; c++)
    Objects[c].Tick(delta);
Run Code Online (Sandbox Code Playgroud)

delta循环之前进行计算.

问题在于,如果我将数组中的一个对象分配给Controller(例如),则调用的Tick函数始终是在Object实际存储的类中而不在其中的那个.

我甚至尝试过类型转换(每个类都有一个字符串来识别它的类型),但没有用.

我很确定答案是显而易见的(就像我上一期的答案一样),但我找不到答案.

感谢您的时间.:)

c++ arrays opengl oop

0
推荐指数
1
解决办法
1172
查看次数