小编Ale*_*rty的帖子

双缓冲winAPI

好的,所以在我的应用程序中,有一堆winAPI和一些自定义控件.好极了...

现在,通常情况下,他们会悄悄地重新绘制自己的动画,状态改变等等......一切正常.

但我有一个类Window的方法,名为fix().只要整个窗口需要更新,就会调用此方法.它调整控件的大小并使窗口无效.

当发生这种情况时,绘制背景,然后绘制标签控件,然后绘制所有其他顶部.这会导致非常恼人的闪烁,特别是在调整窗口大小时(因为不断调用fix()).

我尝试过的:

  • WS_EX_COMPOSITED.这只会对各个控件进行双重缓冲.它是一种改进,但闪烁不可避免地仍然存在.
  • 关闭背景图.几乎没有解决问题,实际上使事情变得更糟.

所以:我需要一个技术/方法/任何允许我完全双重缓冲窗口.我认为自己处理WM_PAINT消息可能是一个解决方案,但我不知道从哪里开始.我有一种可怕的感觉,这甚至都不可能......

请帮忙,这是一个关键问题.当这个愚蠢的小问题得到解决时,我会非常放心.

c++ winapi double-buffering

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

我如何找到任务栏的高度?

在我的 Windows 应用程序中,我试图找到任务栏的高度。虽然我可以将其硬编程到我的程序中,但我希望以编程方式找到它以支持过去、现在 (win7) 和未来的 Windows 版本。

那么,我该怎么做呢?

c++ windows api height taskbar

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

WinAPI双缓冲

默认的winAPI应用程序没有双缓冲.相反,它确实能够确保只绘制需要绘制的内容,并使其具有无缝外观.但是,当您调整窗口大小时,需要重新绘制整个窗口,这会导致控件,选项卡上的背景以及选项卡的白色之间出现闪烁.

所以我的问题是,在我的应用程序中支持双缓冲的最简单方法是什么?

c++ winapi double-buffering

4
推荐指数
2
解决办法
5044
查看次数

作为winAPI回调的类方法

将winAPI消息回调函数设置为类的方法是否可行.如果是这样,这将如何最好地实施?我想知道它是否有可能.

很抱歉这个简短的问题,希望您能够提供有用的回复.

提前致谢 :).

c++ winapi

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

封装v性能

简单的问题:

我真的很喜欢封装的想法,但我真的不知道它是否值得它是一个性能危急的情况.

例如:

x->var;
Run Code Online (Sandbox Code Playgroud)

比...更快

x->getVar();
Run Code Online (Sandbox Code Playgroud)

因为函数调用开销.有没有快速和封装的解决方案?

c++ performance encapsulation

3
推荐指数
2
解决办法
948
查看次数

C++ WinAPI保存和打开对话

如何在当前项目中实现保存和加载对话框?我只需要知道如何更改基础知识,如文件名掩码和默认路径.

任何帮助表示赞赏,甚至是有用网站的链接.

谢谢.

c++ winapi load save

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

在C++中重新定义纯虚方法

您是否必须声明方法替换基类中的纯虚函数?如果是这样,为什么?因为基类已将方法声明为纯虚拟,因此必须存在于派生类中,所以在您可以在类定义之外实现它们之前,不需要在派生类中重新声明它们.你不同意吗?

c++ oop pure-virtual

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

删除命令提示符

在C++中,在不使用WinMain()的情况下删除命令提示符的标准方法是什么?希望这是一个简单的问题.我正在使用MSVC.

c++

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

改变窗口背景颜色

在winAPI中,如何更改窗口背景颜色?

例如,

wc.hbrBackground = ....;
Run Code Online (Sandbox Code Playgroud)

用于初始设置窗口背景,但如何在之后更改窗口背景?

谢谢.

c++ winapi

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

OpenGL骨架动画表现

我有点情况.

你看,当用我的renderMesh()函数渲染我的模型时,游戏大约是30fps.渲染到显示列表并运行时,fps大约为450fps.多达1500%的收益.我对此感到非常高兴,因为这意味着OpenGL不是滞后的原因,它是功能,可以优化.

但是现在我想渲染一个蒙皮网格,所以我需要更新每帧的顶点位置,但没有别的.因此,运行renderMesh()会浪费时间,因为将所有面修补等的开销是不必要的.我想缓存这些数据,但由于易失性顶点坐标,显示列表不起作用.

什么是最好的解决方案(除了优化我的renderMesh(),我将继续做).

c++ opengl optimization skinning

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

关于C++指针

我很好奇在这种情况下如何处理数据:

chapterlist.clear();
cScene newscene;
newscene.name = "Laura does something.";
newscene.words = 432;
newscene.pov = "Laura";
cChapter newchapter;
newchapter.scenelist.push_back(newscene);
chapterlist.push_back(newchapter);
Run Code Online (Sandbox Code Playgroud)

chapterlist是一个cChapter向量.

我正在创建一个新的cScene对象,并将其推送到新cChapter对象的scenelist向量,然后我将其推送到chapterlist.

我的问题是:当我将对象推送到向量时,是否所有数据都被复制到向量中,而旧数据在作用域结束时从堆栈中被销毁?

或者是其他事情发生了什么?

PS:我讨厌指针,就像很多人一样.

c++ pointers vector

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

我的API应该使用非成员函数来作用于对象,还是使函数成为对象的公共函数?

最近我了解到OOP的许多好处(包括漂亮的代码).

所以,现在我正在尝试编写一个小型的物理API供我个人使用,或许可以放在一些小游戏中.这主要是因为我喜欢练习编码,我喜欢我的物理.

但问题是,许多API都有这样的接口(包括Windows API):

// In this case, Object is just a plain data container without a constructor.
Object object = NewObject(...);
DoSomething(object);
DoAnotherThing(object,...);
 ... and so on
Run Code Online (Sandbox Code Playgroud)

这是应该如何安排API ,还是有更多的OO风格的方式,如:

Object object(...);
object.DoSomething(...);
object.DoAnother(otherObj,...);
otherObject.attachNode(object);
 ... and so on again
Run Code Online (Sandbox Code Playgroud)

我希望你明白这个主意.因此,总结一下问题,哪个方法更受欢迎,为什么我看到很多第一个例子,尽管OOP得到了美化(尽管参考中的这些API可能只是旧的,比如Windows API).

作为旁注,您如何看待Windows API?对我而言似乎有点......不对.

c++ oop api

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