1 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 01:54:24 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ! 過去スレ、関連リンクは>>2-10 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで - Win32API質問箱 wiki wiki.livedoor.jp/program1/d/FrontPage Win32API質問箱 Build76 pc11.2ch.net/test/read.cgi/tech/1233622578/
231 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:15:03 ] 後に出たAPIほど洗練されるのはある意味当たり前 VistaのAPIが完成度高いってよりWin32 APIが極端に使いにくいだけ でも歴史的背景を考えればやむなし
232 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:40:29 ] はぁ? VistaのAPIが完成度高い??洗練されてる?? もしかして、VistaのAPI=.NET3.0/WPF=洗練されてる、とか言いたいだけの人なのかね
233 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:45:09 ] WERやスレッド関連は以前よりはるかに完成度が高いと思うけど
234 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:49:43 ] >>233 アホは議論に参加しなくていいから。
235 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:54:28 ] 一部流動的なものを対象としている為に、 ライブラリのような「完成度」が求めることが不可能 であるか極度に困難だからこそAPIと呼ばれライブラリ とは呼ばれない件について (以上チラ裏)
236 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:06:18 ] まあ APIの完成度 なんて表現を使う時点で程度の低さが分かっちゃうけどね
237 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:08:39 ] API=Aplication Programming Interface だったっけ? 完成度は求められる対象じゃないか?
238 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:11:14 ] いやVISTAのAPIは完成度高いだろ だってさ、XP用のソフトも使えるんだぜ? XP = XP用のソフトしか使えない VISTA = XP用ソフト、VISTA用ソフトの両方が使える
239 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:18:44 ] そもそもVistaのAPIつっても大部分がWin16時代からの物なのに「完成度」てw どうも"API"を理解してない人がいるみたいだね またいつもの人か?
240 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:20:03 ] どこぞのVZ厨だろ
241 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:21:46 ] >>239 そだね。APIってインターフェースだから内部構造は絶対不変で Win16のコードすら必ず残ってるからね。だからVistaでもXPでも Windows2.0のプログラムがそのまま動くw。
242 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:30:44 ] WERやスレッド関連って、VistaからのAPIだろ…
243 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:40:04 ] MSの互換性絶対主義の賜だね さすがMS様はわかってらっしゃる
244 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:07:33 ] >>241 64bit版にはWin16サポート無くなってるんじゃなかったか? 古いInstallShieldのインストーラが起動しないとかどっかで見た気がする
245 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:23:24 ] まぁさすがにWin16はもういいだろ・・・
246 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:24:42 ] 最近のソフトでも、インストーラーが16bitのがあるのがむかつく。 しかも64bit版でそんなインストーラ使うアホなとこもあるw
247 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:32:33 ] .NET Frameworkなんか糞だろ 開発する側のメリットしか考えてない使い手無視のAPI 互換性だけでWin32APIを残しているあたりも糞OS
248 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:43:59 ] PEの出だしって16bitじゃなかったか?
249 名前:デフォルトの名無しさん [2009/03/08(日) 15:52:50 ] Windowsの灰色ってRGBで言うところの(255,255,255)いくつなんでしょうか? SetTextColor(hdc, RGB(0, 0, 0); SetBkColor(hdc、RGB(???)); 背景はダイアログボックスの灰色です これでいろいろ試してみたんですけど なぜか背景色が合わないんです どうしたらダイアログボックスと文字の背景色を合わせられるでしょうか?
250 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:53:29 ] PEは32/64bitだろ 因みに16bitはNEと呼ばれてた LEとかLXとかっていう16/32bitハイブリッドなのもあってこれは9x時代のドライバにも使われてた
251 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:55:43 ] >>249 hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
252 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 15:59:24 ] >>250 すまん 言い方が悪かった OSが16bitだった場合実行される16bit命令が出だしにあったんじゃないかと
253 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:00:45 ] int型だぁ〜(><;)わからないよ〜
254 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:04:12 ] >>249 ::SetTextColor( hDC, ::GetSysColor( COLOR_BTNTEXT)); ::SetBkColor( hDC, ::GetSysColor( COLOR_3DFACE));
255 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:04:58 ] >>251 さん SetBkColor(hdc、COLORREF ) hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); を COLORREF形式にするにはどうすればいいんでしょうか?
256 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:05:56 ] >>254 ありがとうございます できましたm(_;)m
257 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:05:58 ] >>249 設定とかによって変わってくるから決めうちはいかんよ。
258 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:17:53 ] ほんと決め打ちは勘弁して欲しい 配色を黒基調にしてると文字が見えなくなるとかw
259 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:46:50 ] __ \|/ | ┌─┼─?|─┬──┐ 三 |入 ,> .└-、 三 = <、 ヽ、 ,-‐-、 三 /.| ,> .┌-、 "''-( ( ̄〇 └─┼───┴──┘ "''''""" ヽ,,,,ソ _|_ ////
260 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:52:59 ] 大抵SetBkMode(TRANSPARENT)するから SetBkColor()はあんまり使わんかも
261 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 16:56:45 ] >>248 出だしつーかファイルの一番先頭は「このプログラムはDOSじゃ動かねーよ」って表示するだけの16bitコードだな。 極限までバイナリサイズ縮める遊びとかでたまに書き直してた。
262 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:00:21 ] >>261 ちゃんとしたプログラムに差し替えも可能だな。
263 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 17:31:27 ] 誰ですか、スタブをjxw,exeにした人はw
264 名前:デフォルトの名無しさん [2009/03/08(日) 20:49:27 ] VC++2005 でサウンド入出力プログラムを作っています. SDK,低レベルAPIを使っています. 入力,出力共にマルチバッファリングを行っているのですが, 入力と再生の間に,バッファ数に従う遅延が生じてしまいます. 体感では,(1バッファに録音する秒数 * 用意したバッファ数)秒 の遅延が生じていると思われます. リアルタイムに近い動作を実現したいため, 1バッファに録音する秒数(RecSEC)を短くしています. 現在の設定では RecSEC = 0.005 [sec/buffer] です. バッファ数が少ないと音声がブツブツと途切れてしまいますが, バッファ数を増やす事で解決しました. これで遅延量が少ない動作が実現できたと思っていたのですが, RecSEC = 0.1 として実行してみたところ,約0.1[sec]の遅延を期待していたのですが 約(0.1*バッファ数)[sec] という大きな遅延となってしまいました. ソースコードをアップしましたので,解決方法をご教授願います. waveInStart の実行位置を変えてみる等色々とやってみましたが よくわかりませんでした. pass: sagehoge ttp://www2.uploda.org/uporg2074476.txt.html よろしくお願いします.
265 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:21:12 ] 延滞が気になるASIOを使え
266 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:28:17 ] whOut[k].dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP; whOut[k].dwLoops = 1; 関係ないと思うけど↑が気になった 両方とも0でよくね?
267 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:44:58 ] >>264 Vista以降ならCoreAudioで扱えばいい。 他にもDirectSoundでバッファ読みまくりとか。 ソースは見るまでもないが、きっとやり方間違っているよ。 あらゆる方法を試した事のある俺が言うんだから間違いない。
268 名前:264 mailto:sage [2009/03/08(日) 21:50:58 ] >>265 ありがとうございます. ですが,低レベルAPIで書きたいです. >>266 ループ再生は不要なので,確かに両方とも0ですね. >>267 XPで書いています.DirectXにも挑戦しようか悩みましたが, 低レベルAPIで片付けてみたいのです. お暇な時にでもソースを見ていただけたら.
269 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:55:49 ] APIレベルではどうしようとも遅延が200〜500msあるんだが、それを理解した上でやっているのか?
270 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 21:56:58 ] >>264 ここよりサウンドプログラムスレの方が良いアドバイスもらえるんじゃないか
271 名前:264 mailto:sage [2009/03/08(日) 22:07:46 ] >>269 数値がどの程度かは知りませんでしたが それくらいの遅延は覚悟しておりました. しかし現状ではアルゴリズムの問題で遅延が生じてしまっているため それを解消したいのです. >>270 スレ検索が足りなかったようです. サウンドプログラミングのスレを見つけましたので, そちらでお聞きする事にします. 皆さん,ありがとうございました.
272 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 04:20:37 ] >>231 互換性を切り捨てられるなら君の言うとおりだ。>後の方が洗練
273 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 05:32:19 ] 互換性が切り捨てられるなら新しいOSが出る毎にコードを書き直さないといけないだろ そんなのが洗練されてるとか、馬鹿?
274 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:24:18 ] ↑話を分かっていないバカ
275 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:27:49 ] >>274 お前がな
276 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 07:34:07 ] >>274 荒らすなよ。
277 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 09:56:49 ] ここは荒らしていいスレじゃなかったっけ
278 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 10:33:57 ] 落書きだらけの壁に「落書き禁止」の紙が貼ってあるようなもんだ。
279 名前:デフォルトの名無しさん [2009/03/09(月) 12:42:44 ] 荒らしていいスレ(笑)
280 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 18:31:20 ] >>278 「落書き禁止」なんて貼ってないよ 「自由の板です、どうぞ」の紙が貼られている板
281 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:40:56 ] 以下のコードでnewでメモリ確保すると大丈夫なのにスタックにメモリ確保するとエラーになります。 どこがまずいのでしょうか?なんとなくスタックの概念を根本的に間違っているような気がします。 //----大丈夫---------------------------- #include<windows.h> #include<gdiplus.h> #pragma comment(lib,"Gdiplus.lib") #include<cstdio> void main() { Gdiplus::GdiplusStartupInput gdiplusStartupInput1; ULONG_PTR gdiToken; Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL); Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",pBitmap1->GetWidth()); delete pBitmap1; Gdiplus::GdiplusShutdown(gdiToken); } //----エラー---------------------------- #include<windows.h> #include<gdiplus.h> #pragma comment(lib,"Gdiplus.lib") #include<cstdio> void main() { Gdiplus::GdiplusStartupInput gdiplusStartupInput1; ULONG_PTR gdiToken; Gdiplus::GdiplusStartup(&gdiToken,&gdiplusStartupInput1,NULL); Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",bitmap1.GetWidth()); Gdiplus::GdiplusShutdown(gdiToken); }
282 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:45:43 ] >>281 使ってるクラスの内容は知らんが、 上だとビットマップ削除後Shutdown呼んでるが 下だとShutdown呼んだ後ビットマップ削除してる 辺りが原因なのでは?
283 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:46:53 ] スタックうんぬんというより、クラスのインスタンス生成の概念がわかってないんじゃない?
284 名前:281 mailto:sage [2009/03/09(月) 22:02:47 ] >>282 レスありがとうございます。 おっしゃるとおりでした。 main()を抜ける時にBitmapのデストラクタが実行されてすでに開放された領域を読もうとしていたようです。 >>282 レスありがとうございます。 クラスのインスタンス生成の概念がわかってないっぽいです。 自分のやり方だと確保する領域が固定だと Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); という風にスタックに確保するのですが、 他の人は Gdiplus::Bitmap*pBitmap1=new Gdiplus::Bitmap(TEXT("C:\\WINDOWS\\winnt.bmp")); という風に確保する領域が固定でもnewで確保しているようです。 なぜそうするかは理解できません。
285 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:07:53 ] newを使いたくないなら無理やり↓みたいにスコープ作ればよいのでは。 { Gdiplus::Bitmap bitmap1(TEXT("C:\\WINDOWS\\winnt.bmp")); printf("%d\n",bitmap1.GetWidth()); }
286 名前:281 mailto:sage [2009/03/09(月) 22:22:46 ] >>285 レスありがとうございます。 デストラクタのタイミングを制御する必要がある時意外でも、 たとえば、デストラクタのタイミングを制御する必要がなく、いっけんnewを使う必要が無いような時も 自分のやり方だと Gdiplus::Graphics graphics1(hdc1); という風にスタックに確保する場面で 他の人は Gdiplus::Graphics*pGraphics1=new Gdiplus::Graphics(hdc1); という風にnewで確保しているようです。 この理由がわかりません。
287 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:53:01 ] >>286 クラスのインスタンスでも、基本的には変数と同じ使用方法でいいと思うけどね。 #関数内でのみの使用、永続的な使用等で切り分け わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが 実行されることを示したいからじゃない? ま、別にこだわる必要はなし。 下手にnewばかりしてメモリリークさせるなら>>281 の方が合理的なのは確か。
288 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:59:10 ] コンストラクタでGdiplusStartup呼んで、デストラクタでGdiplusShutdown呼ぶクラス一個つくって mainの頭に置こうぜ
289 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:02:40 ] >>286 サイズがデカいクラスをスタックにとりたくない場合はnewする場合はある。 Gdiplusがそこまでデカいかは知らんが。
290 名前:デフォルトの名無しさん [2009/03/09(月) 23:04:02 ] > Gdiplusがそこまでデカいかは知らんが。 実装依存
291 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:09:29 ] Gdiplusの実装とか
292 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:14:07 ] >>281 のエラーの出るコードをコンパイル実行するとメモリリーク発生だな 何でだろ?
293 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:15:15 ] >>289 言われてみれば、他作クラスはサイズが分からんから 念のためにヒープの方がいいかもな
294 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:19:49 ] readprocessmemory関数を使いたくてVB2005ExpressEditionでプログラムを組んでみたのですが、 エラーが出て動きません。なぜでしょうか??いろいろググってみたけどわかりませんでした。 やりたいことは単にプロセスのメモリを読みたいだけなんですが・・・ 「AccessViolationExceptionはハンドルされませんでした。 保護されているメモリに読み取りまたは書込み操作を行おうとしました。他のメモリ が壊れていることが考えられます。」 Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, ByRef lpdwProcessId As Long) As Long Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpszClassName As String, ByVal lpszWindowName As String) As Long Dim hProc As Long Dim PID As Long Dim threadid As Long hProc = FindWindow("Notepad", vbNullString) threadid = GetWindowThreadProcessId(hProc, PID) ←ここの処理でエラーになる
295 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:23:00 ] >>292 すでに>>285 が答えてるだろ bitmap1が関数の終わりで解放処理を行おうとするが その時にはGdiplusShutdownでgdiplusの環境が破棄されてるから正常に終了できない だからローカル変数のスコープを{}で狭い範囲に閉じ込めなければならない
296 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:25:43 ] >>294 大幅に間違ってる。とりあえず、リファレンスを見直せ。
297 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:26:33 ] HWND な変数に hProc なんて名前を付けるのはやめれ・・・
298 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 23:41:32 ] >>295 すまん、>>282 がそのものずばりのこといってるんだな、俺、ダメポ デストラクタが呼ばれる前にShutdownすれば、当然、メモリリーク出るわな Gdiplus::GdiplusShutdown(gdiToken); でShutdownさているのに プログラム終了時にGdiplus::Bitmap bitmap1のデストラクタ呼ぶんだからな
299 名前:281 mailto:sage [2009/03/09(月) 23:48:25 ] >>287 >>わざとnewで確保するのは、明示的にdeleteを呼ぶことでそこでデストラクタが >>実行されることを示したいからじゃない? 僕もそう思います。 >>288 それもいい方法だと思います。 >>289 newを使う理由が1つわかりました。ありがとうございます。 >>290 とりあえずスタックが壊れるほど大きくはなさそうです。 >>292 ,298 僕も282さんに聞くまで気付きませんでした。 >>293 慎重にやるならそれもいい方法ですね。 >>295 追加説明ありがとうございます。
300 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:01:49 ] >>293 他作クラスであってもスタック上に確保できるならサイズは調べられるだろ。 そうでないとそもそもコンパイル不能だ。 まあ、将来的に変更される可能性はあるが。 ちなみに手元の環境だとsizeof(Bitmap)は16で画像の実態は内部で保有してるポインタの先にある。
301 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:10:50 ] 他人が作ったライブラリの初期化と後始末を同じ関数内でやるのは細心の注意がいるね
302 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:11:28 ] >>300 更に言われてみれば、まともなメーカーが提供してるクラスだと 確かに馬鹿でかいクラスのオブジェクトをスタックに積む、なんて アホなクラスなんぞ無いはずだよな。。。 >コンパイル不能 StackOverflowってコンパイル時に分かるものだったっけ?
303 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:16:13 ] スタックにばかでかい配列取ろうとしたときは怒られるな
304 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:26:58 ] >>303 thx 警告レベルが低いせいかあまり見た記憶が無いな 今度試してみよう
305 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:06:06 ] >>280 >>276
306 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 10:14:17 ] ここは荒らしていいスレじゃなかったっけ
307 名前:デフォルトの名無しさん [2009/03/10(火) 13:11:43 ] OSではなくソフトウェアから、パフォーマンス オプションの「パフォーマンスを優先する」に設定することは可能でしょうか?そのようなAPIをご存知の方いますでしょうか?
308 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:25:29 ] OSもソフトウエア
309 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:30:44 ] >>307 そういうAPIがあるかどうかは知らんが、力技でいくなら、レジストリ書き換えて WM_SETTINGCHANGE を発行すれば?
310 名前:デフォルトの名無しさん [2009/03/10(火) 13:30:46 ] >>308 知らないならレスするなクズ
311 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:32:23 ] G(S)etPriorityClass
312 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:45:49 ] HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation をレジストリAPIで適切な値に書き換えて再起動。
313 名前:307 [2009/03/10(火) 13:54:40 ] ありがとうございます。レジストリ強制書き換えなら可能なのですね。APIでG(S)etPriorityClassでもできるのでしょうか?
314 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 13:59:41 ] システムの動作に関わるレジストリを勝手に書き換えるソフトか ウィルス並だな
315 名前:デフォルトの名無しさん [2009/03/10(火) 14:03:32 ] >>314 お前みたいなクズはウィルスよりたちが悪いぜ。
316 名前:デフォルトの名無しさん [2009/03/10(火) 14:17:00 ] >>315 知らないならレスするなクズ
317 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:48:00 ] WSHはCOMですか?
318 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 22:49:54 ] >>317 はい。API ではないのでスレ違いだと思われます。
319 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 23:17:54 ] ActiveScriptはぎりぎりこのスレの範疇にできるだろうけど、 WSHは外れていると思う。
320 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:09:42 ] ウィンドウのクライアント領域をドラッグしてウィンドウの位置を移動させたいんですが、ちょっとうまくいかないので質問。 WM_MOUSEMOVEでマウスボタンが押されていたらドラッグとみなし、SetWindowPosで前回位置との差分分移動としています。 しかし、これだとマウスが動くと同時にウィンドウがガタガタと元の位置辺りとマウス位置あたりに行ったり来たり を繰り返してしまって、とても汚いです。どういう風にやるとタイトルバーをドラッグした時のように綺麗に動くのでしょうか? ちなみにマウスの座標はクライアントでもスクリーンでもダメでした。
321 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 02:20:15 ] WM_NCHITTESTでHTCAPTION返せ
322 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 06:28:31 ] >>320 いい加減に書くとそうなる (移動した時にWM_MOUSEMOVEが発生するので、WM_MOUSEMOVE→移動→WM_MOUSEMOVE→・・・を繰り返してしまう)
323 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 07:45:14 ] WM_LBUTTONDOWNでフラグ立てて、WM_LBUTTONUPで落とすような 処理が必要じゃないの?
324 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:00:29 ] 知らない人はレスしなくていいです。
325 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 09:25:56 ] 前回位置との差分じゃなくてWM_LBUTTONDOWNが来た時のカーソル座標と現在のカーソル座標との差分を使うんだよ。 ていうかこんなのググればサンプルがすぐ見つかるんだから深夜に糞スレで質問するぐらいなら自分で探しなよ。
326 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:04:15 ] つーか>>321 で一発なのにな
327 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:24:15 ] >>325 そんなアホな処理しなくても>>321 でおk
328 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:50:14 ] むしろ>>321 でいいのにな
329 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 10:51:07 ] むしろ>>321 でいいのにな
330 名前:デフォルトの名無しさん [2009/03/11(水) 12:02:18 ] >>321 でいいとかマジで言ってるならアホすぎ
331 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:27:19 ] case WM_LBUTTONDOWN: ::PostMessage( hWnd, WM_NCLBUTTONDOWN, HTCAPTION,i lParam); break;