1 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 22:39:56 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn2.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
577 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:37:35 ] >>573 何を勘違いしてるのか知らんが、今時waveOut系を使ってるプレーヤーなんてほとんど無いから waveOut系をフックしてもあまり意味無いだろって言ってるのだが。
578 名前:550 mailto:sage [2007/11/27(火) 23:42:01 ] なるほど、いろんな関数をフックしないといけないようですね。 だとすると、やはりフィルタドライバを作ったほうが抜本的な方法なのでしょうか。
579 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:43:55 ] >>577 デフォルトでASIO経由再生するプレイヤーの割合の方が遙かに少ないが、 いったい何を言ってるんだ?
580 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:44:09 ] >>578 だから何が目的なのかもっと具体的に書けよ
581 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:46:11 ] >>579 お前は人の揚げ足を取るのが趣味なのか?
582 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:48:02 ] お前ら勝手に盛り上がりすぎだろ
583 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:48:45 ] >>550 ttp://applian.com/freecorder3/
584 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:50:23 ] >>581 >今時waveOut系を使ってるプレーヤーなんてほとんど無いから >waveOut系をフックしてもあまり意味無いだろって言ってるのだが。 といってASIOを挙げている時点で支離滅裂なんだが、 いったい何を考えているのか不思議でしょうがない。 そこに対する回答はないのか?
585 名前:550 mailto:sage [2007/11/27(火) 23:51:31 ] >>580 PC1で鳴っている音をLAN経由でPC2に送りたいんですよ。 PC1とPC2にはスピーカーとマイクが接続されていて、 サウンドデバイスは一つしかないと仮定します。
586 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:52:10 ] >>584 DirectSoundはどうした? VistaでHALが廃止されたからって何が問題なんだ?
587 名前:570 mailto:sage [2007/11/27(火) 23:54:31 ] すまない。 自分が余計な事を言ってしまったがために話が盛り上がってしまった。 要は、waveInで登録したバッファの中身を解析すれば、音が鳴っているかどうかを判定できるということだったんだ。
588 名前:550 mailto:sage [2007/11/27(火) 23:54:48 ] PC1,PC2にそれぞれ一つのサウンドデバイス、という意味です。
589 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:54:58 ] >>585 そのPCにはリダイレクトに相当するものはないのか?
590 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:56:26 ] >>585 WindowsMediaEncoder をインストールするだけでいいよん
591 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:58:38 ] すでにあるものをわざわざ作る必要はなかろうもん
592 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 23:59:16 ] >>586 HALのサポートが期待できなければ、別の技術に置き換わっていくというだけの話。 で、DirectSoundの件に関しては答えたから、今度はASIOを挙げた理由を答えてくれよ。
593 名前:550 mailto:sage [2007/11/28(水) 00:00:48 ] >>589 その機能を使った場合、PC1に接続されているマイクは独立して使えるのでしょうか?
594 名前:550 mailto:sage [2007/11/28(水) 00:02:21 ] >>590 使用感はESounDのwindows版のようなものを想定しているのです。
595 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:02:34 ] >>593 マイクから音が拾いたければ、データの取得先をマイクに切り替えろよ。
596 名前:550 mailto:sage [2007/11/28(水) 00:04:07 ] GnomeのESounDはアプリケーションがESounDに合わせて作らないといけないところが違いますけれど。
597 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:04:16 ] >>592 あんたは勝手にwaveout使えばいいじゃん DirectSoundやASIO使うやつにいちゃもんつけずにさ
598 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:01 ] 盛り上がりすぎだw 俺も混ぜろバカチン共w
599 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:27 ] 次回のテンプレにフックの話厳禁を入れておいた方がいいんじゃないか? 安易にフックに頼りすぎる上に、いつも話がろくな事にならない。
600 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:05:51 ] >>583 は無視ですかそうですか
601 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:06:20 ] >>592 >>570 に対してwaveOutだけフックしても鳴ってる音全てをキャプチャできんよって言っただけだが どうやらお前は570ではなくて、技術に拘った結果waveOutをマンセーしてるだけの変人だと分かったからもういいよ。
602 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:10:02 ] >>597 で、ASIOを挙げた理由は? 何も考えてなかったんなら後付で >今時waveOut系を使ってるプレーヤーなんてほとんど無いから >waveOut系をフックしてもあまり意味無いだろって言ってるのだが。 とか理由をでっち上げずに、正直に理由はないけどASIOと書きたかっただけだと言えばいいのに。 どうせ逃げ回るだけでASIOを挙げた理由を答えることも無いのは分かってるよ。 ごめんね、ちょっと苛めすぎたよ。
603 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:12:52 ] >>601 waveOutをマンセーしているとか、そう思いこみたいのは勝手だが、妄想にも程がある。 どこにそんなことが書いてあるんだ?
604 名前:597 mailto:sage [2007/11/28(水) 00:12:54 ] >>602 ASIOなんぞ挙げてませんよ? 今までのやり取りを見てて感じただけだ
605 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:13:06 ] >>602 は?今時のプレーヤなら大抵DirectSoundもASIOもサポートしてるだろ その上で>>577 や>>601 の意味で言ったのだが、何か問題でもあるのか?
606 名前:550 mailto:sage [2007/11/28(水) 00:15:30 ] >>600 ただいま検証しています。
607 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:17:03 ] >>605 実際の所、ASIOをサポートソフトはけっこう限られてくるよ。
608 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:17:42 ] もう誰が誰かすら分からんが、 さすがに「今時のプレーヤなら大抵ASIOもサポート」は無い
609 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:19:22 ] これからもASIO厨とwaveOut厨の喧嘩が続きそうだな
610 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:19:42 ] Windows Media PlayerでASIO使えるの?
611 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:22:23 ] 少し夜風に当たって頭冷やしてこい
612 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:24:58 ] ASIOを舐めたらどんな味ぉ?
613 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:25:26 ] ASIO = Advanced Serial IO
614 名前:550 mailto:sage [2007/11/28(水) 00:26:33 ] >>600 音を送る側:クライアント 実際に音を鳴らす側:サーバ というようにしたいわけです。 つまり、たくさんのクライアントに向けて音を送りたいわけではなく、 一つのサーバに向けて音を送りたいのです。
615 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:29:28 ] >>614 だから録音デバイスから普通に音を拾えよ それを好きなだけ送れ 実際にやってみてそれでダメだったらまた来い
616 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:29:40 ] ASIOは入力用だっつーの
617 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:30:55 ] ふっくできるよ! できるよ! って自分の技術に奇妙な自信を持ってるから、スレがカオスになるのではないかと予想
618 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:31:57 ] >>614 上にも出てるけどWindows Media エンコーダでできないか?
619 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:34:15 ] >>618 前にも思ったが、プログラミングのスレで既製品を進めてどうするんだと
620 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:34:53 ] >>616 ミキサーを通さないから音質が上がるということで、 出力用に愛用している人間は少数ながらいる。 検索すると音質が上がったと喜んでいる人間がたしかにいる。 しかし私には同じ音にしか聞こえない。
621 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:07 ] >>619 大抵はそれで済んでしまうことが多いから まあ本人がそれでも0から作りたいっつーなら構わんが
622 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:36:53 ] >>620 ボリュームパスして大音量で再生されただけだろ あほすぎる
623 名前:550 mailto:sage [2007/11/28(水) 00:38:47 ] >>618 >>614 のモデルに合わせる使い方ができるでしょうか?
624 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:40:23 ] >>623 ここはプログラム板だから、ソフトの使い方は別の板へ逝け
625 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 00:43:04 ] サウンドカードのサウンドバッファが16bit以上をサポートしているなら音質は上がるかもしれない 128kbpsのmp3で満足するオレには分からんレベルだ
626 名前:550 mailto:sage [2007/11/28(水) 00:57:15 ] >>621 私も既製品で済むに越したことはないと思うのですが、 目的に合うものがないので作るしかないと思ったのです。
627 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:01:13 ] >>623 WindowsMediaEncoder PortForwarder sshd これを組み合わせると可能
628 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:12:17 ] >私も既製品で済むに越したことはないと思うのですが、 ちょwwwwwww ソフトウェア板でやってよwwwwwwwwwwwww 何のために100レスも消費してたんだwwwwwwwwwwwww
629 名前:550 mailto:sage [2007/11/28(水) 01:14:19 ] >>628 肝心なのは、直接目的に合うものが存在しないということですよ。
630 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:16:14 ] 単に探し足りないだけ、解説を読み足りないだけだと思う 現に出来るだろ
631 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:17:40 ] >>627 SSHって必要か?
632 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:19:12 ] 提示されたアプリについてまるで調べてないってのは分かるなあ〜 明らかに>>623 なんてレス読んで脊髄反射で聞いてるよね。
633 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 01:27:07 ] 要するに>>550 はESounDみたいなサウンドサーバ/クライアントが作りたいんだろ WindowsMediaEncoderだとストリーム配信みたいなことしかできないわな
634 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:10:45 ] >>629 多くのオーディオデバイスでは、リダイレクタ(ミキシング済みの音声出力を取り込める入力)が 使えるので、それを waveIn 等でとってくれば簡単に目的の処理が可能です。 (USB オーディオ等だと無いのが普通みたいだけど) ESound のようなものを作るのなら遅延はたぶんあまり許容できないでしょうから、 Windows Media Encoder 等ではなくシーケンス番号付けて RTP で送るのが良いと思います。 >>593 リダイレクタを使う実装では PC1 の wave 入力を利用することになるので、PC1側のアプリでは MICは利用できなくなります。PC1 に ASIO 対応の余分なオーディオデバイスを追加し、 それでPC1の(通常の)出力を取り込むなどできれば非常に簡単ですが、ハードの追加は ダメなんでしょうか? XP向けにフィルタドライバを書くのは恐らく非常に大変ですよ。
635 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:28:14 ] リモートデスクトップ接続、ってオーディオリダイレクタを 標準装備してるよね?
636 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 02:32:39 ] もうほっとけよ。 どうせWindowsMediaEncoderだって試してもいないだろうし。
637 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:34:50 ] >>636 WindowsMediaEncoderは役にたたんだろ。
638 名前:デフォルトの名無しさん [2007/11/28(水) 03:34:58 ] 単純な質問で悪いけど ウィンドウを不可視状態で作成するのって、CreateWindowのウィンドウスタイル引数に WS_OVERLAPPED ^ WS_VISIBLE でよかったっけ? なんか見えるんだけど・・orz 「^」って排他的ウンタラだったよね?よね?
639 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:42:28 ] どうせShowWindow(hWnd,SH_SHOW);してるとかそういうオチ
640 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 03:46:20 ] WS_OVERLAPPEDはWS_VISIBLEを含んでない件 つまり WS_OVERLAPPED & WS_VISIBLE → 偽 なので WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE
641 名前:デフォルトの名無しさん [2007/11/28(水) 06:17:14 ] すまん >WS_OVERLAPPED ^ WS_VISIBLE = WS_OVERLAPPED | WS_VISIBLE これわからん こんなのあり?
642 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:23:04 ] 0^1 = 1 1^1 = 0
643 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:39:07 ] >排他的ウンタラ 排他的論理和ですが何か? きみのやりたいことはこっちではないかな? WS_OVERLAPPED & ~WS_VISIBLE
644 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:39:59 ] >>641 わからんならWS_OVERLAPPEDだけ使え 故意に明示したいなら WS_OVERLAPPED & ~WS_VISIBLE こうじゃないか
645 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:40:39 ] かぶってしまった
646 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 06:47:23 ] 珍子がかぶってる
647 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 07:18:54 ] もし最初から最後まで表示する気が無いなら、WS_OVERLAPPEDも 指定するだけ無駄だな。
648 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 09:31:58 ] TotalRecorderみたいなことがしたいのか?
649 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 09:58:31 ] >>546 デバッグ情報はデバッガで読み込めば良い
650 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 10:24:37 ] >>550 は既存品がダメならH.323とそれに関係する資料見た方がよい ttp://www.itu.int/rec/T-REC-H.323/en
651 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 11:33:57 ] >>650 ESound みたいな使い方には既存のストリーミングサーバは Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。 VNC のアドオンでも作ってるんじゃねーの。 リモートデスクトップでのオーディオのリダイレクトみたいに、 フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。
652 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:00:48 ] >Windows Media Encoder は遅延が大きすぎて使えないってだけだろ。 だれもそんなことはいっていない。 >VNC のアドオンでも作ってるんじゃねーの。 だれもそんなことはいっていない。 >リモートデスクトップでのオーディオのリダイレクトみたいに、 >フィルタドライバじゃなくてそれ専用の仮想デバイスを作っちゃう手もあるな。 リモートデスクトップで確認してみれば自明だが、DirectSoundで音楽再生でもしようものなら音がとびまくる。 だれももいっていないことを勝手に想定したり、使い物にならない手段を提示したり、 いったい何がしたいんだ?
653 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:09:53 ] >>652 リモートデスクトップで音がとぶから仮想デバイスが使い物にならないだなんて飛躍しすぎだろ
654 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:28:02 ] >>652 質問者自身が ESound みたいなのを作りたいって言ってるジャンw 逆に>>650 は質問のどこを見てプロトコルに関する質問だと思ったの? 学習困難児だった?
655 名前:デフォルトの名無しさん [2007/11/28(水) 12:38:37 ] 漏れが華麗に要件をまとめた (1) ESounD のようなリダイレクタ (2) 同時にMICも使いたい (3) 取ってきた音は1つのサーバに送って、サーバで鳴らす (2)があるから、入力を占拠する「音源ボードのリダイレクタ(+WME)」はダメ。 マイクロソフトの人間は仮想デバイスを使ったが、>>652 が否定してるから 仮想デバイスはダメ。フィルタドライバは>>634 が否定してるからダメ。
656 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:47:16 ] まだこのネタ続いてるのかよw おまいらもういいだろww
657 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 12:54:35 ] 質問者を置き去りにして外野が騒いでるのは滑稽だな 外野といってもあーだこーだ言ってるのは一人か
658 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 15:07:49 ] 仮想デバイス作ればいいやん。 音飛びするのは帯域が足りてないだけかと。
659 名前:デフォルトの名無しさん [2007/11/28(水) 15:23:53 ] >>550 に関しては、お前ら 1. windowsで流れているサウンドをフックすることは可能でしょうか? 2. もし方法があれば、調べれば良いポイント・キーワードなどを教えていただけないでしょうか。 1. Yes or No 2. if( 1. == Yes) 調べれば良いポイント・キーワードを教える これだけ、答えればOK 余計な詮索、アドバイスせずにこれだけ答えてやれよ。俺俺妄想レスするなよ
660 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 15:34:23 ] ごめん汚して でも見てほしい 【政治】 「放置すると、日韓関係にヒビ」 外国人参政権付与、成立への流れ加速も…公明に各党同調、自民反対派は沈黙、首相次第か★10 news22.2ch.net/test/read.cgi/newsplus/1196226030/259n- 参考動画 www.nicovideo.jp/watch/sm1636901
661 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:25:06 ] HeapFreeしたときの戻り値が1404673とかなんだけど これは何の数値?
662 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:39:43 ] なんだろうね メモリアドレスではないみたいだからヒープハンドルかなんかかな 調べてないけど
663 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:48:01 ] >>662 調べてよ! 気になってよるしか眠れない!
664 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:50:13 ] 寝れるならいいじゃない
665 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 16:59:02 ] 昼寝したいのにー
666 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 18:02:32 ] 666
667 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:17:16 ] ____ / \ / \ / \ ネット社会の闇を見ました / (●) (●) \ | (__人__) | ________ \ ` ⌒´ ,/ | | | ノ \ | | | /´ | | | l | |
668 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:20:28 ] ウィンドウサイズ変更時に、 一瞬背景色で描画され ちらつくのですが、回避する方法は何かありませんか?
669 名前:デフォルトの名無しさん [2007/11/28(水) 19:29:46 ] >>643-644 そうでしたorz &と|は良く使うので、間違わないんだけど^と~は滅多に使わないのでごっちゃになってた トンクス
670 名前:デフォルトの名無しさん [2007/11/28(水) 19:31:15 ] >>649 そもそもデバッガが何のために付いてるのか良く分からん 使い方も分からんし
671 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 19:34:06 ] >>668 WNDCLASSのhbrBackgroundにヌルブラシを設定する WM_ERASEBKGNDでTRUEを返す
672 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:01:27 ] ~はかなりよくつかうだろ
673 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:23:50 ] ビットフラグを削除する時に使うね。
674 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:26:55 ] >>670 デバッグするために決まってるだろ 普通、開発はデバッグ版でして、バグがなければリリース版だろ
675 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:40:48 ] デバッガという名前なんだから勝手にバグを直してくれればいいのに 使えねーな
676 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:43:05 ] だったらバグのあるプログラムを書くんじゃねーよ下手糞とデバッガが仰ってます
677 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:54:04 ] この流れ好きだなぁw
678 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 20:58:48 ] そうか?
679 名前:デフォルトの名無しさん [2007/11/28(水) 21:15:17 ] タスクバーの右側に 「ネットワークケーブルが接続されていません」とか「ワイヤレスネットワークに接続しました」 とか状態が表示されていますが このネット接続の状態変化を監視するAPIを教えてください
680 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:22:53 ] GetIFTable?
681 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:44:19 ] >>680 そんな感じです。ただ今回は変更の検知をしたいのでこれは使えません MSDNみたらGetIFTableの近くにNotifyAddrChangeというのがあったのでこれを調べて見ます ありがとう
682 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:02:28 ] IPv6のネットワークポートで接続されている機器がある時、そのアドレスがLinkLocalであった場合に 付加するスコープIDの取得の仕方を教えてもらえないでしょうか。 IP Helper関数のGetAdaptersAddresses()を使って取得できる値のいずれからしいということは わかったのですが、列挙される構造体のうち、どれが目的の値か特定できません。
683 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 22:56:11 ] hWndとhDCとDIBの関係がいまいちよくわからないんだけど、わかりやすく説明されてるサイトとかない?
684 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:50:05 ] ウィンドウにWS_EX_LAYEREDを設定し、32Bitビットマップを読み込み下の様にUpdateLayeredWindowを実行しましたが、 ウィンドウが消えてしまい、うまくビットマップを適用させることができません。 どこがおかしいか、何方か教えて頂けないでしょうか。 ReadFile(hFile , &bmpFileHeader , sizeof (BITMAPFILEHEADER) , &dwBytes , NULL); bmpInfo = (BITMAPINFO *) malloc (bmpFileHeader.bfOffBits - dwBytes); ReadFile(hFile , bmpInfo , bmpFileHeader.bfOffBits - dwBytes , &dwBytes , NULL); bPixelBits = (BYTE *) malloc (bmpFileHeader.bfSize - bmpFileHeader.bfOffBits); hdc = GetDC(hWnd); hBitmap = CreateDIBitmap(hdc , &bmpInfo->bmiHeader ,CBM_INIT , bPixelBits , bmpInfo , DIB_RGB_COLORS); hBuffer = CreateCompatibleDC(hdc); SelectObject(hBuffer , hBitmap); GetObject(hBitmap , sizeof (BITMAP) , &bitmap); wndPos.x = 100; wndPos.y = 100; surPos.x = surPos.y = 0; wndSize.cx = 300; wndSize.cy = 300; bf.BlendOp = AC_SRC_OVER; bf.BlendFlags = 0; bf.AlphaFormat = AC_SRC_ALPHA; bf.SourceConstantAlpha = 255; UpdateLayeredWindow( hWnd, GetDC( 0 ), &wndPos,&wndSize, hBuffer, &surPos, 0, &bf, ULW_ALPHA); 長文ですみません
685 名前:デフォルトの名無しさん [2007/11/29(木) 00:01:28 ] freeしたポインタをfreeしたらどうなりますか?多分よくないですよね? freeされたかどうかを調べる関数とかってないですか?
686 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:10:35 ] >>683 HWNDはウィンドウ 位置を動かしたりサイズを変えたり、タイトルバーを設定したりできる HDCは画家 ペンや絵の具を渡せば、三角形とか四角形とか円とかを描いてくれる DIBはメモリ内の.bmpファイル
687 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:11:51 ] >>685 よくないです 調べる方法はありません 自分で気をつけましょう
688 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:18:25 ] >>684 ビットマップのイメージ本体を読み込んでないように見える bPixelBits は malloc しただけでそのままだし hBitmap も Create しただけで何も描き込んでないし
689 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:19:09 ] >>687 デバッグビルドならチェック入ると思うが
690 名前:デフォルトの名無しさん [2007/11/29(木) 00:30:16 ] >>685 当たり前だけど、対象のポインタ変数にメモリが割り当てられてるかどうかは ポインタがNULL番地をさして無ければいいわけだから 俺はいつも if(lpPoint != NULL) free(lpPoint) ってやってるが、もしかしたら正しくはないのかも知れん >>686 ついでにCreateDIBSection関数が何者なのか、解説ヨロ 何度説明されても分からんけん
691 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:32:47 ] >>690 if(lpPoint != NULL) free(lpPoint) これは無駄だろ if(lpPoint != NULL) delete[] lpPoint の場合なら意味あるけど
692 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:38:22 ] >>690 CreateDIBSection は指定したサイズのビットマップをメモリ内に作る。 GDI 関数で扱えるように HBITMAP ハンドルが返されるし、 その RGB 値を直接触れるように、ビットマップデータへのポインタも返される。
693 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:38:56 ] >>691 どっちも無駄 NULL を free とか delete とか delete[] に食わせるのは合法で、単に無視される
694 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:50:08 ] >>693 deleteも無駄だったのか・・・知らなかった
695 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:54:26 ] deleteしたあとNULL入れとくのが正解
696 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:30:03 ] if(lpPoint != NULL) {free(lpPoint); lpPoint = NULL;} こうするのが正解
697 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:40:16 ] >>696 不正解
698 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 01:49:15 ] NULLだったら無視されるんだから free(lpPoint); lpPoint = NULL; だけでいいじゃん…
699 名前:デフォルトの名無しさん [2007/11/29(木) 02:02:02 ] K&Rにfreeで解放されたメモリ領域にfreeをかけるのは動作が規定されてないからやめとけって書いてあった希ガスよ 正しくは>>696 のようにすべきじゃね、と思う >>692 そういう説明は何百回も読んでるんだけど、さっぱりわかんねーよ >指定したサイズのビットマップ ← これはデバイス独立ビットマップなのか、デバイス依存ビットマップなのか・・・ GDI関数で扱えるDDB(デバイス依存とかいう香具師)は、ビットマップのピクセルビットへはアクセスできない HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ なのに、ピクセルビットへのポインタもちゃんと返してくる 現にGetObjectで調べてみたら、pBitsにピクセルビットへのポインタが格納されてる 通常HBITMAP型のDDBを引数に、GetObjectやってもpBitsはNULLだよね
700 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:30:38 ] >>699 free(lpPoint); lpPoint = NULL; free(lpPoint); と、 free(lpPoint); free(lpPoint); は違う。 おまいが言っているのは後者。
701 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:48:31 ] >>699 DDBのビットデータに直接アクセスできるわけない 大抵VRAM上にあるだろうし、DirectXじゃないから直接アクセスできてもあまり意味が無い >HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。 DIBもDDBもHBITMAPなのは、ある程度両者を意識しなくて済むようにそういう設計にしてるのか DIBセクションが標準APIとして加わったのがwin95以降だからなのか他に理由があるのかは知らん
702 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 03:31:48 ] >>688 レス、有難うございます >>ビットマップのイメージ本体を読み込んでいない すみませんm(__)m 初歩的なミスに気付いていませんでした ReadFileをもう一つ追加して見ます
703 名前:デフォルトの名無しさん [2007/11/29(木) 06:31:35 ] >>701 >HBITMAP型は通常デバイス依存ビットマップを表現するのに使われるはずだよ お前の「通常」の基準がよく分からん。DDBで使うことの方が多いと思うが。 デバイス依存ビットマップ=DDB
704 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:12:20 ] >>697 速度重視なら正解だろ
705 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:19:13 ] >>704 一概には言えない lpPointがNULLの可能性が高い場合はいいが逆だと遅くなる
706 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:26:40 ] >>705 そこまで行くとそもそも論になるからもう止めようぜ
707 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 08:27:10 ] >>699 DIBセクションは、DIBの形でデータを保持していて、 HBITMAP経由で読み書きするときには、 その都度DDBとの間で変換が行われる。 ってプログラミングWindowsに書いてあった。
708 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:05:52 ] 今時if文判定1個にこだわるプログラミングしてるやつがいることに驚きだわ
709 名前:683 mailto:sage [2007/11/29(木) 10:22:06 ] >>686 ではなぜBitBltではDIBではなくhDCを渡すのでしょうか。 あと、DIB間での画像拡大コピーってできますか?
710 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:25:59 ] >>709 DIBとDDBの違いわかってる?
711 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:24:28 ] >>710 >>709 が解ってないのはDIBとDDBの違いではなく、DCにビットマップを選択させる概念ではないかと
712 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:26:35 ] DIBとDDBの違いがわかればその疑問も解決すると思うのだが
713 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:43:16 ] >>709 >なぜBitBltではDIBではなくhDCを渡すのでしょうか。 BitBltはDIB用じゃないからさ DIBを直接渡すAPIはSetDIBitsToDeviceやStretchDIBitsがあるからそっちを使う >DIB間での画像拡大コピーってできますか? ポインタ駆使して直接ビットデータを操作しちゃえばなんだって出来る
714 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:49:00 ] >>709 GDI+でも使ってろ
715 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:03:10 ] >>700 本来は void correct_free(void **p){ old_free(*p); *p = NULL; } という設計にすべきだったんだよな そうなってはじめて安心して correct_free(&lpPoint); correct_free(&lpPoint); と書ける
716 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:06:23 ] その安心は半分まやかしだ ポインタ値はあちこちにコピーされうる
717 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:13:31 ] 生成者と参照者を明確に区別して freeは生成者だけが行うようにする 参照者は使ったらそのまま放置 っていう造りにしたら安定する?
718 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:14:26 ] そんなあなたにshared_ptr
719 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 14:36:20 ] >>715 correct_free(NULL); どこが安心できるんだ?
720 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:14:31 ] 私が知っていること(onXP) ビットマップにはDDB,DIB,DIBSectionがある HDCが好むのはHBITMAPつまりDDBとDIBSection DDBはシステム領域に作られ、総量の上限がある DIBSectionはプロセス毎の2GBの中に作られる -->長時間保持する大きなビットマップ向き、メモリマップを使えば巨大なものも可 DIBSectionを選択したままCreateCompatibleBitmapを呼ぶとDIBSectionが作られるらしい DIBSectionはwin16のDIB.DRV,WinGの系統らしい DDBとDIBSection win95の頃は速度大差なし
721 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:24:23 ] >>719 ごめんうっかりしてた void correct_free(void **p){ if(*p) old_free(*p); *p = NULL; } correct_free(&lpPoint); correct_free(&lpPoint);
722 名前:デフォルトの名無しさん [2007/11/29(木) 15:29:19 ] 頑張ってそんな変なもの使って何かいいことある? free には失敗しないかもしれないけど、 何時誰が free するかを管理しないコーディングスタイルじゃ 内容が必要なときに既に free されてる恐れがあるじゃん。 ちゃんと誰がいつまで内容を参照したいかが分かってれば、 それの終わりのとこで一回 free すればいいわけだし。
723 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 15:57:27 ] >>708 アセンブリでMMXやSSEで使うこのご時世に お前が低能だって事は分かった
724 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:26:48 ] >>721 if(*p) { old_free(*p); *p = NULL; } こうだろ >>722 バカは黙ってろ 管理するに決まってるだろ 俺はマクロでNULL代入してるぞ
725 名前:724 mailto:sage [2007/11/29(木) 16:28:36 ] 訂正 if(p) { old_free(*p); *p = NULL; }
726 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:30:04 ] ダイレクト ボブサップ
727 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:32:44 ] >>722 今時は開放されたメモリの参照すれば例外飛んでくれるから NULL入れる必要もないといえば無い。 それに、確保や開放を頻繁に行うなら、意識して717のいうように作るべきだと思う。 しかし、世の中の大多数の人はそのことを知らないし、やろうともしない。 結局バグの温床になっているが、なんとなく動いてしまっていて気がつかない人も多い。 特にリリース版で動くからいいやとかいうタイプの人もいるんで・・・ あと、自分の経験上、他人が書いたコードで確保と開放が入り乱れてる場合は 開放したところにNULLいれるように書き直すと、バグが良く見つかる。 まあ、こんな小手先の技使わないといけない俺の環境が悪いんだろうな。 最新のコンパイラとか開発環境、動作環境でやり、自分がコードのすべてを把握し 覚えている限りは無用のテクニックかもしれない。 >>723 最適化スレだったらその発言は甘んじて受け入れよう だが、ここはAPIを質問するところだ こんなところで、パイプラインの破壊気にしてもしょうがないだろ?
728 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:34:44 ] >>727 C++ならいいんだけどな
729 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:37:05 ] あああ、free論議は収拾付かなくなるので終了。 終了終了
730 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:38:34 ] >開放したところにNULLいれるように書き直すと、バグが良く見つかる。 嘘だろ
731 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:47:32 ] >>727 APIスレだろうが最適化スレだろうが関係ない 何万回、何百万回も使うならif文一つだろうが気にするべき ジャンプ1回で済ますかpush、call、popを使うかで大違い
732 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:48:24 ] >>728 少なからず理解者がいてくれたようでうれしい >>730 嘘だと思える君の環境がすごくうらやましい 世の中には信じられないことをする人が多いのです。 また、C++に対応してるんだかしてないんだかわからない しょぼい環境も多いのです。
733 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:52:09 ] >>732 開放したところにNULLいれてバグるなら NULLいれなくてもバグるだろ
734 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 16:53:41 ] >>732 お前が低能だって事は分かった
735 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:02:35 ] >>727 そんなことで例外発生させてどうすんだよ NULLなら処理を跳ばしてくれれば良いだけなのに
736 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:05:47 ] >>733 NULLいれなくてもバグってるんだけどそれは発見されない、 NULLいれたらそのバグが発見されやすい、ってことだろ
737 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:08:32 ] >>736 元々バグってんのか NULL代入関係ないじゃん
738 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:10:49 ] ここはAPIスレだったよね? 特定の言語の話はスレ違い
739 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:11:40 ] ガベコレのある言語を使いましょう でこの話題は終了 ↓はい次
740 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:14:53 ] 空気読まずに ポインタのアドレス使ったリスト管理なんかだと freeのあとNULL入れるのは必要になってくるけどな
741 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:16:09 ] haskellお勧め
742 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:21:43 ] 質問なのですが、 SetLayeredWindowAttributesを使わずにウインドウのある色の部分だけ透明にすることはできるのでしょうか?
743 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:22:31 ] SetWindowRgn
744 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 17:31:33 ] >>727 > 開放したところにNULLいれるように書き直すと、バグが良く見つかる。 ワロタ
745 名前:デフォルトの名無しさん [2007/11/29(木) 18:14:14 ] 結局 if( p != NULL ) { free(p); p = NULL; } でFA?
746 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 18:15:12 ] どうでもいいです
747 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:04:14 ] >>745 >>696-698
748 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:11:42 ] ぬるぽ
749 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:12:49 ] if(_x_){ _x_->Release(); _x_ = NULL; }
750 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:21:24 ] スマートポインタ使えよ糞共
751 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:25:54 ] templateって方の種類分容量増えるんだろ define でいいじゃん
752 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:27:28 ] >>751
753 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:32:49 ] >>751 確かに環境によってはtemplate禁止にせざるを得ないこともある。 が、さすがにtemplateの機能をdefineだけじゃ無理だと思う。
754 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:44:57 ] 本当の初心者質問ですみません。 ウインドウを作成するところで詰まってしまいました。 ビルドは成功するのですが、実行するとウインドウが表示されず、CPUが100%になります。 どこがおかしいでしょうか? 環境 WindowsXPsp2 Visual Studio2005 ソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5360.txt
755 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:48:39 ] ウィンドウクラスの登録が抜けている
756 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:55:50 ] >>854 PeekMessageなんか使うから100%になるんだ、GetMessage使え。 まずは猫でも分かる〜を読むべし。
757 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 19:58:51 ] >>752
758 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:02:59 ] >>717 >>727 COMのプログラミングすると 生成者が放置で 参照者が片付ける みたいな感覚に染まってしまう
759 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:07:30 ] >>725 それ意味なくね? 訂正が間違ってる
760 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:59:53 ] InvalidateRectで無効化された領域を取得するにはどうすればよいのでしょうか? 質問の背景としては、スクロールバーを動かしたとき、画面のビットマップをBitBltで 移動させることでスクロールされるようにしています。ところが、転送元の領域が 無効化された状態であった時、その領域が転送後にも再描画されず、不正な状態のままに なってしまっています。そこで、転送前に無効化されていた領域を転送後の座標系で 無効化しなおすことでこの問題を解決したいと思っているのですが。 よろしくお願いします。
761 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:03:32 ] >>751 組み込みスレならともかく、Win32 APIスレで言う話か? メモリ数百MiB-数GiB、CPU数百MHz-数GHzな環境で禁止にする必要などない。
762 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:07:40 ] >>760 GetClipBox PAINTSTRUCT::rcPaint
763 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 21:08:29 ] GetUpdateRect だけど。 ふつうはScrollWindowExが良きに計らってくれるんじゃないのかなー。
764 名前:760 mailto:sage [2007/11/29(木) 21:16:46 ] >>763 おわっと、こんな関数があるとは知りませんでした。 まだ試してないですが、これを使えば万事うまくいきそうですね。 どうもありがとうございます。 >>762 どうもありがとうございます。
765 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:32:51 ] >>759 どこが?
766 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:00:00 ] もう引っ張るなよ
767 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:03:31 ] 別にfreeの話しを引っ張るつもりはない しかし突っ込まずにはいられないだろ
768 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:04:35 ] 「あえていうなら、Win32APIスレでfreeの話をする辺りが。」 ってことで納得してくれよ(w
769 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:05:44 ] だからfreeは関係ないと
770 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:07:43 ] >>759 = >>766
771 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:10:46 ] freeは本質とはあまり関係ないんだからとりあえず黙っとこうぜ。 荒らしたいというなら別だが。
772 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:13:29 ] >>771 >>769 コードの話しだろ
773 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:15:15 ] 馬鹿しか居ないな
774 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:18:55 ] 以上をまとめると、HeapDestroy万歳ってことですね。
775 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 23:25:40 ] >>772 >>725 はあってるよ どの道すれ違い消えろ
776 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:12:10 ] 昨日はサウンド関係で荒れて今日はfreeで荒れるのか 明日は何の話題で荒れるのかな〜?
777 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:18:14 ] 1:int *p;とint* p; 2:sizeof( char ) 3:インデント 好きなのを選べ
778 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:24:36 ] >>777 1 と 3 はコード整形ツールで抹殺されるから 2 しかない!
779 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:35:00 ] ウィンドウのシステムバーの青い部分をドラッグしたときにくるメッセージって何ですか? WM_ENTER/EXITMENULOOPは左上のボタンで出るメニューのメッセージっぽいのですが…
780 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:13 ] WM_SYSCOMMAND WM_WINDOWPOSCHANGING WM_WINDOWPOSCHANGED WM_MOVING WM_MOVE
781 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:47:54 ] >>778 Win32API的にsizeof (TCHAR)を使うので、このスレでは2すら話題にならない。
782 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:48:14 ] 結局見つけました WM_ENTER/EXITSIZEMOVEでした。 お騒がせしました
783 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:10 ] CHARとかWCHARとかTCHARとか型がありすぎてわけわかんね 文字列に関してはワールドワイドなUnicodeに対応してるWCHARだけつかってればいいってこと?
784 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:52:46 ] いまさらハンガリアン記法でひとつ。
785 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 00:55:32 ] もうNT系しか相手にしないなら、VC8みたいにいきなりUNICODE定義しといて WCHARしか使わないという手はある。 外部入出力で結局charが要るのと、 文字列リテラルにL付け忘れることがあるのと UNCODE特有の嫌らしい概念が出てくるのが 今ひとつだけど。
786 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:11 ] 数は少ないがANSI版しか用意されていない糞APIもあるけどな
787 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:09:58 ] >外部入出力で結局charが要るのと このときのcharで使う文字コードは何がよいのでしょうか? UTF-8? mbcs?
788 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:11:29 ] 外部次第だろ
789 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:20:54 ] 質問ですが、画面の解像度が変化したときに受け取るイベントというのは何なのでしょうか?
790 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:22:36 ] あるよ ググればすぐ出てくる
791 名前:デフォルトの名無しさん [2007/11/30(金) 02:10:24 ] ココ見てると、みんな同じような問題で悩んでんだなってチョット思うな。 特にDIBSectionとかDIBとかDDBとか 、答えられる香具師があんまりいないんだな。 DIBセクションはDIB?をれともDDB?
792 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:10:38 ] WM_KAIZOUDOHENKA
793 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:17:17 ] >>791 DIBセクションはDIBセクションだろw CreateDIBSection によって作成された HBITMAP 互換のGDIオブジェクト。 GetObject すると DIBSection が帰る。
794 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:30:32 ] >791 答え待ってないでProgramming Windows下巻読めよ
795 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:25:30 ] MSのドキュメント読めばわかる程度のことは答えんな。 調べる事が下手糞だといつまでたってもスキルは上がらんぞ。
796 名前:デフォルトの名無しさん [2007/11/30(金) 03:37:08 ] DIBSection = DIB の部分 つまりDIBの一部分ってことでFA
797 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 03:45:56 ] >>796 >>791 のようなDIBとDDBの区別すらついてない人間にはその説明では不十分だ 結局はMSDN読め、に尽きるが
798 名前:デフォルトの名無しさん [2007/11/30(金) 04:17:46 ] 香具師なんて使ってる奴久しぶりにみたwww
799 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:54:26 ] その内「w
800 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:55:07 ] 失敗。 まぁいいや。 800ゲッツ!
801 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:15:09 ] >>786 そりゃWin16との互換専用だったりして Unicode版用意してまで延命させる必要がそもそもない
802 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 07:32:23 ] GetProcAddressはー?
803 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:35:46 ] DLLの仕様でシンボルにANSI文字列しか使えないから
804 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 08:41:01 ] 切れちゃった DLLの仕様でシンボルにANSI文字列しか使えないからANSIでないと意味がない 無理してUNICODEにしてもANSIに変換してオーバーヘッドが出るだけ
805 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:16:43 ] ATLのW2Aとかの文字列変換マクロを使えるなら、オーバーヘッドは最小になるよ。 自分の場合、内部はUNICODEで処理するなぁ。
806 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:06:06 ] CreateWindowで作ったウィンドウの子コントロールのフォントを変更したい場合 親ウィンドウに合わせて自動で全ての子のフォントを変更することはできないのでしょうか それともこういった処理は自分で書く必要があるんでしょうか
807 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:42:00 ] もちろん、自分でやらないと駄目。 自動で勝手にフォント変更されたら、コントロール毎にフォントを変えることが できないではないか。
808 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:48:46 ] >>801 違うよImageHlpだよ ま、こんなモン使う機会あまりないけどな
809 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 12:55:46 ] >>807 やはりそうなんですか ありがとうございました
810 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 13:44:40 ] >>808 Platform SDKを良く読んだほうが良い
811 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:10:35 ] >>810 よく読むべきなのはお前な BindImage ReBaseImage ImageLoad > All ImageHlp functions, such as this one, are single threaded. 今時こんな設計の糞API揃いだが
812 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:15:58 ] >>811 なんだそれNT時代のAPIじゃないのか?w
813 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:47:24 ] そうはいうがな Windows1.0時代からあるAPIだってUnicode対応・マルチスレッド対応だぞ
814 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 14:48:03 ] 1.0は言い過ぎか? 今でも使われる古参のAPIってどのあたりからあるんだろ
815 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:24:22 ] >>813 それだって、最初からそうだったのではなく、 Win32化されたときからじゃないか。 >>814 Win16はわからないけど、CreateWindowとか有名な関数をMSDNライブラリで引くと、 大体Minimum operating systemsがWindows 95, Windows NT 3.1になっている。
816 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:33:37 ] >>815 CreateWindowはWin16時代からある
817 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 18:36:26 ] そりゃまあ、WinMainからRegisterClassしてCretateWindowしての 一連の基本のやつは昔からあるけどよー
818 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:02:10 ] マウスキャプチャ状態にある コモンコントロールのマウスの移動を関知するには どうすればいいのでしょうか? タブをドラッグアンドドロップで移動させたいのですが 親にWM_MOUSEMOVEが飛んできません…
819 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:11:50 ] キャプチャしたウィンドウに飛んでこないか?
820 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:17:04 ] >>819 もしやサブクラス化意外に道はないのでしょうか? 通知メッセージを用意しといてくれてもいいのに… ゲイツめぇ
821 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:24:10 ] だからぁ SetCapture( hwnd );で hwndに飛んでこないかと?
822 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:34:01 ] >>821 キャプチャ事態は自分で行っている訳ではなくて コモンコントロールがNM_CLICKに併せて行ってくれているようで 離したときにくるNM_RELEASEDCAPTUREまでの間に MOVEを拾えないかと思ったのです。
823 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:36:36 ] >>822 そりゃサブクラス化するべきなんじゃね?
824 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:38:55 ] タブコントロールがSetCaptureして、マウスキャプチャ状態にしてるんだけど、 その状態でWM_MOUSEMOVE相当のメッセージを親Windowで取得したい。 ってこと?
825 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:41:36 ] NM_CLICKでコモンコントロールはキャプチャしないだろ それにSetCaptureすればいいだろが
826 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:46:00 ] spyで確認したけどキャプチャしてない そもそもその手のドラッグアンドドロップは自分でマウスキャプチャして実装するもの
827 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 19:54:01 ] WM_LBUTTONDOWN If the user is clicking a button, the control redraws the button to give a sunken appearance and captures the mouse. ってMSDNに書いてあるから、ボタンの場合(TCS_BUTTONS style)はキャプチャしているんでしょ?
828 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:00:29 ] >>827 なるほど、だからキャプチャしてたんですね。 親で改めてキャプチャするかサブクラス化してみようと思います。 どうもありがとうございました。
829 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:01:37 ] TCS_BUTTONSスタイルまで確認してなかったわ
830 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 20:35:39 ] >>814 俺はWTERMの人が書いた本でWindowsプログラミングの勉強をしたが それがたしかWindows1.0用の本で、ほとんどそのまま3.1で通用したよ。 3.1から95もAPIはほとんど一緒だから、GetMessageとかのAPIは ずっと変わってないと思う。
831 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:22:09 ] だってある意味winプログラムの原点だからGetMessageの概念は
832 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:06 ] イベントドリブンはナムコが考えました
833 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 22:58:18 ] 友達がいなくて 携帯メールがGetMessageできない漏れをどうにかしてください WinSockムズカシス
834 名前:デフォルトの名無しさん [2007/11/30(金) 23:07:00 ] GlobalAllocで確保されるメモリって、自プロセス内のスタック領域?とかいうところから拾ってきてるの? ファイル読み込みで、何度かGlobalReAllocを繰り返し呼び出して、再確保を繰り返しやると 18000Byte超えたあたりで、メモリの再確保に失敗する なんでだろう
835 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:09:28 ] >>833 自分で自分のアドレスにPostMessageする
836 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:10:48 ] >>834 MSDN嫁よ禿
837 名前:デフォルトの名無しさん [2007/11/30(金) 23:14:37 ] >>836 英語だからミリだよ
838 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:19:22 ] たしかにな
839 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:28:12 ] >>837 英語勉強しろよ禿
840 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:31:14 ] 「Windowsプログラミングの極意」あるいはThe Old New Thingで いってたけど、今は、メモリ共有のために仕組みがある以外は、 ローカルヒープとあんましかわらない、みたい。
841 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:42:12 ] WinXP SP2だと、1Kから1バイトずつ伸ばしても全然失敗しないな…… フラグの指定がおかしいんじゃね? ちなみに可変長のGlobalヒープが欲しい時は、 CreateStreamOnHGlobal + GetHGlobalFromStream がお勧めだ。
842 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 23:43:23 ] 16KBのメモリチャンク云々って話をどっかで見た気がするが忘れた。
843 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:08:13 ] 同じくWinXP SP2、初期サイズ1KB、増加サイズ1KBずつだと4KBで失敗。GetLastErrorは8。 増加サイズが変わると失敗するサイズも変わる。法則は謎。 GMEM_MOVEABLEすればもちろん失敗しないけど。
844 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:28:01 ] ちょっとコード晒せ
845 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:47:55 ] >>816 ゲンミツに言うとCreateWindowEx呼んでるだけだったような気もするけど
846 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:56:31 ] HeapAlloc/HeapReAllocだとどうなる?
847 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 01:38:24 ] >>845 手元のWin16APIヘルプだと CreateWindow(2.x) CreateWindowEx(3.0) って書いてあった。
848 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 02:33:48 ] 取り込んだ画像を任意の角度に回転させるAPIってありますか?
849 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 03:11:05 ] GDI+
850 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 06:48:51 ] >>813 NTの最初のバージョンは3.1だが? NTじゃないWindows 1.0がマルチスレッドやUnicodeに対応しているわけないし
851 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:12:50 ] GlobalReAllocで固定メモリの領域拡大に失敗するのか まさか単に断片化しているだけというオチじゃなかろうな
852 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:13:53 ] また随分とバックパスなw >>850 >>813 は1.0時代のAPIだって今はUnicode版があるって言ってる 当たり前といえば当たり前
853 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 10:27:48 ] GlobalAlloc懐かしいな。
854 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:37:40 ] >>851 それが原因な気がするけどなー toolhlpとかプロセスメモリエディタで覗いてみたら良いんでは
855 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 11:50:50 ] そもそもGlobalAllocなんてクリップボードとOLEドラッグ以外に使うべきでは無い どうせ猫でも見て変な知識付けたのだろうが
856 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 12:16:36 ] HeapAlloc(malloc)か、サイズが数MB超えるならVirtualAlloc使えよ。
857 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:06:37 ] そういう話は>>836 で終わってる。
858 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:35:10 ] 英語が読めないので>>837 で再開
859 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:22:23 ] 1.xの遺物 AnyPopup();
860 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:33:01 ] WS_CHILDで子コントロールとして貼り付けられたダイアログって 親ウインドウが破棄されると自動的に破棄されますよね?
861 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:49:13 ] いいえ
862 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:51:44 ] DestroyWindowの解説に書いてある
863 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 15:53:45 ] はい
864 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:07:53 ] >>852 そりゃWin32で代わりがないAPIについてだろ。 _lcreatとかOpenFileとかにUnicode版はない
865 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:27:11 ] PIDLがデスクトップを指してるかどうかって、 ILGetSizeを使って2byteかどうかで判定していい?
866 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 18:45:29 ] >>865 SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP) + ILIsEqual()で判断するのが安牌
867 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:36:01 ] CreatePrivateObjectSecurityWithMultipleInheritance nagasugi warota
868 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:19:00 ] >>866 ども。そうだよね
869 名前:834 [2007/12/01(土) 21:48:40 ] こんなに大勢が答えてくれるなんてありがてぇありがてぇ コードはこうなってるが、素人なんで汚いだろうけど #define CHUNK_SIZE 1024 bySrc = GlobalAlloc(GPTR, 1); iCount = 0; dwTotal = 0; do{ ZeroMemory(byTemp, CHUNK_SIZE + 1); if(InternetReadFile(hUrl, byTemp, CHUNK_SIZE, &dwRead) == FALSE){ //失敗したら MessageBox(hwnd, TEXT("読み込みに失敗しました。"), TEXT("InternetReadFile Failure"), MB_OK | MB_ICONWARNING); return -1; } dwTotal += dwRead; bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE); if(bySrc == NULL){ wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead); MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING); GlobalFree(bySrc); return -1; } memcpy(bySrc + (CHUNK_SIZE * iCount), byTemp, dwRead); iCount++; }while(dwRead); で、そのまま強制終了になったり、運がよければ「("20回目の読み込みで、計19984dByte(新たに1024Byte)の確保に失敗しました。」みたいな感じのエラーが表示される なんでかわからん
870 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 21:57:04 ] >bySrc + (CHUNK_SIZE * iCount) とりあえずこれがだめなんじゃない? 毎回CHUNK_SIZEずつ読めてるとは限らないんだし
871 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:12:30 ] >>869 だからそういう目的ならmalloc/realloc使えと言ってるだろうが
872 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:21:29 ] >>869 >bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE); 同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が なくなってしまってメモリリークする。reallocを使った場合も同様なので注意。
873 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 22:46:57 ] >>870 もろにセキュリティホールだよね。
874 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 23:14:54 ] > ZeroMemory(byTemp, CHUNK_SIZE + 1); これは大丈夫なのか?byTempの宣言が書いてないから分からんが
875 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:01:49 ] 祝 ☆ 国 取 り 1 6 0 人 到 達 ☆
876 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:04:05 ] 何?
877 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 01:15:57 ] 桂蚕糸?
878 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 05:24:18 ] XNResourceEditorって境界線の無いダイアログ作れないのかな ちゃんと設定してもどうしても境界線が残るんだが
879 名前:834 [2007/12/02(日) 07:46:48 ] おまいらなんでこんなに優しいん? 普段ボロクソ言われてるってのに(涙 一応宣言はこうなってる BYTE byTemp[CHUNK_SIZE + 1]; static BYTE *bySrc; それから >同じ変数で結果を受け取ると、NULLが返ってきたときに元の領域を解放する手段が なくなってしまってメモリリークする の部分を改善してみた bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE); if(bySrc == NULL){ wsprintf(szBuffer, TEXT("%d 回目の読み込みで、計%dByte(新たに%dByte)の確保に失敗しました。"), iCount + 1, dwTotal, dwRead); MessageBox(hwnd, szBuffer, TEXT("GlobaReAlloc Failure"), MB_OK | MB_ICONWARNING); GlobalFree(bySrc); bySrc = NULL; return -1; } あと、>bySrc + (CHUNK_SIZE * iCount) の部分 を memcpy(bySrc + dwTotal - dwRead, byTemp, dwRead); としたら、すべてうまくいきました!!!!!!!!!!!!!!!うれしいっす!!! 芋くさいコードだけど、晒してよかった・・ ひとつ問題が解決すると、ほんとに気持ちがいいな ありがとうな。お前ら
880 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 07:55:50 ] FillMemoryの4バイト版ってあったりしますか
881 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:16:45 ] >>879 >static BYTE *bySrc; 使い方から見てstaticで宣言する意味なくね? >bySrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE); 改善されてないじゃん。こうだろ。 BYTE *byNewSrc; byNewSrc = GlobalReAlloc(bySrc, dwTotal + 1, GMEM_MOVEABLE); if (byNewSrc) { bySrc = byNewSrc; } else { wsprintf.....略 }
882 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 09:21:06 ] >>880 無いです そのくらい自分で書け
883 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 12:25:26 ] memset(buf,0,4); FillMemory(buf,4,0);
884 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 12:58:49 ] それちゃうやろw
885 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 13:04:22 ] #if defined(RtlFillMemory) #undef RtlFillMemory EXTERN_C VOID WINAPI RtlFillMemory( IN VOID UNALIGNED *Destination, IN SIZE_T Length, IN UCHAR Fill); #endif こうしておかないとダメってことか
886 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 15:03:34 ] >>880 rep stosd
887 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:24:48 ] 教えてください。 自分自信のウィンドウハンドルを取得するには FindWindowとEnumWindowを使わず取得する方法ってありますか?
888 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:26:54 ] 自分自身のウィンドウハンドルは自分で作ったんだからわざわざ取得しなくても最初から知ってるはずでは
889 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 17:27:17 ] >>887 WM_CREATEで保存しとけ
890 名前:887 mailto:sage [2007/12/02(日) 18:41:21 ] >>888 ,889 そういうのではなくてDLLでロードされたタイミングでそのDLLが マップされたプロセスのウィンドウハンドルを取得するという作りなので WM_CREATEとかでは無理なのです。 GetCurrentProcessId+EnumWindowsで取得という手もあるんですけど 他にやり方がないのかなと思ってレスしてみました。 因みにGetForegroundWindow、FindWindow以外のやり方でお願いします。
891 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:42:04 ] ねーよ
892 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:44:21 ] 質問です このスレに女性はいますか?
893 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:50:17 ] >>890 ファイルマッピング
894 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:51:33 ] たまに書く程度の女性なら、います。
895 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:52:56 ] >>890 プロセスにウィンドウが複数存在したらどうする? メインプログラムで「渡したいハンドル」を保管し、 DLLの初期化ロジックに渡した方が簡単だし、確実。
896 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:53:55 ] >>890 おれらエスパーじゃないんだから、前の書き込みで「DLLで」とかわかるわけないだろ? あほかw
897 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 19:56:39 ] エスパーじゃない人には聞いていません
898 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:09:05 ] じゃあここで待ってるといいよ エスパーが質問に答えるスレ pc11.2ch.net/test/read.cgi/tech/1187922645/
899 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:30:18 ] ム板にもエスパースレあったのか
900 名前:887 mailto:sage [2007/12/02(日) 23:00:42 ] >>893 その線ちょっと調べてみる。 >>895 インジェクションなんでそれはちょっと無理ぽ >>896 正直スマンカッタ
901 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:16:43 ] 注入されたプロセスのすべてのスレッドにメッセージフック仕掛ければ、大抵のHWNDはもらえる 相手によってはがむしゃらな量(種類)のHWNDが飛んでくるけどな ところでメインウィンドウって定義はあるのけ?
902 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:20:12 ] >ところでメインウィンドウって定義はあるのけ? だれもそんなこと言ってねえよ orz 野球終わったし寝る
903 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:40:52 ] DLLインジェクションっていわゆるフックとかだろ? 対象ウィンドウ(ハンドル)が分かってない状態でのそれ、ってどういう設計なんだ?
904 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 23:51:26 ] >>896-898 ワロタwww
905 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:30:41 ] そんなに面白くはないとおもう
906 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:36:58 ] まあ笑いのツボは人それぞれだしな。
907 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:41:10 ] 何が面白いのかさっぱり分からない
908 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:44:51 ] 面白くないと思う
909 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:45:53 ] 笑うなとは言わないよ。 ただ、あまりにも世間とずれているようなので、心配になっただけです。
910 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:59:14 ] それはお節介w
911 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:01:05 ] また笑ってる
912 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:39:13 ] 掲示板とかでつまらんつまらんって連呼してる奴は 営業とか人付き合いの下手な人
913 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 01:41:23 ] ???
914 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:04:46 ] >>912 私つまらんって連呼する人だけど、 このスレの主旨を考えると、正直別に笑いなんかいらんと思う。 というか害悪。
915 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:00:01 ] IDも出ない板で人に嫌われたって、 自分の一秒後の生活にすら何の影響も及ぼさないからな。
916 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:02:33 ] 人に嫌われることに慣れてる人の意見だな
917 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:06:26 ] で 、 こ の ス レ と 何 の 関 係 が ?
918 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:07:36 ] >>915 おまえをみなみけの千秋だと思って萌えてやろう
919 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:16:33 ] それは私が至らなかったねえ
920 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 18:37:51 ] スレ違いにもほどがある。 鮫の話しようぜ
921 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:18:01 ] >>920 前野乙
922 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:35:39 ] 英単語一つでできてるAPI名ってSleepとGDIの描画関数いくつかの他にある?
923 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 19:40:01 ] Beep
924 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:15:18 ] BS_OWNERDRAWを使って外観を変えたいと思っているのですけど、 BS_RADIOBUTTONやBS_CHECKBOXと組み合わせて使えますか? BS_OWNERDRAWを使って描画を独自に実装した場合は、 ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか?
925 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 20:18:09 ] AUTOならかってにやってくれるんじゃない?
926 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 22:06:05 ] >>894 女性プログラマカッコヨス
927 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 22:07:04 ] >>924 BS_PUSHBUTTON〜BS_OWNERDRAWは同時に一つしか指定できないから >ラジオボタンやチェックボックスの動作も独自に実装しなければならないのでしょうか? これが正解
928 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:28:49 ] ここにいる奴は良くも悪くも貪欲で物好きな奴ばかりだよな 仕事と割り切ってるマのほうが圧倒的。
929 名前:デフォルトの名無しさん [2007/12/04(火) 00:36:45 ] HttpQueryInfoってどこから情報をとってくるの? WEBページのサイズを取得しようとしてるんだけど、HTTP_QUERY_CONTENT_LENGTHつけてもテキストの部分のサイズしかとれない 0が返ってくるページも多いしね
930 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 03:51:59 ] HttpSendRequestしてないとかTransfar-Encodingがchunkedになってるかどちらか レスポンスの大きさを知るものであってWeb上のファイルの大きさを知るものではない
931 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 09:55:47 ] そもそも画像データや外部スクリプト、外部スタイルシートはhtml解析して別途リクエストを投げる訳で‥‥
932 名前:デフォルトの名無しさん [2007/12/04(火) 19:37:01 ] つか、仕事だとWin32はほとんどないような気がするんだが Javaとかの案件のほうが圧倒的に多くないか?
933 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:41:46 ] 当たり前じゃん。
934 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 19:53:43 ] SetLayeredWindowAttributesで半透明にしたウインドウを別のウインドウの上に置いて、 その上でマウスを動かすとものすごくカクカクするんですが、 考えられる原因は何でしょうか?
935 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:02:30 ] >>934 1.PCがしょぼい
936 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:04:51 ] >>935 半透明ではない可視ウインドウにするとカクカクしないんですよ。
937 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:11:22 ] 半透明は処理時間食いまくりんぐwwwwwww
938 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:19:41 ] 特にWindows2000は無茶遅い
939 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:23:43 ] ソフトウェアカーソルだとそんなことなりそうだな 今時オンボでもそんなのあるのか怪しいけど
940 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 20:27:01 ] >>934 ちなみにスペックは?
941 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:01:10 ] >>940 CPU: PentiumD920 MEM: DDR2 2GB Graphic: Radeon7400HD です。
942 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:33:30 ] >>941 >>935 でFA
943 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:40:50 ] マウスの影が半透明だから、 半透明に半透明を重ねようとして 大変な話になったとか?
944 名前:デフォルトの名無しさん [2007/12/04(火) 21:45:46 ] 初心者すぎる質問ですが、Win32API で作ったアプリケーションは、 Windowsでしか動かないのですか?
945 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 21:50:12 ] WindowsCEでも動かない Lindowsなら動くかもしれない
946 名前:デフォルトの名無しさん [2007/12/04(火) 22:00:45 ] >>945 ありがとうございました。
947 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:05:34 ] スプライト処理をしたいのですが画像の枚数が多いので 動的にマスクを作ったりBitBltを多用したりで力業状態なんですが もっと効率よく画像を重ねていく方法はありますか?
948 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 22:07:57 ] DirectDraw DirectGraphic
949 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:02:42 ] directXですか これ以上はすれちになりそうなので初心者スレ行ってきます ありがとうございました
950 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:33:53 ] Windows と C++ Windows Template Library 8.0 msdn.microsoft.com/msdnmag/issues/07/12/WindowsCPP/default.aspx?loc=jp まあGUIプログラミングとか一切しないわけだが
951 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 23:48:56 ] >>950 スレ違い ATL/WTL Part5 pc11.2ch.net/test/read.cgi/tech/1155951708/
952 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:01:55 ] >>945 リンドウス?ってリナクスにウインドウズっぽいGUIかぶせたライブドアが絡んでたOSだっけ? Win32APIと互換性あるのかあれ
953 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 01:05:33 ] というか、キモはWINEじゃねーの。
954 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 02:23:49 ] AlphaBlend関数(だけ?)を除いて、GDIには32bppのαチャンネルなんていう概念はないですか?
955 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:39:43 ] レイヤーウィンドウ作る時もアルファチャンネルあるし、XP以上だとアルファチャンネルつきアイコンも出てくる。 というか、質問の意味がわからない。
956 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:41:04 ] BITMAPV4HEADER::bV4AlphaMask
957 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 03:51:00 ] AlphaBlendていう関数がありますがなにか
958 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 04:58:37 ] >>957 人の話を聞けとよく言われるだろ
959 名前:デフォルトの名無しさん [2007/12/05(水) 08:03:21 ] >>957-958 warota(bo-yomi
960 名前:shinnichi [2007/12/05(水) 11:18:58 ] winsockで1対多のチャットプログラムを作ろうとしているのですが、上手くいかず困っています。 とりあえず以下のプログラムを作成して実験してみたのですが、 struct sockaddr_in addr1,addr2; struct sockaddr_in client1,client2; int len; SOCKET sock1,sock2; // 1 sock1 = socket( AF_INET , SOCK_STREAM , 0 ); addr1.sin_family = AF_INET; addr1.sin_port = htons( 12345 ); addr1.sin_addr.S_un.S_addr = INADDR_ANY; bind( sock1 , ( struct sockaddr * )&addr1 , sizeof( addr1 ) ); listen( sock1 , 1 ); len = sizeof( client1 ); sock1 = accept( sock1 , ( struct sockaddr * )&client1 , &len ); // 2 sock2 = socket( AF_INET , SOCK_STREAM , 0 ); addr2.sin_family = AF_INET; addr2.sin_port = htons( 12345 ); addr2.sin_addr.S_un.S_addr = INADDR_ANY; bind( sock2 , ( struct sockaddr * )&addr2 , sizeof( addr2 ) ); listen( sock2 , 1 ); len = sizeof( client2 ); sock2 = accept( sock2 , ( struct sockaddr * )&client2 , &len ); // 1 のときにはacceptで待機し、クライアントからコネクションすると接続され // 2 が実行されるのですが、// 2のacceptでは待機してくれません(クライアントからコネクションしなくても流れていってしまう)。 理由が分からず困っています。 どなたか解る人がいましたらご教授願います。
961 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:22:05 ] 戻り値でどこでどんなエラーが出てるか調べてみ?
962 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:22:35 ] listenポート同じだからじゃ・・
963 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:23:55 ] >>960 エラーコードを確認しましょう。つーか、Winsockはネットワークプログラミングスレのほうが無難じゃないかな? # 尤も、基礎を勉強してから出直せって言われそうではあるが。
964 名前:shinnichi [2007/12/05(水) 11:35:22 ] 回答有難うございます。 戻り値ではINVALID_SOCKETが返ってきています。 なぜだかわかりませんか?
965 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 11:38:45 ] 最後だけチェックしてる? エラーはもっと前で起きてるんじゃない?
966 名前:shinnichi [2007/12/05(水) 11:54:13 ] 回答有難うございます。 エラーですがbindのところで起きていました。 >>962 の指摘どおりポートが同じだからエラーが起きていると思われます。 エラーの原因わかりましたので、あとは、色々試してみようと思います。 ご意見有難うございました。
967 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:12:07 ] 内容はスレ違いだけど平和でよかた
968 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:21:57 ] winsockはWin32APIの一部だと思うが
969 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:23:52 ] >>968 >963はより適切なスレに誘導しただけだ。一部であることを否定しているわけではない。
970 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 12:25:05 ] いや、>>967 に対しての話でしょ
971 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:34:36 ] →↓↘+P
972 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:52:25 ] しょぉ〜〜(ry
973 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 15:04:55 ] vc++が初めてむかついたとき: #define WIN32_LEAN_AND_MEANがなんでデフォでテンプレにはいってんだよ!! これのせいで3時間なやんじまったじゃねーか!!!!
974 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:33:45 ] WIN32_LEAN_AND_MEANって何を省略してるんだぜメーン?
975 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 17:39:11 ] >>974 PNOTIFYICONDATA
976 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 18:44:47 ] >>974 windows.hをWIN32_LEAN_AND_MEANで検索すれば分かる事を聞くな低脳
977 名前:デフォルトの名無しさん [2007/12/05(水) 18:56:38 ] IEコンポーネントで簡単なブラウザを作ったのですが、ブラウザ側からHTMLに変化をもたせるような命令を実行した後、 うまく変化が現れません。HTMLを表示しているウィンドウにマウスカーソルを当てた時に初めて変化が起こるのですが、 これを特にマウスをウィンドウ上で移動させる事なく変更を反映させるにはどうすればいいのでしょうか?
978 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:01:57 ] >>976 こういう人はなんかなぁ...
979 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:04:51 ] ↓次スレよろ
980 名前:デフォルトの名無しさん [2007/12/06(木) 01:13:47 ] 書き順ソフトをつくりたいと思ってるんですが、TrueTypeフォントを序々になぞっていくようなことってどうやって実装すればいいんでしょう? 習字で筆がこう、字を書いていくような
981 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:24:41 ] 質問ですが、 windows用の帯域制御ソフトの仕組みがどういう風になっているのか、 大まかに教えていただけませんか?
982 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 01:31:53 ] >>980 まず、書き順データを用意することから始めるんだ。 そしたら次はスレ立てだ。
983 名前:デフォルトの名無しさん [2007/12/06(木) 02:15:48 ] >>982 立てただよ TrueTypeってどの線をどういう順番で描くのか情報持ってないの?
984 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:18:05 ] >>983 氏ね
985 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 02:40:51 ] 「上書きしますか?」とか「終了しますか?」とかの、よく使う文章のメッセージボックスを表示させるAPIはあるんですか? いくつかの外国製の英語のソフトウェアでは、そこだけ日本語で出てくるので、気になりました。
986 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:12:36 ] ファイル移動にShellのAPI使ってるんじゃね? 終了しますか?はしらね
987 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:53:29 ] ウィンドウハンドルからそのウィンドウを所有しているプロセスのフルパスを取得するには、 どのようなAPIを使えば良いでしょうか?
988 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 03:56:24 ] >>985 MFCだよ
989 名前:デフォルトの名無しさん [2007/12/06(木) 06:26:56 ] >>987 GetModuleFileNameではダメ?
990 名前:デフォルトの名無しさん [2007/12/06(木) 10:08:30 ] バックアップは・・・昨日の・・・朝9時か・・・ はぁ・・・
991 名前:デフォルトの名無しさん [2007/12/06(木) 10:09:43 ] 誤爆↑
992 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 10:29:34 ] GetWindowModuleFileName かな
993 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 14:59:43 ] ____ /__.))ノヽ .|ミ.l _ ._ i.) (^'ミ/.´・ .〈・ リ .しi r、_) | この子もわしJAPAN入りや。わしが育てたる | `ニニ' / ノ `ー―i´
994 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 15:39:13 ] >>989 >>992 レスありがとうです 家に帰ったら試して見ます
995 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:53:57 ] う
996 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:00 ] め
997 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:02 ] ま
998 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:05 ] す
999 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:08 ] ね
1000 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 17:54:23 ] なんですと?!
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。