CoreSDKはどう使えばいいんでしょうか?


TERU  2004-11-15 03:58:30  No: 55164

システムカラーの件でCoreSDKをインストールしたんですが、使い方がわかりません。無理矢理uxtheme.hとlibをVC++のフォルダに入れてみたんですが、WP_CAPTIONなどの定数は定義されていないとエラーがでました。どのヘッダに定義されているか分かりますでしょうか?VC++は6.0です。よろしくお願いします。


瀬戸っぷ  2004-11-15 05:00:16  No: 55165

> システムカラーの件でCoreSDKをインストールしたんですが、使い方がわかりません。
> 無理矢理uxtheme.hとlibをVC++のフォルダに入れてみたんですが、
> WP_CAPTIONなどの定数は定義されていないとエラーがでました。
> どのヘッダに定義されているか分かりますでしょうか?
> VC++は 6.0です。よろしくお願いします。

CD-R等にどのように焼いて貰ったのか判りませんが……
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm
から各種cab等をDLして表記のとおりに展開すると、
autorun.inf等が入ったディレクトリが作成されると思います。

ソコにdefault.htmがありますので、「IEで」開いて下さい。
左側に「CoreSDK」とあるのでクリックして開いたページから、
次は右側に「Install this SDK!」というリンクがあります。
クリックすると、インストール状況をチェックして
インストールオプションを選択して、「Continue」でインストールが進むはずです。
setup\CoreSDK-x86.msiをダブルクリックでもOKかと思いますが。

インストール後、Visual Studioの環境設定を確認する必要があります。
[ツール][オプション]の[ディレクトリ]で、
それぞれのパスが正しく設定されているか確認して下さい。
(インストールしたディレクトリがリストで上の方にあるかも確認)

# で、Win9Xで「実行可能ファイル」のパスが間違っていたことがあるんだけど…


TERU  2004-11-16 04:10:45  No: 55166

瀬戸っぷさん、お答えありがとうございます。
実はCDに入れてもらったけど、setupをクリックしてもインストールできなくて結局自分のパソコンでダウンロードしました。初めてこんなデカイのをダウンロードしました…そしてまた上記のアドレスでもダウンロードしたんですが、コマンドプロンプトでcd c:\psdktempと打ってrun psdk-hull.datとすると、
I/F Error(1)
Exit USB#0
と出てきました。これは明らかにできていない証拠ですよね?どうしたらいいんでしょうか?お願いします。


瀬戸っぷ  2004-11-16 07:14:13  No: 55167

> run psdk-hull.datとすると、

.datでなく.batです。
多分タイプミスだとは思いますが。

このページの例の場合、右側のリンクにあるファイル(15ファイル)を
c:\psdktempにDLした場合の解説になっています。
別のところにDLした場合には、カレントドライブとカレントディレクトリをそちらに変更して下さい。

で、展開用のバッチファイル(psdk-full.bat)に展開するディレクトリ名を指定して実行すれば、
指定したディレクトリを作成しソコに展開されます。(空き容量に注意。)
展開後はCD-R等に焼いておいた方がよろしいかと。

> I/F Error(1)
> Exit USB#0
> と出てきました。これは明らかにできていない証拠ですよね?

インターフェイスのエラーでしょうか……見慣れないものなのでちょっと不明です。


TERU  2004-11-16 08:43:16  No: 55168

>datでなく.batです。
>多分タイプミスだとは思いますが。

すいません。タイプミスです。
>展開用のバッチファイル(psdk-full.bat)に展開するディレクトリ名を指定
>して実行すれば、指定したディレクトリを作成しソコに展開されます。

展開するディレクトリ名を指定するってどうするんですか?
起動すると一瞬で消えてしまいます。


TERU  2004-11-16 08:49:36  No: 55169

すいません。質問が増えました。
バッチファイルを右クリックの編集を押してみたんですが、その中で「OSがNTなら」みたいなコードがあるのですが、NTじゃないとだめですか?ぼくのはXPです。コードは
IF "%OS%" == "Windows_NT" setlocal
です。


瀬戸っぷ  2004-11-16 09:19:58  No: 55170

