在我被标记为重复之前,我能找到的所有类似问题在引入 std::filesystem 之前都有答案,并且使用特定于平台的代码或 Boost::filesystem。我正在寻找一个使用 std::filesystem 的便携式答案。
是否可以使用 std::filesystem 获取 C++ 可执行文件所在的路径(而不是工作目录)?如果是的话,怎么样?
有没有办法在 C++ 中处理 Windows 的墙纸(图标后面)以便在它上面绘图?这将允许制作等效的活动桌面(在 Windows XP 之后停止使用)、等效的墙纸引擎或任何其他类似工具。(在我的情况下,墙纸上的温度和资源使用情况监控)。
注意:返回的句柄返回GetDesktopWindow()
桌面图标级别的窗口,而不是在它后面。
类似问题的解决方案对我不起作用。具体来说,我尝试了 VLC 媒体播放器的墙纸模式代码。
关键代码是:
hwnd = FindWindow( _T("Progman"), NULL );
if( hwnd ) hwnd = FindWindowEx( hwnd, NULL, _T("SHELLDLL_DefView"), NULL );
if( hwnd ) hwnd = FindWindowEx( hwnd, NULL, _T("SysListView32"), NULL );
if( !hwnd )
{
msg_Warn( p_vout, "couldn't find \"SysListView32\" window, "
"wallpaper mode not supported" );
return;
}
Run Code Online (Sandbox Code Playgroud)
但它不会在壁纸上绘制。
我正在和一个朋友为一个小型个人项目做翻译;我们开始实现所有的类和一般结构,在这些结构中代码将被翻译,然后执行只是为了将实际的解析代码推迟到这些结构中。
现在我们必须构建解析器,经过一番搜索,我发现到处都是关于灵气和灵气 X3 的帖子和人,好像它们是(我认为它们是)两种不同的方式来制作解析器,但没有一个说不同,哪个更近,我应该从哪个开始。
目的是,给定一个代码字符串,输出最终错误,如果一切都遵守语法和逻辑,则将代码转换为我们已经构建的类的树。我们想在解析过程中检查一致性,例如“您正在使用未声明的变量”类型的错误。
我不确定这两个库如何以不同的方式对待事物。
我正在和一个朋友一起研究一种语言的解释器,我们从一个我猜不是那么明智的决定开始:我们首先制作了所有要执行的元素(实际上是一个由不同类组成的树);但是现在查看 boost 示例,我对如何合并两者感到很困惑。我知道从什么开始(语法),我知道要达到什么(实例化的类彼此拥有),我不知道如何达到它。
我们从没有变量的表达式开始,因此我们查看了精神计算器示例;但我不明白什么时候实例化元素。
表达项示例:
namespace exp
{
class op
{
private:
public:
virtual double exec(function_scope &fs);
};
class operand : public op
{
private:
double value;
public:
operand(double value);
double exec(function_scope &fs);
};
class op_bin : public op
{
private:
public:
op * ll;
op* rr;
op_bin(op* ll, op* rr);
~op_bin();
};
namespace bin
{
class sum : public op_bin
{
public:
sum(op* ll, op* rr);
double exec(function_scope &fs);
};
}
}
Run Code Online (Sandbox Code Playgroud)
忽略 exec 函数,它在运行时使用。
例如,代码 5 + (2 …
我很早以前就开始在动态图形可视化器,编辑器和算法测试平台(具有节点和弧线的图形,而非其他图形)上工作。对于算法测试平台,我需要让用户编写脚本或从文件中调用脚本,这将与当前加载的图形进行交互。可视化工具会执行一些操作,例如在脚本算法访问节点时点亮节点,并增加一些人为延迟,以可视化导航和处理算法的算法。其次,脚本还将用于添加第三方功能,这些功能既可以作为程序文件夹中的预先存在的脚本使用,也可以在经过测试和工作后,以c ++的形式集成到程序内部。
我在搜索程序中嵌入的所有搜索内容都将我带到了lua;然后,我开始为自己的类似C的语法脚本语言手写我自己的递归下降解析器(我计划使用C ++语法的子集,以便可以将用我的脚本语言编写的任何代码复制粘贴到任何C ++代码中。一个有趣的疯狂想法,我一点也不后悔,我有范围,函数,循环,gotos,类型安全变量,表达式。
但是现在我要增加类,类方法,继承(将默认脚本连接到程序需要一些默认类),我意识到这将花费很多时间和精力。对于一个有考试的未毕业学生的个人项目来说,这有点太多了……但是我还是希望完成这个项目。
脚本自身强加100%与C ++兼容的要求几乎是必要的,这将是一件不错的事情,我可以做不到。
现在的问题是,是否可以用类似c的语法替代lua,以支持我已经做过的所有事情以及类和继承?(必须将接口脚本的自定义“类”添加到程序中)
(我不能假设用户安装了完整的c ++编译器,所以我不能在运行时将其“脚本”编译为dll来加载和调用它,尽管我希望可以)