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

Win32API質問箱 Build115

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/07/13(土) NY:AN:NY.AN
Win32APIについての質問はこちらへどうぞ。

■過去スレ
Win32API質問箱 Build114
http://toro.2ch.net/test/read.cgi/tech/1363042502/

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。
 英語版( http://msdn.microsoft.com/en-us/library/ )の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
0110デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>108
何で>>1の注意書すら読めない奴がプログラミングなんかやってんの?
0111デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
自己紹介ですね。
わかります。
0112デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>108
ゴミレスは無視して、少し待ってれば、回答もらえる
0113デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
マウスの位置を移動させるAPIと、
ウィンドウの座標を調べるAPIを使うだけじゃん。
こんなことも思いつかないならWin32APIやめた方がいいよ。
0114デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
勝手にマウスカーソル移動させられちまうアプリって
俺がユーザーならそれだけで不満爆発
0115デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
だけどそんなクソな挙動をするクソアプリを作るのはやめてくれ
マウスカーソルの位置を勝手に変えることについてはガイドラインもあったはず
0116デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
チューチューマウス
0117デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
しかもマルチポストだし
0118デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>108
発想を変えてフルスクリーン起動にするんだ
0119デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
低能だわマルチポストだわ
0120デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>108=基地害

お前世の中に必要のない人間だって自覚ある?
0121デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
その自覚を持てない奴はこのスレに書き込んではならない
0122デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
マウスカーソルを上下方向だけ逆移動させる方法は何がありますか
0123デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
マウスを前後逆にして動かせ
するとマウスカーソルがそう移動する
0124デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>122は片山が自演するときの文体に似ている
0125片山博文MZパンク ◆0lBZNi.Q7evd 2013/08/04(日) NY:AN:NY.AN
>>108
RECT rc;
INT cx = GetSystemMetrics(SM_CXSCREEN), cy = GetSystemMetrics(SM_CYSCREEN);
GetWindowRect(hwnd, &rc);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE,
(rc.left + rc.right) / 2 * 65535 / cx,
(rc.top + rc.bottom) / 2 * 65535 / cy,
0, 0);

>>122
マウスドライバ作るしかない。
0126デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
そういえばGetSystemMetrics(SM_CYFULLSCREEN)
はどうして画面縦からタスクバー高さ引いたより小さい値が返るの?
0127デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
NG必須

◆0lBZNi.Q7evd
0128デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
人に言わずに自分が真っ先にやれ
0129デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>122はマウスの移動をキャプチャして方向ひっくり返せばいいだけじゃん
0130デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
画面に付箋を貼るツールはありますがカラーセロファンを貼る方法はありますか
0131片山博文MZパンク ◆0lBZNi.Q7evd 2013/08/04(日) NY:AN:NY.AN
>>130
レイヤードウィンドウにして透明度を設定する
WS_EX_LAYERED
SetLayeredWindowAttributes
0132デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>131
ありがとうございます
ベストアンサーにさせていただきます
0133デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
自演乙
0134デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>132のコメントがキモすぎ
そんなに知恵遅れの文化が好きなら知恵遅れに行けばいいのに
0135デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>134=132
0136デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>135==>>134==>>133==>>132==>>131==>>130
0137デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
>>129
そんなことも分からないようなクズの使うのがWin32API、
ってネガキャンするのが質問を装った>>108の目的。
それに即興で合わせて一緒にスレの質を下げようとしてるのが片山。
0138デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
自演乙
0139デフォルトの名無しさん2013/08/04(日) NY:AN:NY.AN
俺を倒せる質問者はまだか
0140デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
HPは0のくせに
0141デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
片山はHPはあるけど常識が0
0142デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
なるほど、鏡にバケモノが映っていても気づかないのか
0143デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
0なのはMPだろ
0144デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
MP0でもザコ召喚魔法は使える
0145デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
価値はマイナス
0146デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
test
0147片山博文MZパンク ◆0lBZNi.Q7evd 2013/08/05(月) NY:AN:NY.AN
mouse_eventよりSetCursorPosの方が良かった
0148デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
いつも中途半端な知識で恥ずかしいレスつけるゴミが恥の上塗りまで始めたのか
0149デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
RECT rc;
GetWindowRect(hwnd, &rc);
SetCursorPos((rc.left + rc.right) / 2, (rc.top + rc.bottom) / 2);
0150デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
GetWindowRectもSetCursorPosもMSDN調べれば出てくる。
そしてMSDNを調べろと>>1に書いてある。

