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


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

Win32API質問箱 Build66



1 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:33:42 ]
スレ立てるまでもない、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質問箱 Build65
pc11.2ch.net/test/read.cgi/tech/1208847084/

520 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:11:36 ]
wsprinf があるんだから wsscanf もあるにちがいないw

521 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:13:22 ]
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。

522 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:17:36 ]
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど


523 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 11:36:08 ]
VarR4FromStr
VarR8FromStr

524 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:23:01 ]
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん

525 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:30:58 ]
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?

526 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 12:52:43 ]
msvcrt.dllならいいんじゃね

527 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:07:36 ]
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?

528 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 14:28:31 ]
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ



529 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:10:26 ]
うるせークズ

530 名前:デフォルトの名無しさん [2008/05/27(火) 15:13:58 ]
>>528
キモいよ

531 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:14:00 ]
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?

532 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:16:09 ]
試せばいいだろハゲ

533 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:23:22 ]
そんなの関係ねーだろクズが

534 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:31:18 ]
関係ねー事聞くなカス

535 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:35:03 ]

            ノ
           (゚Д゚)
           ( (7
           < ヽ

536 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:38:25 ]
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの

537 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 15:44:25 ]
>>535
なんだその態度は!!

538 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 16:42:51 ]
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く



539 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:25:05 ]
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。

540 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:26:36 ]
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?

541 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:28:35 ]
正しくはどのメッセージを送ればよいのでしょうか?


542 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:29:27 ]
>>541
MoveWindow 関数で

543 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:30:30 ]
ありがとうございます。

544 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 18:32:30 ]
SetWindowPosとかもあるし、好きなので。

545 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:17:01 ]
>>540
WM_SIZEを送ると動くウィンドウならあるよ

546 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:29:00 ]
動かないウィンドウもあるってことですね。

547 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:49:39 ]
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。

548 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:50:20 ]
STLが○| ̄|_にみえたのは俺だけですか?



549 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:53:30 ]
>>548
面白くないよ

550 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:02:12 ]
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような

551 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:07:35 ]
>>549は大爆笑して悔しかったんだろうなぁ

552 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:17 ]
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない

553 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:09:49 ]
>>548=>>551
はいはいわろす

554 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:11:58 ]
>>535,537
ワロタw

555 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:41:01 ]
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい

556 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:56:03 ]
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い

557 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 20:57:48 ]
VCなんてもう終わってるだろうがw

558 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 21:27:35 ]
終わってません
というか終わりません



559 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:08:58 ]
MSではVBについで売れてる言語製品だしな

560 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:13:15 ]
でも、そのVB6も来月で...

561 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:13:38 ]
何その時代錯誤

562 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 22:39:04 ]
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。

563 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 11:16:09 ]
VBwwwwwwwwwwwwwwwwwwwwww

564 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:11:40 ]
Visual Baka

565 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:21:52 ]
violence bokan

566 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:41:40 ]
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?

567 名前:デフォルトの名無しさん [2008/05/28(水) 20:34:14 ]
int wmain()
{
HMODULE hModule;
HBITMAP hBitmap;
int count = 0;
std::wcout.imbue(std::locale("japanese"));
while (1)
{
hModule = LoadLibrary(L"hoge.exe"); //単一で数MBのBMPリソースのあるファイル
hBitmap = LoadBitmap((HINSTANCE)hModule, L"#200"); //そのリソース番号
if (!hBitmap)
{
FreeLibrary(hModule);
std::wcout << L"画像読み込み失敗" << std::endl;
return 1;
}
FreeLibrary(hModule);
count++;
std::cout << count << std::endl;
}
return 0;
}

大した回数(自分の環境では45回)も行かない内に画像リソースの読み込みに失敗します。
原因は何でしょうか。
環境はWinXP Home SP3、VC++2008EEです。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。

568 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:43:12 ]
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。



569 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:43:21 ]
>>567
DeleteObject(hBitmap)してないからでは?

570 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:05:12 ]
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが

571 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:24:59 ]
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?

572 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:27:54 ]
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?

573 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:29:04 ]
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください

574 名前:567 [2008/05/28(水) 21:33:00 ]
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。

実際のコードはhBitmapをウィンドウプロシージャのスタティックなローカル変数として宣言し、メッセージ処理先(LBN_SELCHANGE)で画像リソースを呼び出しています。
これを止めてメッセージの処理先で
static HBITMAP hBitmap;
と宣言したら以下のコンパイルエラーが出てしまい、どうにも出来ません。

error C2065: 'hBitmap' : 定義されていない識別子です。

575 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:35:28 ]
>>572
WNDCLASS の hCursor にカーソルを設定する
あるいは WM_SETCURSOR メッセージで SetCursor を呼びカーソルを設定する

576 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:42:58 ]
>>575
ありがとうございました。

577 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:43:16 ]
>>574
Win32API以前の問題だ。
自分でなんとかしろ。

578 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:04:56 ]
>>577
ダイアログに画像を表示したらDeleteObject()しても良かったんですね…。
VB.NETで同じようなコードをBitmapオブジェクトで行ったらエラーが出たのでWin32APIでもそうだと勘違いしていました。
C++でGUIアプリを作り始めてまだ1週間ですが、少し背伸びし過ぎました。



