トップページ⇒tech
1001コメント290KB

Win32API質問箱 Build47

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/13(月) 08:56:12
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

過去スレ、関連リンクは>>2-5くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com/library/)の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0362デフォルトの名無しさん2006/11/25(土) 01:01:11
初めて知った<GetBitmapDimensionEx。
03633522006/11/25(土) 01:18:04
と思ったら2回目以降使えなくなった
あらかじめSetBitmapDimensionExでサイズを設定しておかなきゃいけないらしい
なんで初めだけ取得できたんだろ・・・?
0364デフォルトの名無しさん2006/11/25(土) 05:00:54
セイント聖矢のジェミニを思い出したのは俺だけで良いはずだ
0365デフォルトの名無しさん2006/11/25(土) 09:27:29
>>361
それで得られるサイズの単位はピクセルじゃないぞ
0366デフォルトの名無しさん2006/11/25(土) 09:31:38
どうせユーザ定義なんだから何でも良いんじゃね?
0367デフォルトの名無しさん2006/11/25(土) 09:59:12
>>359で答えが出てるのに、何悩んでるんだろう?
0368デフォルトの名無しさん2006/11/25(土) 10:02:37
ここで聞くべきかDirectXスレで聞くべきか
COMスレで聞くべきか迷ったのですが…

FrapsやGameCamなどのDirectX乗っ取り型のキャプチャソフトなんですが
どうもキャプチャ動画を見たところDirect3Dのフロントバッファ(かバックバッファ)を
直接取得して録画してるみたいなんですが、どうやって取得しているのかその挙動が良く分かりません。
最初はSetWindowsHookEx()で全プロセスにdllをマッピングして、PEヘッダを見て
Direct3Dの初期化関数(Direct3DCreate8()等)を見つけたらフックして、
出てきたインターフェース(IDirect3DDevice8等)のGetFrontBufferData()を呼び出して
フロントバッファをコピーしているのかと思ったのですが、PEヘッダが暗号化されて
INTにDirect3DCreate8等が存在しないゲーム(具体的にはMaster of Epicというゲームです)でも
ちゃんと録画が可能な上に、この方法だとゲーム起動前にキャプチャプログラムを
起動しないといけない(Direct3DCreateをゲームが呼び出す前にフックしないといけない)ので
ゲーム起動後に起動してもちゃんと動作するFraps等では違った技法を使ってると思うのですが、
その方法がどうしても思い浮かびません。漠然とですがもしかしてIDirect3DDeviceには
メモリ検索で探せるような特定のメモリパターンがあるのかな?と思ったりするのですが…
ご存知の方いらっしゃいましたら是非ご教授お願いしたいです。

しかし…見返してみると…長文杉でホント申し訳ないorz
0369デフォルトの名無しさん2006/11/25(土) 10:15:20
>>368
CLSID乗っ取って、アプリとDirectXの間に一枚噛ませてるんじゃね?
0370デフォルトの名無しさん2006/11/25(土) 11:10:56
>>360
�dクス
0371デフォルトの名無しさん2006/11/25(土) 11:13:18
エクスプローラでファイルを自ウィンドウにD&Dして、フォルダパスを取得することはできるのですが、
逆に自ウィンドウからD&Dして(Spy++のファインダツールのように)エクスプローラを指定→
フォルダパスを取得する方法はどのようにすればいいですか?

アドレスバーから取得する方法を試してみたのですが、
非表示の環境の場合に取得できないのでうまくいきませんでした。
CabinetWClass
-WorkerW
-RrBarWindow32
-ComboBoxEx32
-ComboBox
-Edit ←ここにWM_GETTEXTを投げてみました
0372デフォルトの名無しさん2006/11/25(土) 12:12:13
>>371
無理じゃね?
DnDのファイルコピーとかのオペレーションは受けとり側が操作するから。
ターゲットソースは受け取り側にファイル名渡すだけ。
0373デフォルトの名無しさん2006/11/25(土) 13:00:10
イベントの飛ぶ順序ってどの本に載ってるの?