>>1を無視して荒らそうとしてる>>108に
自己顕示欲を満たしたいためだけにコードを書く池沼の>>149。
0151デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
API知っていても中心点の求め方を知らないのかもしれない。それはMSDNに載っていない。
0152デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>151
そんなんも知らない雑魚がWin32APIをやるわけナイジェリア
0153デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
ゴミスレage
0154デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>151
じゃあもうそれはWin32APIではない

スレ違い
0155デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>149みたいに勘違いしちゃってる系の人って、学校や職場で陰で氏ねばいいのにって言われまくってても気付かないんだよな
何で面と向かって言わないかって、そりゃあ生きてる価値のない>>149のために自殺教唆で捕まりたくないからだよw
0156デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
うるせー馬鹿
0157デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>149
ありがとうございます
ベストアンサーにさせていただきます
0158デフォルトの名無しさん2013/08/05(月) NY:AN:NY.AN
>>156
ありがとうございます
ベストアンサーにさせていただきます
0159デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>ベストアンサー
知恵遅れのノリをここに持ち込むんじゃねーよゴミカス
0160デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>154
じゃあここは何をするスレかな
0161デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
片山の排泄物と
その周りをブンブン飛び回る生き物を
隔離するスレ
0162デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>161
ありがとうございます
ベストアンサーにさせていただきます
0163デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>161
ありがとうございます
バッドアンサーにさせていただきます
0164デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>163
もちろベストの対義語がワーストだと知っててあえてバッドを選んだんだよな?
0165デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
>>164
何釣られてるんだよ
0166デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
Win32APIっていつまで使えますか?
0167デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
Win32 を搭載する最後のバージョンがサポート切れになるのはいつってことか?
その後も Wine あたりは残るんじゃないかな
0168デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
5年後の保証はない
0169デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
保証がなくても使い続ける人がいる
0170デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
上半期のプログラム言語ランキング発表されたけど相変わらずWin32APIは入ってこないなwww
圏外で名前すら入らないマイナーな糞言語Win32APwwwww
0171デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
入ったらむしろ驚くが
0172デフォルトの名無しさん2013/08/08(木) NY:AN:NY.AN
APIはプログラム言語じゃないから。
0173デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
2つの画像をAlphaBlendで少しずつ切り替えていくプログラムを組んだんだけど、全然
スムーズに切り替わらない。 ウインドウを画面外に持っていって無効領域を
無理やり発生させるとちゃんと切り替わってるのが一応確認出来るんだけど、
そのままだと全然画面が更新されない。
描画用のスレッド作って、そこで1フレーム完成したらInvalidateRectで無効領域
を発生させて、WM_PAINTのとこでバッファに作った画面をディスプレイに描画って
感じなんだけど、何が問題かわかりますか?
ちなみに、Win7 64bit使ってます。
0174デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>173
ウィンドウスタイルは何ですか?
ウィンドウは透明ですか?
WM_PAINTの処理方法を詳しく教えて下さい。
0175デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
上から、
CS_HREDRAW | CS_VREDRAW を代入しています。
背景は白です。
BeginPaintでデバイスコンテキストを取得して、BitBltで画面をバッファから転送
しています。

ウインドウの端を掴んで大きさを変えていると、チラつきはあるもののスムーズに画面は
入れ替わります。
0176デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
WS_EX_TRANSPARENTは指定してないよね?
0177デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
WS_EX_LAYEREDとか
0178デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>175
情報の後出しはさっさと消えろゴミクズ
0179デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>176-177
どっちも使ってないですね。
参考にしてる資料が古くて、XPを対象にしている物なので、
互換性の問題ってのは考えられます?
0180デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
BeginPaintの後にEndPaintは呼んでるよね?
0181デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
HDC hdc;
PAINTSTRUCT ps;
DWORD dwID;
static HBITMAP hBitmap;
static BuffWindow buffWnd;
/****省略****/
case WM_PAINT
hdc = BeginPaint(hWnd, &ps);//hdcはメイン画面のデバイスコンテキストハンドル
/*buffWndはバッファ用のウインドウの構造体です。hbuffDCはそのデバイスコンテキストハンドルです。*/
BitBlt(hdc, 0, 0, 640, 480, buffWnd.hbuffDC, 0, 0, SRCCOPY);
EndPaint(hWnd, &ps);

return 0;

文字制限で省略しますが、プロシージャの中はこんな感じです。
別でスレッドを起動しています。
0182デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
追記です。
case WM_CREATE:
buffWnd.hWnd = hWnd;
buffWnd.size.cx = 640;
buffWnd.size.cy = 480;
buffWnd.dwFps = 60;

