0

由于我最近的问题已结束,因此对同一问题采取了不同的方法。

我发现尝试学习 winAPI 很困难,并且大多数时候不需要能够利用本机功能(感谢Spook),现在我需要一种不同的方法。

我更喜欢 C++ 并且对 Qt 有一点经验,但是因为我想利用平台特定的特性,所以 Qt 不是一个可行的解决方案。

我还关心可移植性,因此 .NET 可能不可行,除非有一种方法可以使用本地资源而不是 .net 框架安装程序中包含的资源。

因此,请列举我可以开始研究以完成这些事情的替代方案。

例如,如果我要制作像这样使用航空透明度的东西,或者如果我需要我的程序能够操作其他窗口,例如最小化/最大化它们,除了 winAPI 之外我还可以使用哪些工具?

4

1 回答 1

2

我不确定我是否理解,因为即使您使用 Qt(或任何其他 x 平台框架),也没有什么能阻止您使用特定于平台的功能。您只需针对您希望支持的不同平台将这些特定功能分隔在不同的编译单元中。仅此而已。

名义上,您在头文件中定义一个接口/类,然后您可以在多个不同的主体文件中实现该接口/类,每个文件都包含特定平台的实现,例如 Win32/Mac OS X /Linux。

头文件中的fi(.h文件):

class MyXPlatformClass {
public:
   static std::string getMachineName();
}

然后在 cpp 文件中实现这个“接口”:

赢32:

std::string MyXPlatformClass::getMachineName() {
   char buffer[256]; 
   GetComputerNameA(buffer, sizeof(buffer));
   return buffer;
}

Mac OS X(和 Linux?):

std::string MyXPlatformClass::getMachineName() {
   char buffer[256]; 
   gethostname(&buffer, sizeof(buffer));
   return buffer;
}

这就是跨平台编码的完成方式,与您选择使用的框架无关。不过我推荐 Qt,因为它相当“完整”,这意味着它拥有几乎所有不需要使用平台特定代码的工具。但是如果你需要它,你可以使用上面的方法。

于 2013-03-18T08:37:36.937 回答