例えばダイアログをリサイズしたときに、
どういうイベントがどういう順番で飛ばされるのか、などを知りたいのだけど
03743712006/11/25(土) 13:02:15
>>372
そうですか(´・ω・`)
残念。。
0375デフォルトの名無しさん2006/11/25(土) 13:07:11
>>373
つ[Spy++]
0376デフォルトの名無しさん2006/11/25(土) 13:08:45
>>373
MSDN
>Size and Position Messages
ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowfeatures.asp
0377デフォルトの名無しさん2006/11/25(土) 14:27:21
>>368
全く同じことしようとしている人がいて驚愕>MoE
0378デフォルトの名無しさん2006/11/25(土) 16:02:34
簡単なサンプルプログラムをコンパイルするのに、
>cl test.c user32.lib gdi32.lib

みたいに*.libっていうファイルをリンクしないとエラーが出るんですが、
これって静的リンクになっちゃってるってことですか?
0379デフォルトの名無しさん2006/11/25(土) 16:48:20
そのLIBはDLLへの参照を含んでいるインポートライブラリ。
静的ライブラリがリンクされているわけではない。
0380デフォルトの名無しさん2006/11/25(土) 17:17:15
>>379
なるほどそうなんですか。
.libファイルをインポートライブラリ・スタティックリンクライブラリと
見分ける方法でもあるのかな??
0381デフォルトの名無しさん2006/11/25(土) 17:43:15
>>380
dumpbinでどうよ?詳しく使った事無いけど。
0382デフォルトの名無しさん2006/11/25(土) 17:55:00
0383デフォルトの名無しさん2006/11/25(土) 18:55:14
>>381
dumpbinは有料のVS買わないと付いてこないみたいですね。

.libの中でも、
インポートライブラリというのはシンボルテーブルだけのオブジェクトファイルのアーカイブ
静的リンク用ライブラリは実コードも入ったオブジェクトファイルのアーカイブ

ってことで、arなんかのツールでファイル取り出してobjdumpして確認するのがいいみたいですね。
0384デフォルトの名無しさん2006/11/25(土) 18:56:19
他のプロセスで作ったメモリデバイスコンテキストのハンドルを自分に渡して
自分からメモリデバイスコンテキストを使うことはできる?

フックと併せて作ったんだけどローカルではできてもグローバルでは失敗する・・・
0385デフォルトの名無しさん2006/11/25(土) 19:45:42
HDCはローカルなハンドルなのでHDCを操作するのも対象のプロセス内で行う必要がある。
0386デフォルトの名無しさん2006/11/25(土) 20:18:16
>>385
なるほど。SendMessageで自分のウィンドウで処理した方が良さそうだな・・・
0387デフォルトの名無しさん2006/11/25(土) 20:44:20
>>374
http://www.geocities.com/SiliconValley/4942/cabmsgs.html
このページをShellGetPathで検索
0388デフォルトの名無しさん2006/11/25(土) 21:33:50
>>375-376
サンクス
0389デフォルトの名無しさん2006/11/26(日) 01:10:58
C#で遊んでるんですが、
参考にしているソースに"CCFree"って関数がでてきたんです。
これはなんでしょう?

http://bcbjournal.com/free_issue/June03-01.htm
のコードの一部です

// global PIDL, use CCFree()
ITEMIDLIST* pidl = static_cast<ITEMIDLIST*>(hMem);
if (pidl != NULL)
{
    ITEMIDLIST* pidlcopy = shutils::ILClone(pidl);
    shutils::CCFree(pidl);
    return pidlcopy;
}

相当するWin32APIとかマネージAPIとかありましたら教えてください
0390デフォルトの名無しさん2006/11/26(日) 01:20:29
PIDLを解放するのに使っているから、CoTaskMemFreeやMarshal.FreeCoTaskMemに相当するものだと思う。
0391デフォルトの名無しさん2006/11/26(日) 02:19:21
いまさらVS6が欲しくても
もう売ってない
どうすればいいの?
0392デフォルトの名無しさん2006/11/26(日) 02:21:34
Javaの関係でMSDNからも削除されてたな
0393デフォルトの名無しさん2006/11/26(日) 02:21:42
エアーVS6でガマンする
0394デフォルトの名無しさん2006/11/26(日) 03:14:06
>>368
メモリにロードされたあとにも暗号化されてるのか?
0395名無しさん2006/11/26(日) 03:50:46
マルチポストだめもとで、投稿しますすみません。

現在、WindowsXP Pro+ VS2005 Proを使って開発中です。

1を入力されるとIMEがONになって、'あ' と表示するプログラムの作成中です。
以下のコードではIMEがONになってくれなくて、'a' と表示されます。
ご指摘お願いします。

void fnConvert(MSG *pMsg)
{
static int iCnt= 1;

if( (pMsg->wParam == 0x31) && (pMsg->message == WM_KEYDOWN) )
{
pMsg->wParam= 0x41;
break;
}
}
0396デフォルトの名無しさん2006/11/26(日) 03:54:31
>>395
IMEをオンにするコードはどこにあるんだよ
03973952006/11/26(日) 04:06:23
395です。
>>396さん
IMEをONにするコードがわからないのですが、、、
ご教授尾根がいします。
0398デフォルトの名無しさん2006/11/26(日) 04:12:22
while(1){
MessageBox(NULL, "IMEをONにしてください", "", MB_OK);
if(MessageBox(NULL, "IMEをONにしましたか?", "", MB_YESNO | MB_ICONQUESTION) == IDYES) {
break;
}
}
0399デフォルトの名無しさん2006/11/26(日) 04:14:58
>>397
というか最初からそれを聞けよwwwwww
IMEの操作なら>>4の猫でもわかるをみとけ
0400デフォルトの名無しさんNGNG?2BP(0)
>>395
ImmSetOpenStatus
04013952006/11/26(日) 04:22:14
>>396 >>400

ご教授ありがとうございます。
完成したら、報告します。
0402デフォルトの名無しさん2006/11/26(日) 06:49:25
所詮、マルチ厨なんてこの程度か
0403デフォルトの名無しさん2006/11/26(日) 11:22:27
>>369
CLSID乗っ取り…というのが良く分からないのですが、
IDirect3DDeviceのCLSIDを書き換えるという感じでしょうか?(超適当)
実はCOMはバイナリ互換のコンポネートモデルであるという程度しか
知識が無いもので、お恥ずかしながらその辺りの応用に疎いのです。

>>377
なんと同じ事をしようとしている人が居るとは!
プログラム自体はキャプチャプログラムをMoEに限定するならd3d8.dllクローンを作って
偽Direct3DCreate8を作れば簡単にMoEのフロントバッファは取得出来るのですが、
Fraps等はどうやって認識しているんだろうな〜という知的好奇心から質問させてもらいました。

>>394
ちょっとグレーな話になるんですが、ゲームはASProtectで圧縮されてるみたいで、バイナリ自体を見ても
インポートされてる関数が明らかに少ないのです(おそらく元インポートテーブル展開用ルーチン)。
そしてロードされた後(正確にはゲームウィンドウが出た時)のメモリ上のヘッダでは、
INTが消されてIATがあるだけという状態になっています。もちろんIATがあるならd3d8.dllの
Direct3DCreate8をGetProcAddressでアドレスを取得し、アドレスを決め打ちで書き換えてもいいんですが、
どうもIATの展開が終わった時には既にD3Dの初期化は完了しているみたいで、
IATを書き換えた所でDirect3DCreate8を呼び出される事はありませんでした。

また長文で申し訳ない。
もっと簡潔に書けないのか自分はorz
04043892006/11/26(日) 11:45:34
>>390
レスありがとう
pidlはいつもCoTaskMemFreeで解放するものなんですか?
0405デフォルトの名無しさん2006/11/26(日) 12:12:35
DDEってまだ使えるのかね
0406デフォルトの名無しさん2006/11/26(日) 12:17:36
>>403
>CLSID乗っ取り…というのが良く分からないのですが
CoCreateInstanceとかはレジストリを見てCLSIDから必要なdllやexeをロードするわけだから
DirectXのCLSIDに自分のモジュールを登録しておくの。
やったことないし、できるのかもわからんけど。
0407デフォルトの名無しさん2006/11/26(日) 12:18:32
>>404
MSDN読め
0408デフォルトの名無しさん2006/11/26(日) 12:57:39
>>403
Sorceforgeあさってて見つけたんだが
http://sourceforge.net/projects/taksi/
これは参考にならんかね
0409デフォルトの名無しさん2006/11/26(日) 12:58:44
>>405
Vistaでは使えない。
0410デフォルトの名無しさん2006/11/26(日) 13:17:03
>>409
NetDDE が使用不能になるってのは見つけたが、DDE そのものが使用不能になるって記事が見つからんのだが。
0411デフォルトの名無しさん2006/11/26(日) 13:32:20
DDE使えなくなったら動かなくなるアプリが大量にでないか?
0412デフォルトの名無しさん2006/11/26(日) 13:40:24
もともと動かなくなるアプリ大量にあるから問題なくね?
0413デフォルトの名無しさん2006/11/26(日) 13:45:38
今ちょっと試してみたら、
VistaのエクスプローラのフォルダウインドウじゃDDE使ってないみたいね
レジストリ(HKEY_CLASSES_ROOT\Folder)もなくなってる

>>389
も無駄な技術になったか
0414デフォルトの名無しさん2006/11/26(日) 13:46:23
>>410-411
実際、Vistaで動かしてみそ。ほとんど動かないから。(DDEサーバーがほぼ使えない)
ただ、中途半端にスダブが残っているので、その機能だけなら動くけど
0415デフォルトの名無しさん2006/11/26(日) 14:22:44
もしかすっとIE7にDDEでURL渡せないとか?
0416デフォルトの名無しさん2006/11/26(日) 15:14:15
>>408
DLL Injecttionで相手先のIDirect*インターフェースの
vtable乗っ取りしてるっぽいね。やっぱりこれしかないか
0417デフォルトの名無しさん2006/11/26(日) 15:31:53
めんどくさいなぁ。
いくつか書き直さないといけなくなるな。
0418デフォルトの名無しさん2006/11/26(日) 15:51:32
DDEって良く分からんが、何のためにあるの?
0419デフォルトの名無しさん2006/11/26(日) 15:54:22
お気楽プロセス間通信と理解している
0420デフォルトの名無しさん2006/11/26(日) 15:59:04
IPCは
・DDE
・window message
・named pipe(NT系)
・DCOM
が用意されてるんだが
DCOMはレジストリがウザい
named pipeは98系で使えない
ってことでwindow messageかddeになるのよね
他にあったら教えてたもれ
0421デフォルトの名無しさん2006/11/26(日) 16:03:04
socket
mailslot
RPC

後者2つは使ったこともないが
0422デフォルトの名無しさん2006/11/26(日) 16:06:57
名前なしのパイプ
メールスロット
RPC
(メッセージの一種だけど)WM_COPYDATA
0423デフォルトの名無しさん2006/11/26(日) 16:14:58
これこれ、共有メモリを忘れていますよ
0424デフォルトの名無しさん2006/11/26(日) 16:21:21
>>423
イベント通知ができません...
0425デフォルトの名無しさん2006/11/26(日) 16:56:40
>>424
名前付きイベントと組み合わせれば・・・
0426デフォルトの名無しさん2006/11/26(日) 17:06:45
>>406
成程、CoCreateInstanceはレジストリのCLSID見てモジュールをロードするんですか、勉強になります。
しかしDirect3Dに関してはCOMで作ってるクセにDirectX8からCOMを逸脱しているらしく
CLSIDが登録されていない(=CoCreateInstanceでインスタンスを作れない)みたいです。
なんでこんな仕様になったのか理解不能なんですが、ともあれCLSIDからの乗っ取りアプローチは
Direct3D8に関しては無理みたいです(´・ω・`)