hdc = GetDC(hWnd);
hBitmap = CreateCompatibleBitmap(hdc, buff.size.cx, buff.size.cy);
buffWnd.hbuffDC = CreateCompatibleDC(hdc);
SelectObject(buffWnd.hbuffDC, hBitmap);
/**省略**/
ReleaseDC(hWnd, hdc);
CreateThread(NULL, 0, ThreadF, &buffWnd, 0, &dwID);//ThreadFは画面を作るスレッド
return 0;
0183デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>バッファ用のウインドウ

バッファのためにサーフェスが表示されているのかどうか分からないウィンドウを使うのが間違い。互換DCでビットマップ選択するだけでよい。
0184デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
描画が終わったら、ビットマップ選択を元に戻す必要がある
0185デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/bugxp.html
0186デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>179
一番の問題はお前の頭の悪さ。
0187デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>184みたいに当たり前のことを書いて喜んでる奴って基地害なんだろうな
0188デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
どうやら、アニメーションの基本ができていない、本の間違いみたいだね。
マルチスレッドの場合は、処理が並列に起こる。こっちでビット転送しているときに、
こっちで描画している、なんてことが自然に起こる。それなのに排他制御しないで、
ダブルバッファリングもしないで、渡すなんてことはありえない。それに
背景描画(WM_ERASEBKGND)を無効にしないと表示がちらつくという当たり前のことが
分かっていない。普通は、ダブルバッファリングだろうね。その本の名前なんていうの?
0189デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
色々と参考になります。
>>188さんの排他制御という言葉を聞いて、試しに、先のプログラムに
ミューテックスを実装してみた所、期待通りの動作をしてくれました。
やはり、BitBltの転送と、転送元画像を同時に書き換えていたのが問題だった
ように思います。
それと、WM_ERASEBKGNDは本に記載さていなかったので、助かりました。
使っている本は、赤坂玲音(あかさかれおん)著のWindowsゲームプログラミングという
やつです。
また、今回の質問は7.6.6ダブルバッファリングの項から引用しました。
ありがとうございました。
0190デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
赤坂玲音著「Windowsゲームプログラミング」

!!!悪本決定!!!
0191デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>189 それダブルバッファリングじゃないから。
0192デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>189
その本のコードをコピペして>>173になるのか?
0193デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
複数のWM_PAINTは一つにまとめられる場合がある(キリっ
0194デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>192
付属のCDにサンプルプログラムの実行ファイルが入っているのですが、
それを起動しても上記の症状が出ていた為、ここで質問しました。
本が2004年の物で、XPを対象に書いてるので、色々仕様が違うのかも
しれないですね。
今回の場合だけでも、LoadImageをキャストしない、timeGetTimeを使うのに
mmsystem.hをインクルードせず、その必要性の記述も無かったりしているので、
やはり、技術本は時代に即したものを買うべきですかね
0195デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
対象としてるOSも処理系も違うソースコードが動くわけねえだろ
そういう横着がしたいならJavaでも使っとけ。あれなら何年前のコードだろうと基本的に動くから
0196デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
シングルコア時代のものか・・・
0197デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>194は典型的なヴァカだろ
0198デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
C と C++ でキャストが必要な箇所の違いくらいはわかっているのか?
あんなところで static 変数を使うあたりから、かなり眉唾と踏んでいるが
0199デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
ゲームプログラミング系の本って読んだことないがまともなイメージはない
0200デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
回答を理解できる最低限の知識もないクセに質問したんだろ。
回答者を完全に舐めくさってるからできること。
0201デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>199
対象読者がゲーム作りたい素人趣味マだから、いい加減本で良いや
って感じだろう。
0202デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>194が煽り抜きでゴミだったw
0203デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>194は
「馬 鹿 に は 無 理」
を身をもって示しに来たのか?
0204デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
Windowsゲームプログラミングでダブルバッファリングが載ってるおまいらおすすめの本は何ですか?
0205デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
技術本というのは、人物で選ばないといけない。実績もない、経歴もないような著者の本は買うな。
0206デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>204
それのどこがWin32APIの質問なのか意味不明
頭の悪さもここまでくると同情するレベル
0207デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
質問者より>>188が自己顕示欲を満たすためだけに得意気に語ってるのが笑えるwwwww
0208デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
普段誰にも相手にされないから
こんなところで回答してるような
人間なんだろ。
ここで一句。

今回も
解決できぬ
役立たず

@>>188を端的に表す句
0209デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
Winゲームなら、OpenGLやDirectXを使うのが当たり前の時代。Win32APIに依存する要素
なんてほとんどない。
0210デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
ここ何人いるの?
ほとんど一人で書いてるんじゃないのか
■ このスレッドは過去ログ倉庫に格納されています