Win32API 質問箱

このエントリーをはてなブックマークに追加
130デフォルトの名無しさん
>>129

無理せず基本からやりなおせって。
131デフォルトの名無しさん:2001/07/20(金) 20:06
サスペンド・スタンバイになろうとしているのを検知する方法ってある?
132デフォルトの名無しさん:2001/07/20(金) 20:23
>>131
WM_POWERBROADCAST
133デフォルトの名無しさん:2001/07/20(金) 20:23
WM_POWERBROADCAST
134デフォルトの名無しさん:2001/07/20(金) 20:52
>>127
hMemDC に適当な bitmap を SelectObject させとかなくちゃだめ。
メモリDC は初期状態だと 1x1 ピクセル、depth=1 の
ビットマップしか持っていないから。

hBitmap = CreateCompatibleBitmap(hDC, size_x, size_y);
SelectObject(hMemDC, hBitmap);

とかやってみな。
135デフォルトの名無しさん:2001/07/20(金) 22:54
SetPixelで画面を描画していくのと、DIBのビットマップを
作って、そっちのデータに直接書き込むのとどっちの方が
能率いいと思いますか。
136デフォルトの名無しさん:2001/07/20(金) 22:56
>>135
そりゃ描画内容にもよるだろ。
137135:2001/07/21(土) 00:00
>>136
フラクタルの画像をかこーと思ったんですが、
一点づつ打っていくのでDIBのほうがいいでしょうか>
138127:2001/07/21(土) 00:02
>>134
できました!!
どうもありがとうございました。
139デフォルトの名無しさん:2001/07/21(土) 00:31
>>137
SetPixelは遅いと思われ
140デフォルトの名無しさん:2001/07/21(土) 00:42
DIBに変換して直接メモリ操作が良いと思う。>137
これって他にDirectX使う以外で良い方法ある?
141デフォルトの名無しさん:2001/07/21(土) 01:21
>>137
前に俺がカオス画像書いたときは、描画スレッドを別に作って、
演算しつつDIBに描画し、WM_TIMERで10msごとにBitBltして表示した。
もちろんDIBに対してクリティカルセクションかけてたけど。
142デフォルトの名無しさん:2001/07/22(日) 23:31
Win2k+VC6.0でCreateHardLink使うとリンクエラーになるけどなんで?
あるいはハードリンクはるコマンドラインツールってない?
143デフォルトの名無しさん:2001/07/22(日) 23:43
>>142
VCのSPは何?
144デフォルトの名無しさん:2001/07/23(月) 00:27
windowsのハードリンクって何?unixのアレ?
いつのまにやらそういう事ができるようになったのか
145デフォルトの名無しさん:2001/07/23(月) 00:55
NTでは大昔からできたよ
146デフォルトの名無しさん:2001/08/08(水) 22:01
シロートながらふとやってみたくなったのですが、
WinMainとウインドウプロシージャを自作クラス内でやるのって
難しいんでしょうか?

クラス定義
→クラス内でWinMainとプロシージャを宣言
→中身を定義
→グローバルでクラスオブジェクト宣言
→WinMain呼ばれる(コンストラクタから呼べるかな?
ってな感じでいけるのかなぁ。
生WinAPI使って全部丸々オブジェクト指向、ってのは
知識浅いと無理でしょうか?
どうかアドバイスお願いします。
147デフォルトの名無しさん:2001/08/08(水) 22:21
>>146
WinMain は OS 側から呼ばれるエントリポイントなので、自分で定義
したクラスから呼び出そうとか考えない方が良い。

実際には直接 OS が WinMain を呼ぶわけではなくて、その前にスター
トアップルーチンが介在しているので、これを自分で書けば不可能では
ないと思うけど、労多くして益なしだからやめいた方が良い。MFC など
のクラスライブラリでも WinMain を介さないフレームワークって見た
ことないし。

ウィンドウプロシージャに関しても呼び出し規約が決まっていて、隠し
パラメータとして this を渡す必要があるメンバ関数は登録できない。
ただし、こっちは抜け道があって

1. SetWindowLong で GWL_USERDATA に this ポインタを格納してお
  き、ウィンドウプロシージャでは GetWindowLong で this を取得
  し、メンバ関数を呼び出す。
2. thunk を使って、this ポインタを埋め込むウィンドウプロシージャ
  を動的に作成する。

なんて方法で解決できる。後者は ATL で使われている。

ところで Win32 API を使ってプログラムを組みたいということなら、
一からフレームワークを作るよりも ATL/WTL を使うことを薦めます
けどね。
148146:2001/08/08(水) 22:21
うが!
APIスレあるのに古いやつageてしまった・・・・
申し訳ないですすみませんごめんなさい
でもsageでいいのでレスください(ぉ
149146:2001/08/08(水) 22:31
あ、レスありがとうございます!
やっぱ難しいのですか・・・う〜ん・・・・・・
ただせっかく書いてもらったし興味は残るんで
コピペしといて勉強してみます。
どうもありがとうございます。
ただATLとかは名前しか知らないんで・・・・
その辺も調べる必要ありってことですね。
ひとまずやってみます、ありがとうございます!
150デフォルトの名無しさん:2001/08/08(水) 22:47
自分のexeのpathを取得する方法は?(GetCurrentDirectoryは×)