由于我的recent question已关闭,因此对同一问题采用不同的方法。
我发现尝试学习winAPI很困难,并且大部分时间都不需要能够利用本机功能(感谢Spook),现在我需要一种不同的方法。
我更喜欢C ++并且对Qt有一点经验,但因为我想take advantage of platform specific features,Qt不是一个可行的解决方案。
我也关心可移植性,因此.NET可能不可行,除非有办法使用本地资源而不是.net框架安装程序中包含的资源。
所以请列举替代方案,我可以开始学习这些方法。
例如,如果我要制作使用this之类的空气透明度的东西,或者我需要我的程序能够操纵其他窗口,例如最小化/最大化它们除了winAPI之外我可以使用哪些工具?< / p>
答案 0 :(得分:2)
我不确定我理解,因为即使您使用Qt(或任何其他x平台框架),也没有任何障碍阻碍您使用平台特定功能。您只需将不同编译单元中的特定功能分开,以用于您希望支持的不同平台。没有比这更多的了。
名义上你在头文件中定义一个接口/类,然后你可以在多个不同的body文件中实现该接口/类,每个文件都持有特定平台f.i的实现。 Win32 / Mac OS X / Linux。
标题(.h文件)中的f.i:
class MyXPlatformClass {
public:
static std::string getMachineName();
}
然后在cpp文件中实现这个“接口”:
的Win32:
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,因为它相当“完整”,这意味着它几乎所有工具都不需要打扰特定于平台的代码。但是如果你需要它,你可以使用上面的方法。