0

私の最近の質問がクローズされたため、同じ質問に対する別のアプローチがあります。

winAPI を学ぼうとするのは難しく、ほとんどの場合、ネイティブ機能を利用するために必要ではないことがわかりました ( Spookのおかげです)。そして今、別のアプローチが必要です。

私は C++ を好み、Qt の経験も少しありますが、プラットフォーム固有の機能を利用したいので、Qt は実行可能なソリューションではありません。

私は移植性にも関心があるため、.net フレームワーク インストーラーに含まれているリソースの代わりにローカル リソースを使用する方法がない限り、.NET は実行できない可能性があります。

したがって、これらのことを実行できるようにするために、私が勉強を開始できる代替案を列挙してください.

たとえば、このようなエアロ透明度を使用するものを作成する場合、または最小化/最大化などの他のウィンドウをプログラムで操作できるようにする必要がある場合、winAPI 以外にどのツールを使用できますか?

4

1 に答える 1

2

Qt (またはその他の x-platform フレームワーク) を使用している場合でも、プラットフォーム固有の機能を使用することを妨げるものは何もないため、私が理解しているかどうかはわかりません。これらの特定の機能を、サポートするさまざまなプラットフォームのさまざまなコンパイル ユニットに分離するだけです。それ以上のものはありません。

通常、ヘッダー ファイルでインターフェイス/クラスを定義すると、そのインターフェイス/クラスを複数の異なる本体ファイルに実装できます。各ファイルには、特定のプラットフォーム fi Win32/Mac OS X /Linux の実装が含まれています。

ヘッダーの fi (.h ファイル):

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 はかなり「完全」であり、プラットフォーム固有のコードを気にせずに必要なほとんどすべてのツールを備えているため、Qt をお勧めします。ただし、必要な場合は、上記のアプローチを使用できます。

于 2013-03-18T08:37:36.937 に答える