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


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

Win32API質問箱 Build59



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を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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