> 展開するディレクトリ名を指定するってどうするんですか?
> 起動すると一瞬で消えてしまいます。

説明(英語ですが)どおりにコマンドプロンプトを開いていますよね?
一応、DLしたのが c:\psdktemp として説明しますが……
スタートメニューから「コマンド プロンプト」を起動します。
表示される画面で、「c:」と入力Enterでカレントドライブがcになります。
さらに「cd c:\psdktemp」と入力し、Enterで実行するとカレントディレクトリが変更されます。
その状態で、「psdk-full c:\psdk」と入力、Enterを押すと実行されc:\psdk以下に展開されます。
cドライブに展開するのは容量が厳しくなると思われるので
他に適当に空いているドライブがあったらそちらに展開した方がよろしいかと。
(展開後、さらにインストールが必要ですし)

# カレントドライブやカレントディレクトリについて不明な場合はDOSについて勉強して下さい。
http://www.amazon.co.jp/exec/obidos/ASIN/489627234X/qid=1100531286/sr=1-1/ref=sr_1_10_1/250-8193544-4277026
http://www.amazon.co.jp/exec/obidos/ASIN/4797320435/qid=1100531286/sr=1-2/ref=sr_1_10_2/250-8193544-4277026
# の辺りが参考になるでしょう。(カレントディレクトリなんかはWindowsでも多少関係します)
## 既に理解済みでしたら申し訳ない。

> NTじゃないとだめですか?ぼくのはXPです。

Windows9X系列か、NT系列かを調べているだけです。
XPならば、NT系列ですので問題ないはずです。
コマンドプロンプトで「echo %OS%」とすれば表示されると思いますが。

# ちなみに、XPのSP2関係でSDKがちょっと(?)更新されているようです。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
# ナニが変わったのかよく調べていませんケド。


瀬戸っぷ  2004-11-16 09:49:36  No: 55171

ちなみに、DLしたファイルが不幸にも壊れていて正常に展開できない場合は、
「ERROR: Cabinet file ファイル名 is corrupted」
と表示されて途中で止ります。
その場合は指定されたファイルを再度DLし直す必要があります。

# XPSP2の方で、PSDK-FULL.4.cabを1回、PSDK-FULL.9.cabを3回DLし直した(T_T)


TERU  2004-11-17 02:32:42  No: 55172

何度もお答えいただき、ありがとうございます。
展開もインストールもできました。でも、[ツール][オプション]の[ディレクトリ]で、パスが設定されていません。試しにinclude(c:\Program Files\Microsoft SDK\includeです)とlibを設定してみたんですが、一度VCを閉じてまた起動すると設定したのがなくっています。何をどこに設定したらいいか教えていただけないでしょうか?  何度も質問して本当に申し訳ありません。お願いいたします。


瀬戸っぷ  2004-11-17 04:39:17  No: 55173

> でも、[ツール][オプション]の[ディレクトリ]で、パスが設定されていません。
> 試しにinclude(c:\Program Files\ Microsoft SDK\includeです)とlibを設定してみたんですが、
> 一度VCを閉じてまた起動すると設定したのがなくっています。
> 何をどこに設定したらいいか教えていただけないでしょうか?

普通は設定が消えることはないと思うのですが……
とりあえず、システムのプロパティから環境変数の
include にインクルードファイルのディレクトリ名が、
lib にライブラリのにライブラリのあるディレクトリ名が、
path に実行ファイルのあるパスが指定されています。
他に…レジストリの
HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Build System\Components\Platforms\Win32 (x86)\Directories
以下に同様に設定されているようです。

なお、設定する際はVisual Studioの元々のモノより前になるように設定する必要があるかと。


TERU  2004-11-17 06:49:41  No: 55174

環境変数とレジストリ共に3つinclude,lib,binを設定しました。あと、実行ファイルは「bin」でいいですよね?とりあえず設定はできたのでGetThemeSysColorを使ってみたんですが、定数が定義されていないとエラーが出ます。試したコードは
GetThemeSysColor(GetWindowTheme(hwnd),WP_CAPTION,CS_ACTIVE,TMT_FILLCOLOR,&xpcolor);
です。真ん中の3つの定数でエラーが出ました。何かまだ設定するものがあるんでしょうか?


