[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/10 00:36 / Filesize : 205 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Win32API質問箱 Build77



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/

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;

332 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 12:42:23 ]
タイトルバー以外の部分をドラッグしてウィンドウを移動させる
hp.vector.co.jp/authors/VA023539/tips/window/005.htm

333 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:08:28 ]
>>331
コンパイルエラーだろバカ

334 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:28:31 ]
#define i

335 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:33:24 ]
333 はおそらく実際にコンパイルしてみたに違いないw



336 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:36:08 ]
そんなもんコンパイルしなくても見ればわかるだろ JK

337 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:41:37 ]
つーかこんな所に貼られたコードを安易にコンパイルして実行する奴なんて居るのか?
得体の知れないファイルを平気でクリックして実行するレベルだろ

338 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:44:38 ]
>>337
このスレに貼られたコードの意味が分からない奴なんて居るのか?

339 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 14:47:51 ]
>>338
居るよ
>>337とか


340 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:02:01 ]
むしろこのスレに貼られたコードの意味が分かる奴なんて居るのか?

341 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:04:27 ]
>>340
いるよ
>>339とか

342 名前:339 mailto:sage [2009/03/11(水) 15:07:17 ]
いや俺は.netしか使ったことないから分かってないよw


343 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:07:39 ]
NCHITTESTだと、どのボタンが押されたかとか、自作ライブラリとの親和性が低いとかあるので
>>325の方法で大方解決しました。ありがとうございました。

ところでGDI+の半透明描画や画像の回転機能を自分で作りたいんですが、あのライブラリは
ハードの機能を使ったりしているんでしょうか?自分でちまちまピクセルごとの計算をしたら
とてもゲームに使えるようなスピードにならない気もするんですが・・・

344 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:28:34 ]
やってみたのか

345 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:31:31 ]
やってみたのだ



346 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 15:39:54 ]
これでいいのだ

347 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 16:11:23 ]
まだやってないです
やるとしたら、描画命令来るたびにロックするとかかな

348 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:22:55 ]
>>343
GDI+はソフトウェア描画だよ。

349 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 17:34:05 ]
>>330
何がアホなのか言ってみな

350 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 18:17:52 ]
>>348
ソフトウェア処理だけど一応MMX/SSEなどは使ってるみたい

まあゲームで使える速度じゃないのは言うまでも無いけど

351 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:34:55 ]
          ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    < 何がアホなのか言ってみな
    |      |r┬-|    |      
     \     `ー'´   /      
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
          ____
        /_ノ  ヽ、_\
 ミ ミ ミ  o゚((●)) ((●))゚o      ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\   /⌒)⌒)⌒)
| / / /     |r┬-|    | (⌒)/ / / //  だっておwwwwwww
| :::::::::::(⌒)    | |  |   /  ゝ  :::::::::::/
|     ノ     | |  |   \  /  )  /
ヽ    /     `ー'´      ヽ /    /     バ
 |    |   l||l 从人 l||l      l||l 从人 l||l  バ   ン
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、    ン
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

352 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 19:37:31 ]
ほらな
答えられない

353 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:04:05 ]
>>348ぐぐ そうですか
バリバリフレームレート出まくってるゲームで描画が5割以上GDI+みたいなゲームってありますか?
GDI+入れて組むのめんどくてどんなもんなのかよくわからんのです。知ってる人いたらラッキーなんで教えてくださいよ先輩

354 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:09:51 ]
>>353
妄想レスだがフレームレート上げたいゲームならDirectXを普通に使うんじゃない?


355 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:34:18 ]
[環境]非MFCでWin32API(VC2005でC++)です。
[質問]画面に入りきらないテキストを描画して、スクロールしたら、
   上の方の文章を消して、下の方の文章を表示するプログラムが組めません。
[どこまでできたの?]
DrawText作ってテキストを表示。
スクロールするだけのWindow。

スクロールした値は取れるので、それをDrawTextに反映させたいのですが、
どうやればいいでしょうか?



356 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:35:58 ]
素直にエディットコントロール使うんじゃだめなのか…

357 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:48:00 ]
>>356 レスサンクス。
もっと、初期の段階だったらそれも考えれるのですが、、、ここの部分組んだらプログラム完成するんです、、、。

DrawTextの第4引数のRECT構造体の値があるんですが、
これって、マイナスの値入れるのは危険ですか?

RECT rc;
GetClientRect( hWnd, &rc );
rc.top -= 100;

358 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 20:48:54 ]
GDI+の用途って画像ファイルの入出力とアンチエイリアスつきのベクタ描画ぐらいじゃね

359 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:01:11 ]
>>357
問題はない。

360 名前:357 mailto:sage [2009/03/11(水) 21:04:13 ]
>>359 レスありがとん。
それを聞いて安心しました。
あとは、テキストのたての長さを割り出す作業だけでいけそうです。
ありがとうございました。

361 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:48:35 ]
メモリDCに最初から全部描いておいて、スクロールの都度、必要な部分だけBitBltする手もあるぞ

362 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 21:58:41 ]
早く数学を教えてください。
待て待て

363 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 22:49:25 ]
>>354それもそうですね。
>>358GDIだけだと結構やりたいこと出来ないんですよ・・・

364 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:24:54 ]
CloseHandleの戻り値って確認してる?
正しいハンドルを渡してもエラーになる場合ってどんなとき?

365 名前:デフォルトの名無しさん mailto:sage [2009/03/11(水) 23:27:49 ]
::GetLastError()



366 名前:デフォルトの名無しさん [2009/03/11(水) 23:38:41 ]
>>351
アホ乙w

367 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 00:15:36 ]
>>364
通信系だと、通信不良とか?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<205KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef