システムトレイにアイコンを表示したい。
とてもシンプルなはずですが、 を作成しHICON
て描画する方法がわかりません! 「互換性のあるビットマップ」、「互換性のある DC」などのすべてのものは、私を本当に混乱させます。
アイコンを描画するにはどうすればよいですか?
システムトレイにアイコンを表示したい。
とてもシンプルなはずですが、 を作成しHICON
て描画する方法がわかりません! 「互換性のあるビットマップ」、「互換性のある DC」などのすべてのものは、私を本当に混乱させます。
アイコンを描画するにはどうすればよいですか?
あまり詳しく説明しなくても、次の C++ クラスを使用できます。
Windows Template Libraryを使用していますが、単純な C に変換するのは非常に簡単です。
using namespace WTL;
class CIconDC : public CDC
{
public:
HBITMAP hBmpOld;
CIconDC(int cx = GetSystemMetrics(SM_CXSMICON), // width
int cy = GetSystemMetrics(SM_CYSMICON), // height
HDC templateDC = CClientDC(NULL)) // automatically calls ReleaseDC
{
this->CreateCompatibleDC(templateDC);
hBmpOld = this->SelectBitmap(CreateCompatibleBitmap(templateDC, cx, cy));
}
~CIconDC() { DeleteObject(this->SelectBitmap(hBmpOld)); }
HICON CreateIcon() const
{
// temporarily swap bitmaps to get handle of current bitmap
HBITMAP hBitmap = this->GetCurrentBitmap();
ICONINFO ii = { TRUE, 0, 0, hBitmap, hBitmap };
return CreateIconIndirect(&ii);
}
};
クラスの使用は非常に簡単です。
CIconDC dc;
dc.LineTo(10, 10); // for example -- you can do whatever you want with the DC
CIcon hIcon = dc.CreateIcon(); // converted to an HICON!