579 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:05:28 ]
C言語すら禄に理解してない癖に何が耐久テストだよ

580 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:07:06 ]
なんだVisual Bakaプログラマだったのかw

581 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:37:55 ]
>>579,580
罵るしか能の無い奴は消えろ


582 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:45:51 ]
いやです

583 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:47:12 ]
それぐらいしか楽しみがないんだろうから許してやってもいいんじゃ

584 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 22:50:05 ]
つうか罵られるのが嫌なら2ちゃんで質問しなければいいのでは

585 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:01:23 ]
当事者以外にも罵り文を見て不快に思う人がいるだろう

586 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:02:54 ]
不快に思うのが嫌なら2ちゃんに来なければいいのでは

587 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:03:23 ]
次にお前は「そんな奴が2ちゃん見るなよ」と言う。

って書こうと思ったのに

588 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:09:08 ]
MSDNすら読まずに質問する奴なんて叩かれて当然



589 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:09:13 ]
○○が嫌なら××しなければいいだろう

この言葉だけでは解決できない事がどれだけ溢れてると思ってるんだ

590 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:10:09 ]
>>588
なら「MSDN読め」でいい、独り言を言うように罵り煽る奴はいらん

591 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:13:03 ]
>>590
MSDN読め

592 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:21:30 ]
それくらい察して欲しかったって言うのが本音。

593 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:25:43 ]
話を理解してない馬鹿は知らないならそれぐらい察してレスしないでMSDN読んでほしかったってのが本音

594 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 03:55:50 ]
VBwwwwwwwwwwwwwwwwwwwwww

595 名前:デフォルトの名無しさん [2008/05/29(木) 08:10:11 ]
複数スレッドから参照されるキューへの出入力で排他処理を行いたいのですが、
カウンタ1の無名セマフォとクリティカルセクションではどちらの使用が適切なのでしょうか?

596 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 08:30:48 ]
クリティカルセクション

597 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 08:48:08 ]
このスレの住人ってVBプログラマいないの?
まあVBだとネイティブなAPI使わない事が
多いだろうから少ないかもね

598 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 09:51:07 ]
ドットロネットロに移行してるだろうし



599 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 10:14:39 ]
>>596
ありがとうございます。

600 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 12:47:24 ]
Virtual Batouスレですね

601 名前:498 mailto:sage [2008/05/29(木) 13:22:09 ]
>>504
質問しといて、亀でゴメンナサイ…
やはりキーとなるデータ使ってマップみたいなことするのが一般的なんですね…

…動的に関数作れるのならちょっと試してみます
ありがとうございました。

602 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 14:34:11 ]
マップつっても二分探索なら大して負荷にならんだろ

603 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 16:15:07 ]
おまんこ

604 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 16:32:52 ]
んがくく

605 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:53:12 ]
画面を分割してそれぞれに違うものを表示するのは子ウィンドウを使っているのですか?
例えばIEだと、HPを表示する部分とお気に入り・履歴などが分かれていますが、あれも子ウィンドウを使っているのでしょうか?


606 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:56:59 ]
>>605
そうだと思うよ。
SPYとかで調べてみたらいいんじゃないかな。

607 名前:605 mailto:sage [2008/05/29(木) 22:13:08 ]
>>606
SPYを使えばそういうことまで分かるのですか
ダウンロードしてみようと思います
ありがとうございました

608 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 22:56:43 ]
Spy++ってタダで入手できたか?

てか、今やWin32/C++使いから見ると商用版VisualStudioの価値って
リソースエディタとCRT/ATL/MFCのソースコードとSpy++ぐらいなんだよなー



609 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:00:11 ]
SDKのUISpyでも十分目的は果たせると思うお

610 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:05:04 ]
フリーソフトでスパイよりいいのあるお

611 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:25:35 ]
Spy++の代わりにフリーソフト使ったら負けかなと思ってる

612 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:23:14 ]
Winspactor Spy使ってる

613 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:28:05 ]
Winsp「e」ctorだろう

614 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:33:25 ]
昔のPlatform SDKにサンプルとしてSpyってのがあったんだけどな。
ソース付きで、Spy++のちょっとショボくなったやつ。
今はそういうサンプル全部無くなってるな。

615 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:46:35 ]
>>614
あれ、ちょっとどころか相当ショボイだろ

URL忘れたけど、MSサイトのどこかに
解凍すると130MBのchmが出てきて大量にSDKサンプルの入ってるやつがあった
その中におまいさんの言ってるSpyのソースコードも入ってるよ

616 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 00:49:07 ]
そんなにショボかったかw
見たの10年くらい前だから、もうよく覚えてないな。

617 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:23:01 ]
>>616
歳がばれるぞw

618 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 01:42:32 ]
現役大学生か。若いな。



619 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 02:33:33 ]
spyそのものはspy++が出るまでSDKの普通のツールだったしな

620 名前:デフォルトの名無しさん [2008/05/30(金) 08:56:51 ]
MIIM_CHECKMARKS の
MIIMって何の略ですか?
Menu* だとは思うのですが.






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

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

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