瀬戸っぷ  2004-11-17 07:38:33  No: 55175

> あと、実行ファイルは「bin」でいいですよね?

Binの前にBin\winntも加えておいた方がいいかも知れません。(自信なし)

> GetThemeSysColor(GetWindowTheme(hwnd),WP_CAPTION,CS_ACTIVE,TMT_FILLCOLOR,&xpcolor);
> です。真ん中の3つの定数でエラーが出ました。何かまだ設定するものがあるんでしょうか?

GetThemeSysColor()の引数は2つ…のようですが??

# XPは持っていないので試せない…


TERU  2004-11-17 09:07:38  No: 55176

すいません。GetThemeSysColorは引数は2つです。GetThemeColorを書いていました。winntも設定しましたが、特に変わりなしです。定数のエラーはSDKのincludeの中のヘッダをインクルードしたら無くなりました。でもGetThemeSysColorがあってもSetThemeSysColorがないので、セットできないと思うんです。変わりにSetSysColorsでやってるんですが、やはり変わりません。どうしたらいいですか?変な質問ですいません(汗)


瀬戸っぷ  2004-11-17 10:16:27  No: 55177

XPも無く、ビジュアルスタイルを操作したこともないので、
詳しい方法については不明です。
ざっとMSDNを見た限りでは…
DrawThemeEdge()かDrawThemeBackground()でオーナードローの様に
描画できるような感じですが、色の指定が出来る様子もなく……


案内人  2004-11-18 00:24:04  No: 55178

TERUさん、ちゃんと随時改行をいれてみやすくして下さい。
プログラマーなら字下げ等は気にしたほうがよいですよ。
まずは聞いてばかりいないで、MSDNみて関数仕様を理解して下さい。
私がやった限りだとなんの問題もなくできているのですが・・・

どうやって書いてますか?


TERU  2004-11-18 02:14:45  No: 55179

瀬戸っぷさん、案内人さん、本当に申し訳ありません。自分でやってから聞くのが当たり前ですよね。調子に乗って聞きすぎました…。
あの、僕が作りたいのはシステムカラーを反転させるプログラムで、

#define ELEMENT  24
static COLORREF  newSysColor[ELEMENT] = { 0 };
static COLORREF  defSysColor[ELEMENT];
static const int setSysColor[] = {
  COLOR_3DDKSHADOW ,    COLOR_3DFACE ,
  COLOR_3DHILIGHT ,    COLOR_3DLIGHT ,
  COLOR_3DSHADOW ,    COLOR_ACTIVEBORDER ,
  COLOR_ACTIVECAPTION ,  COLOR_APPWORKSPACE ,
  COLOR_BACKGROUND ,    COLOR_BTNTEXT ,
  COLOR_GRAYTEXT ,    COLOR_CAPTIONTEXT ,
  COLOR_HIGHLIGHT ,    COLOR_HIGHLIGHTTEXT ,
  COLOR_INACTIVEBORDER ,  COLOR_INACTIVECAPTION ,
  COLOR_INFOBK ,    COLOR_INFOTEXT ,
  COLOR_MENU ,    COLOR_MENUTEXT ,
  COLOR_SCROLLBAR ,    COLOR_WINDOW ,
  COLOR_WINDOWTEXT,    COLOR_WINDOWFRAME ,
      };

int i;
switch (msg) {
    case WM_DESTROY:
  SetSysColors(ELEMENT , setSysColor , defSysColor);
  PostQuitMessage(0);
  return 0;

    case WM_CREATE:
  for(i=0;i<ELEMENT;i++){
     defSysColor[i] = GetSysColor(setSysColor[i]);
     newSysColor[i] = 0x00FFFFFF - defSysColor[i];
         }
  SetSysColors(ELEMENT , setSysColor , newSysColor);
         break;
こんな風に反転してセットしています。
しかし、これではXPのタイトルバーやスタートの横のバー(タスクバー?)は反転しないんです。なので、そのシステムカラーを取得して反転してセットしたいんです。この、取得してセットする方法を教えていただきたいです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加