小编Uni*_*ick的帖子

如果配置中未使用字段,则修复警告“未使用字段 a”的好方法

我有一个带有字段的类,我将其输出到日志。如果日志被关闭(例如在发布中),我会收到警告(不使用私有字段“a_”),因为我仅使用此字段来输出到日志。

样本:

#include <iostream>

//#define TURNON_LOG

#ifdef TURNON_LOG
  #define  LOG(a) printf("%d", a)
#else
  #define  LOG(a) 0
#endif

class A
{
public:
    A(int a) : a_(a)
    {
        LOG(a_);
    }

private:
    int a_;

};

int main(int argc, const char * argv[])
{
    A a(10);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我将 clang 与 -Wall 一起使用:

clang main.cpp -Wall
Run Code Online (Sandbox Code Playgroud)

当 TURNON_LOG 未定义时,修复警告的最佳方法是什么?

c++ clang compiler-warnings

6
推荐指数
2
解决办法
4618
查看次数

从 Windows 10 上的任务栏中删除窗口

我想从具有多个桌面的 Windows 10 上的任务栏中删除窗口。对于 Windows 8.1,我使用了 ITaskbarList::DeleteTab 并且效果很好。

对于 Windows 10,此方法也会从任务栏中隐藏 Windows,但之后我会在所有桌面上看到此窗口。我只想在一个桌面上看到这个窗口。

有谁知道在 Windows 10 中从任务栏中隐藏窗口并将此窗口保留在一个桌面上的方法?

您可以在下面看到,我在“在 Windows 10 的任务栏中隐藏窗口”下的意思:

在此处输入图片说明

c++ windows taskbar windows-10

5
推荐指数
2
解决办法
2716
查看次数

c ++有多个图形选项

目前我的应用程序仅使用Direct3D9进行图形处理,但是将来我计划将其扩展到D3D10和可能的OpenGL.问题是如何以一种整洁的方式做到这一点?

目前我的代码中有各种Render方法

void Render(boost::function<void()> &Call)
{
    D3dDevice->BeginScene();
    Call();
    D3dDevice->EndScene();
    D3dDevice->Present(0,0,0,0);
}
Run Code Online (Sandbox Code Playgroud)

传递的函数取决于确切的状态,例如MainMenu-> Render,Loading-> Render等.然后这些函数会调用其他对象的方法.

void RenderGame()
{
    for(entity::iterator it = entity::instances.begin();it != entity::instance.end(); ++it)
        (*it)->Render();
    UI->Render();
}
Run Code Online (Sandbox Code Playgroud)

以及从entity :: Base派生的示例类

class Sprite: public Base
{
    IDirect3DTexture9 *Tex;
    Point2 Pos;
    Size2 Size;
public:
    Sprite(IDirect3DTexture9  *Tex, const Point2 &Pos, const Size2 &Size);
    virtual void Render();
};
Run Code Online (Sandbox Code Playgroud)

然后,每种方法在给定更详细的设置(例如,是否支持像素着色器)的情况下处理最佳渲染方式.

问题是我真的不知道如何扩展它以便能够使用其中一个,可能有所不同(D3D v OpenGL)渲染模式......

c++ opengl graphics direct3d

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