アプリ版:「スタンプのみでお礼する」機能のリリースについて

前回、以下サイトを紹介いただき、何とかデスクバンドを作成することができました。

http://msdn.microsoft.com/en-us/library/aa969320 …
http://eternalwindows.jp/shell/shellex/shellex13 …

しかし、こちらの環境は WIndows XP / Borland C++Builder 6 proなのですが、
uxtheme.libがないため、ウィンドウズスタイルが使えません。
ウィンドウズスタイルを使ったタスクバーと自作したデスクバンドに違和感があり、何とかウィンドウズスタイルを使用したいのです。

MSNサイトから、Windws SDK v6.0とv7.1をダウンロードしてUxtheme.libを入手したのですがPCの中のsytem32にあるuxtheme.dll(6.0.2900.5512)と合わないようです。

どなたか、WIndows XP / Borland C++Builder 6 pro(uxthemeが無い環境)でウィンドウズスタイルを使える方法を教えていただけないでしょうか。
具体的には以下コードが使いたいのです。
宜しくお願いします。

<ONPAINTコード>
HTHEME htheme;
HDC hdcPaint;
HPAINTBUFFER hBufferedPaint;
DTTOPTS dttOpts;

htheme = OpenThemeData(NULL, L"TASKBAND");
hBufferedPaint = BeginBufferedPaint(hdc, &rc, BPBF_TOPDOWNDIB, NULL, &hdcPaint);

DrawThemeParentBackground(m_hwnd, hdcPaint, &rc);

ZeroMemory(&dttOpts, sizeof(DTTOPTS));
dttOpts.dwSize = sizeof(DTTOPTS);
dttOpts.dwFlags = DTT_COMPOSITED | DTT_TEXTCOLOR;
dttOpts.crText = crText;
DrawThemeTextEx(htheme, hdcPaint, 0, 0, szText, -1, DT_SINGLELINE | DT_CENTER | DT_VCENTER, &rc, &dttOpts);

EndBufferedPaint(hBufferedPaint, TRUE);
CloseThemeData(htheme);

A 回答 (2件)

もし、.h、LIB の設定が Borland C++ の .h、LIB を使用する設定のままでしたら、Borland C++ の方を無効にして、ダウンロードした新しい方を使用する設定にしてみてはどうでしょう。

この回答への補足

uxtheme.libの件は「VC向けのlibファイルは、C++Builderでは使えない」というのが原因だということが分かりました。implibコマンドでBCB用のlibファイルを作成する必要があり、解決しました。

補足日時:2011/05/05 22:43
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
Borland C++Builderには元々uxtheme.hとuxtheme.libはなく、SDK 6.0/7.1のものを使っています。でも、状況は1)の通りです。今、別バージョンのSDKではと思い、今、ダウンロードしています。
何とかなれば良いのですが・・・・。

お礼日時:2011/05/04 11:57

ウィンドウズスタイルというのが何のことか、いまひとつピンとこないですが・・・。




http://msdn.microsoft.com/en-us/library/bb773257 …
http://msdn.microsoft.com/en-us/library/bb773317 …

によると BeginBufferedPaint とか DrawThemeTextEx とかって Vista 以降ってなってますから、普通に考えると XP では使えないと思います・・・。
DrawThemeParentBackground は XP でも使えますから、↓くらいで我慢するしかないんじゃないでしょうか。
( 質問に掲載されていた Microsoft のページを参考にしています。)

WM_PAINT の処理
RECT rc;
PAINTSTRUCT ps;
COLORREF crText = RGB( 255, 255, 255 );
TCHAR szText[] = TEXT("My DeskBand");

BeginPaint( m_hwnd, &ps );
GetClientRect( m_hwnd, &rc );

DrawThemeParentBackground( m_hwnd, ps.hdc, &rc );

SetTextColor( ps.hdc, crText );
SetBkMode( ps.hdc, TRANSPARENT );

DrawTextW( ps.hdc, szText, -1, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE );

EndPaint( m_hwnd, &ps );
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

MSNサイトから、Windws SDK v6.0とv7.1をダウンロードしてUxtheme.libを追加、Uxtheme.hをincludeして早速、試してみましたが「未定義シンボル__in」エラーが出てしまいました。
入手したUxtheme.libではダメみたいです。
もう少し、頑張ってみます。

お礼日時:2011/05/04 09:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!