>>408
おお…これは、すごい。動画処理をVfWでやってるのが多少残念ですが(僕のプログラムでも
最初の実装ではVfWでしたが、処理が遅い+マルチスレッドを想定していないらしく、
プログラミングしづらい上に、2GB制限等のユーザー側の利便性を損なう欠点が多々見つかった事から、
DirctShowへの乗り換えを検討しています。)参考になりそうな部分はとても多いです。
実は僕C++は始めたばかりで、テンプレートクラス等個人的に見慣れない部分はありますが
がんばって解読してみようと思います。情報有難うございました。

そろそろ長引いちゃってアレなのでこの辺りで消えます。
付き合ってくださった皆さん本当に有難うございましたm(_ _)m
0427デフォルトの名無しさん2006/11/26(日) 17:07:34
つまりwin9xしねばいいのにってことだな
0428デフォルトの名無しさん2006/11/26(日) 17:14:50
>>413
Firefoxでフォルダ開くとどんどん新しい窓ができるのはそのせいカー
0429デフォルトの名無しさん2006/11/26(日) 17:15:33
>>426
多分知ってると思うが
ttp://saw.minidns.net/software/
DirectXのHookはこれも参考になる
0430デフォルトの名無しさん2006/11/26(日) 17:18:25
今SetWindowPosを使ってWindowを常に最前面に出しているのですが
フルスクリーンのゲームなどより前に出てきません。
フルスクリーンより前に持ってくることはできるのでしょうか?
0431デフォルトの名無しさん2006/11/26(日) 17:24:15
>>430
ゲームがフルスクリーンになったあとに最前面にもってくる
0432デフォルトの名無しさん2006/11/26(日) 17:29:58
>>431
ゲームを起動した後に起動するということですよね?
それをしても負けてしまうのです;
0433デフォルトの名無しさん2006/11/26(日) 18:04:40
>>432
タイマーで定期的に最前面にもってきてもだめか?
0434デフォルトの名無しさん2006/11/26(日) 18:07:09
誰一人、ゲームが再描画の度に最前面に持ってきているのでは
という事に、ツッコミを入れない件について
0435デフォルトの名無しさん2006/11/26(日) 18:23:17
>>433
タイマーで呼んだらきました。WM_CREATEでつくってそれっきりでした。
ありでした
0436デフォルトの名無しさん2006/11/26(日) 18:29:51
>>434
そんなコード誰も書かないだろ
常識的に考えて
0437デフォルトの名無しさん2006/11/26(日) 18:33:16
プログラマの常識的に考えて〜〜しない
そんな風に考えて(ry

まあ、解決したようでなによりだけどな
0438デフォルトの名無しさん2006/11/26(日) 18:33:51
すまんな
SetWindowPosで最前面にできないなら、ゲーム側で
何かしているとしか、考えられない。

それに、ベクターにいけば、そんなウンコアプリなんて
いくらでも存在してるから、恐ろしいのだよ。
0439デフォルトの名無しさん2006/11/26(日) 19:28:40
Createじゃタイミングが悪いんじゃないの?
まだウインドウないんだし
0440デフォルトの名無しさん2006/11/26(日) 19:38:35
いやフルスクリーンのゲームもまた最前面ウィンドウなんだから
最後にアクティブになるゲーム画面が前面に出ちゃうでしょ
だからフルスクリーンになった後に最前面化させないと出てこない
0441デフォルトの名無しさん2006/11/26(日) 20:31:06
ゲームのウィンドウをオーナーに指定すれば必ず手前に出る
0442デフォルトの名無しさん2006/11/26(日) 20:40:21
DirectXのフルスクリーンだと、どうしようもないんじゃね?
0443デフォルトの名無しさん2006/11/26(日) 20:41:32
フルスクリーンだとGDIのクリッピングを無視するから
ゲームの描画で上書きされる可能性はあるけど
ウィンドウマネージャ的には手前に出せる
0444デフォルトの名無しさん2006/11/26(日) 21:08:40
Vistaはまた挙動が違うんだろうなあ・・・
0445デフォルトの名無しさん2006/11/26(日) 21:12:10
ウィンドウズプログラムで質問したい事があります。
開発環境はVS2003です。SDKで作っています。

リストビュー(レポート)の中でドラッグの開始位置と終了位置のアイテムとサブアイテムを取得するために、
リストビューをサブクラス化してWM_LBUTTONDOWNとWM_LBUTTONUPを受け取ろうとしたのですが、
WM_LBUTTONDOWNは通知されるのに、WM_LBUTTONUPはプロシージャに通知されず困っています。
WM_LBUTTONUPを取得する方法を教えていただけないでしょうか?
0446デフォルトの名無しさん2006/11/26(日) 21:22:00
VistaのAeroモードでウィンドウの内容をBitBltすると
画面外の情報もちゃんと取れたのにちょっと感動
04474452006/11/26(日) 21:24:58
補足します。
ダブルクリックの後にはWM_LBUTTONUPが通知されました。

プログラムはこのHPのサンプルを書き換えました。
ttp://wisdom.sakura.ne.jp/system/winapi/common/common15.html

WNDPROC DefListProc;

LRESULT CALLBACK ListProc(
HWND WH_Window,
UINT msg,
WPARAM wp,
LPARAM lp)
{
switch(msg)
{
case WM_LBUTTONUP:
MessageBox(WH_Window,"","",MB_OK);
break;
}
return CallWindowProc(DefListProc,WH_Window,msg,wp,lp);
}

hList = CreateWindowEx(0 , WC_LISTVIEW , 0 ,
WS_CHILD | WS_VISIBLE | LVS_REPORT ,
0 , 0 , 10 , 10 , hWnd , (HMENU)1 ,
((LPCREATESTRUCT)lp)->hInstance , NULL);

DefListProc = (WNDPROC)GetWindowLong(hList,GWL_WNDPROC);
SetWindowLong(hList,GWL_WNDPROC,(LONG)ListProc);

よろしくお願いいたします。
0448デフォルトの名無しさん2006/11/26(日) 21:38:59
試しにSpy++でマイコンピュータのリストビューのメッセージを見てみたが
ちゃんと、LBUTTONDOWN→MOUSEMOVE→LBUTTONUP来てたがね
まぁ、何かやってることがおかしいんだろうけど・・・
0449デフォルトの名無しさん2006/11/26(日) 21:57:43
フルスクリーンうぜぇ。
画面全体を有効に使っているならまだしも、
黒いスペースが埋められているだけだし。
せめてタクスバーを残してくれ。
04504452006/11/26(日) 22:18:17
>>448
問題のプログラムをSpy++で覗いた所WM_LBUTTONUPは発行されていました。

ためしに
return CallWindowProc(DefListProc,WH_Window,msg,wp,lp);
↓
return DefWindowProc(WH_Window,msg,wp,lp);
に変えてみたところ、WM_LBUTTONUPメッセージを取得できました。

リストビューのプロシージャが悪さをしているようなので、調べてみます。
ありがとうございました。
0451デフォルトの名無しさん2006/11/26(日) 23:35:16
教えてください。

CreateWindowExで拡張ウィンドウスタイルを使わないようにするには
CreateWindowを使えばいいんですがExのみを使うっていう前提の場合、
CreateWindowEx(NULL,・・・);でいいんでしょうか?
0452デフォルトの名無しさん2006/11/26(日) 23:55:05
>>451
イエス。拡張ウィンドウスタイルは(普通のスタイルもそうですが)スタイルを示すビットフラグの
論理和で示されるので、全てのビットが0=NULLを指定すれば拡張ウィンドウスタイルは無効になります。

正確には、なると思います。実際やって見た事がないので。
04534512006/11/27(月) 00:08:22
>>452
ありがとうございます。

WS_EX_LEFT
WS_EX_LTRREADING
WS_EX_RIGHTSCROLLBAR

の定義も0x00000000なんですがこれはデフォルトでそうなってると解釈しました。
0454デフォルトの名無しさん2006/11/27(月) 00:15:24
>>453
その通り。それらは拡張スタイルを指定しなくても自動でそうなっているスタイル、
要するに拡張スタイルの指定と対比させるために敢えて定義された定数です。
0455デフォルトの名無しさん2006/11/27(月) 00:26:34
>>451
細かいことと思うかもしれないが、NULLはポインタ専用だ。そこには0使え。
0456デフォルトの名無しさん2006/11/27(月) 00:27:13
>>455
haxa?
04574512006/11/27(月) 00:28:33
>>455
その辺はワーニング対策で#define DF_NULL 0x00000000を定義してそれ使ってます。
0458デフォルトの名無しさん2006/11/27(月) 00:44:57
CreateWindowは0Lを渡してるな。
0459デフォルトの名無しさん2006/11/27(月) 04:39:11
ものすごく見当違い名事をいってたらすいません
この先、microsoftが提供する開発環境って
platform sdk が無くなって、.net flameworkだけになるってことはありますか?

ちょっと疑問に思っただけなんですが
0460デフォルトの名無しさん2006/11/27(月) 04:51:25
Platform SDKと.NET Framework SDKはすでに統合されてWindows SDKになったけど
従来のPlatform SDKの内容(+Vistaの新API)は今のところそのまま入ってる。
将来的には(かつてのWin16 APIみたいに)Win32 APIはWDKに追いやられて
ユーザーモードアプリはWinFX API一本になるということもあるかもね
0461デフォルトの名無しさん2006/11/27(月) 06:56:20
CreateWindowも実は、CreateWindowExのマクロだからな・・・
ウィンドウ関係のAPIラッパクラスを作ってる時にはじめて知ったわ
■ このスレッドは過去ログ倉庫に格納されています