■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

Win32API 質問箱 Build8
501 名前:デフォルトの名無しさん :03/01/21 12:31
>>500
インクルードファイルのほうも新しいものを参照するようにしてあるのか?

502 名前:デフォルトの名無しさん :03/01/21 12:45
IEでも対応できていないことを無理やりやろうとすると、
逆に互換性が失われるのでは?
これからMSはなにやるかわからんぞ。

503 名前:602 :03/01/21 12:58
>>601
しています。

というより、自分でインクルードファイルを置き換えたんですけどね(コピペで)

VisualC++6内の「include」フォルダ内を新しいもの(PlatformSDKのinclude)に変えた。

504 名前:デフォルトの名無しさん :03/01/21 13:55
カード・ワーズのゲームエディターのようなTABをメニューの下に
つけるしかたを教えてください。

505 名前:デフォルトの名無しさん :03/01/21 15:44
DLできるPlatformSDKとVC++のincludeのディレクトリ構成ってちがくない?
そのまま上書きはまずいんちゃう?

506 名前:デフォルトの名無しさん :03/01/21 16:04
普通はIDEのインクルードパスの設定でPlatform SDKのほうを優先するように変えたり、
環境変数いじったりで対応するよな。

あとWINVERその他のマクロが適切に設定されていない可能性もあるか。

507 名前:デフォルトの名無しさん :03/01/21 16:21
バウンダリ文字列を作るAPIなんて公開されているのでしょうか?
↓こんなの
boundary="=_NextPart_000_001A_01C016CF.64AA5620"

IE も Outlook も同じフォーマットなので API であるのかな?と


508 名前:デフォルトの名無しさん :03/01/21 16:56
後ろ8byteは Uuidっぽいが。

509 名前:デフォルトの名無しさん :03/01/21 17:11
マシンに一意なIDを取るAPIってありますか?

510 名前:デフォルトの名無しさん :03/01/21 17:14
吹き出しみたいな形のツールチップを作る方法を教えてください。

511 名前:デフォルトの名無しさん :03/01/21 17:26
>>509
完全ではないが、MACアドレス。

512 名前:デフォルトの名無しさん :03/01/21 17:45
>>509
どの範囲で?
時間とか?


513 名前:デフォルトの名無しさん :03/01/21 17:58
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。

514 名前:デフォルトの名無しさん :03/01/21 18:06
>>511
できれば NIC非装備のマシンでも使用したいんですが

>>512
イメージ的には、UNIXのhostid的なものです。
コントロールパネル→システムに出てくる、ごちゃごちゃした
IDっぽいのは、それとして使えるのかな?

515 名前:デフォルトの名無しさん :03/01/21 18:10
>>514
cpuidとか?

516 名前:デフォルトの名無しさん :03/01/21 18:48
>>514
GetCurrentHwProfile() の HW_PROFILE_INFO.szHwProfileGuid なんかは?

>コントロールパネル→システムに出てくる、ごちゃごちゃしたID
は違法コピーが無い世の中なら使用可

517 名前:デフォルトの名無しさん :03/01/21 19:20
>>476
アリガト!(´▽`)

518 名前:497 :03/01/21 20:08
あのぉ・・・>>497ですけど放置ですか・・・


519 名前:デフォルトの名無しさん :03/01/21 20:45
>>509
初回だけCoCreateGuid()した値をレジストリにとっといて
2回目以後はそれを再使用ってのは却下か?

520 名前:デフォルトの名無しさん :03/01/21 20:58
>>516
いいかもしれないですね。

>>519
hostidの代替としては、ユーザが任意に変更しにくい値がいいんですが...

521 名前:デフォルトの名無しさん :03/01/21 21:49
>>520
任意に変更ってregeditで変更できてはまずいってことか?

522 名前:デフォルトの名無しさん :03/01/21 23:25
特定のアプリケーションが送受信しているパケットデータを
横取りして閲覧と改竄をしたいのですが、

Winsockを使いこめばそのようなことはできますか?
それともDDKを手に入れてガシガシガシやらないとできないですか?

523 名前:デフォルトの名無しさん :03/01/21 23:37
はっきりとRagnarokOnlineといいなさい

524 名前:デフォルトの名無しさん :03/01/21 23:41
>>522
libpcap

525 名前:デフォルトの名無しさん :03/01/21 23:47
>>522

改組するなら filter driver あたりを書くのが良いと思うけど>WDM詳しい人フォローしちくり
WDM 以前の環境ならカーネルレベルで TDI Hook ね。
閲覧するだけなら libpcap でも良いかもね。

一時的な hack で良いなら、通信先を hosts ファイルで 127.0.0.1 に
変更しちゃって、本来の接続先との間で proxy として動作するプログラム
書くのが簡単だと思う。

526 名前:デフォルトの名無しさん :03/01/22 00:05
その手のネットワーク系のプログラムを書くなら、Windows 捨てて UNIX に行った
方が早いと思うぞ。

FreeBSD で作ったルータを挟んで、そこで divert (4) 噛ますとか。

527 名前:デフォルトの名無しさん :03/01/22 00:36
BSD厨ここにも発見(・∀・)

528 名前:522 :03/01/22 00:48
ttttttttttttttttttttttttthx!
明日(今日か)、本屋に行き詳しく調べます。

>>523
自分と他人を重ねないでね☆

529 名前:デフォルトの名無しさん :03/01/22 01:21
図星のようだな

530 名前:デフォルトの名無しさん :03/01/22 01:47
厨です。質問していい?

531 名前:名無し@沢村 :03/01/22 01:49
>>526
ヌヒよ、そういうレスのことを一般的に「的はずれ」って言うんだよ。

532 名前:デフォルトの名無しさん :03/01/22 01:51
CreateCompatibleDCで作ったメモリーDCが
不要になったとき、元々あったBITMAPをメモリーDC戻さないで
DeleteDCしても動くのですがやっぱり悪いですか?

533 名前:デフォルトの名無しさん :03/01/22 01:55
>>532

Win98 や Me などで、使うたびにだんだんリソースが減っていっても
構わないなら、それでも別に良い(めったに使わないツールとか)。


534 名前:デフォルトの名無しさん :03/01/22 02:00
>>533
厨です。すばやいレスありがとう。

535 名前:デフォルトの名無しさん :03/01/22 02:03
>>527
どうした、何か BSD に恨みでもあるのか?

Win32 で IP パケットを低いレイヤーでいじろうとすると、どうしても kernel mode で
動くトコロに手を入れる必要があって難しい。開発中は、自分の書いたコードのバグ
で OS ごと落ちるしな。

divert (4) は、そのあたりの処理をユーザ層に切り出してるから開発は楽だぞ。

536 名前:デフォルトの名無しさん :03/01/22 02:05
ま、熱くなる前にスレタイ見ろってこった

537 名前:デフォルトの名無しさん :03/01/22 02:11
それを言ったら、標準 API だと無理、で終わりだろう。

538 名前:522 :03/01/22 02:23
糸口さえつかめればなんでもいいけど。

ただ、いまBSDに手をつける気力は無いので、
今回はスルーしつつ、記憶にはとどめます。

539 名前:デフォルトの名無しさん :03/01/22 02:39
BSDなんかやるくらいならLinuxやるよ(藁

540 名前:デフォルトの名無しさん :03/01/22 03:10
>>539
BSDにはどういったイメージをお持ちで?

541 名前:デフォルトの名無しさん :03/01/22 03:12
>>540
OS X みたいなもの

542 名前:デフォルトの名無しさん :03/01/22 08:09
>>541
ネタレスカコイイ!

543 名前:デフォルトの名無しさん :03/01/22 10:31
Windowsで親プロセスの環境変数を変更する方法ってありましたっけ?

544 名前:デフォルトの名無しさん :03/01/22 14:42
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment
に環境変数書いて、 WM_SETTINGCHANGE を投げれば、
親プロセスの環境変数「も」変更できるだろう。

545 名前:デフォルトの名無しさん :03/01/22 14:50
>>543
SetWindowsHookExでDLLを侵入させてSetEnvironmentVariable



546 名前:デフォルトの名無しさん :03/01/22 15:23
>543
親がウインドウもってなかったら?

547 名前:デフォルトの名無しさん :03/01/22 15:29
>>546
ハァ?

548 名前:デフォルトの名無しさん :03/01/22 15:37
>>545 544?
PostThreadMessage


549 名前:デフォルトの名無しさん :03/01/22 15:38
って自分も間違っているし
x>>545
o>>547


550 名前:デフォルトの名無しさん :03/01/22 17:06
>>548
相手がメッセージループ回してくれなきゃ
Postしてもキューにたまるだけで意味ない。

551 名前:デフォルトの名無しさん :03/01/22 17:48
WM_SETTINGCHANGE 投げても既に起動しているプロセスの環境変数は変わらんよ。

552 名前:デフォルトの名無しさん :03/01/22 17:53
つーかUSER32.DLLの関数を一度も呼び出していないスレッドは
そもそもキューが存在しないのでPostできない。

553 名前:デフォルトの名無しさん :03/01/22 21:30
レスくれた人ありがと。返事送れてすんまそん。

>>544
残念それ知ってた。今回やりたいのは親プロセスだけでシステム全体じゃないんだよね。
システム全体の設定を変えるわけだから権限の問題も出てきそうだし、
それに既に起動しているプロセスが変更されるかという疑問もあったし。
でその疑問を先に答えてくれた>>551さんありがと。

>>545
ほう。そんな方法があるのか? でも>>548になんか修正するようなこと書いてあるし、
しかも>>550 >>552でさらに修正するようなこと書いてあるし。

えと、結局>>545の方法で出来るのでしょうか?
それともPostThreadMessage単独で出来るのでしょうか、
SetWindowsHookExとPostThreadMessageを組み合わせるのでしょうか。

DLLを侵入させるってのがやったこと無いからよく分からない。
どっかにサンプルないかな〜。

554 名前:デフォルトの名無しさん :03/01/23 03:43
552 のような状態では、フックも通用しないのでは?

555 名前:602 :03/01/23 06:39
原因がわからないので、ソース・画像をUPします。

↓ソース(http://www.kumei.ne.jp/c_lang/sdk/sdk_57.htm
http://www.geocities.co.jp/SiliconValley-Oakland/6260/statusbar.rtf
↓ビルドした直後
http://www.geocities.co.jp/SiliconValley-Oakland/6260/pict1.JPG
↓コンパネの画面内「デザインの配色をアイスカラーに変更」した直後
http://www.geocities.co.jp/SiliconValley-Oakland/6260/pict2.JPG

ちなみに、VC++6内の設定は、リンクで「Comctl32.lib」を追加しただけです。
ビルド環境は、WinXP・PRO、VC++6(共に何もいじっていないインストールしたままの状態です)
PlatformSDKはインストールしていません。

なぜStatusbarの色が「アイスカラー」に変わらないのでしょうか?

556 名前:602 :03/01/23 06:40
実験用として今、猫さんのHPのソースを参考しています。

557 名前:デフォルトの名無しさん :03/01/23 08:57
>>555
CreateMyStatus関数の(HMENU)ID_STATUSをNULLにする


558 名前:デフォルトの名無しさん :03/01/23 10:49
> DLLを侵入させるってのがやったこと無いからよく分からない。
> どっかにサンプルないかな〜。
kageのソース

559 名前:デフォルトの名無しさん :03/01/23 18:17
タブコントロールで、右クリックでタブを選択できるようにするには
どうしたらいいですか?

560 名前:デフォルトの名無しさん :03/01/23 18:19
>>559
左ボタンが壊れた?

561 名前:デフォルトの名無しさん :03/01/23 18:38
>>559
右クリックした時にその下のタブを選択させる。

562 名前:デフォルトの名無しさん :03/01/23 18:48
>>560
いえ、違いますけど・・・。

>>561
カーソルの下にあるタブを判定するにはどうしたら良いですか?
TabCtrl_GetCurSelだと、右クリック時のカーソルの下にあるタブじゃなくて
選択されてるタブしか判別できないのですが・・・。

563 名前:デフォルトの名無しさん :03/01/23 19:10
>>562
TCM_HITTESTを送る

564 名前:山崎渉 :03/01/23 20:00
(^^)

565 名前:602 :03/01/23 20:57
やはり、誰も原因がわからないようだ。
私がプログラムミスでないことは確かなようだ。

566 名前:デフォルトの名無しさん :03/01/23 21:25
>>565
>>557でも駄目なのですか?



567 名前:602 :03/01/23 21:27
>>566
ええ、だめです。

きちんと初期化はしているので、こんなおかしい不具合がでるはずはないのだが・・・。
ic.dwSize = sizeof(INITCOMMONCONTROLSEX);
ic.dwICC = ICC_COOL_CLASSES|ICC_BAR_CLASSES;
InitCommonControlsEx(&ic);

私だけの問題ではなさそうだ。

568 名前:602 :03/01/23 21:34
ちくしょう・・・ドットネット買うしかないのか・・・。

569 名前:デフォルトの名無しさん :03/01/23 21:45
んー、それがXP以外では問題がでないようならmanifest.xmlかなんかで解決するかもな。
XP持ってないんでどうとも言えんが。

570 名前:602 :03/01/23 22:01
>>569
マニフェストはすでに確かめてあり、だめでした。

・・・わからん。。。
ほかの人で同じような不具合はないのかな?

571 名前:デフォルトの名無しさん :03/01/23 23:23
> 私がプログラムミスでないことは確かなようだ。

割るれるな?

572 名前:デフォルトの名無しさん :03/01/23 23:58
Windows NT4.0/2000以降でASPIを使わずに
SCSIのディスクデバイスを列挙したいのですが、
どうすればいいのでしょうか。
キーワードは「SPTI」らしいのですが、
どんなAPIを使うのか、どんな資料がどこにあるのか、
さっぱり分かりません。

要はこういうソフトの非ASPI版が作りたいのですが。。
http://www.vector.co.jp/soft/win95/hardware/se084939.html

よろしくお願いします。

// SHIORI-0 //

573 名前:デフォルトの名無しさん :03/01/24 00:12
WinampのPlug-inはClassで成り立っているのですよね?
あのように、動的にクラスを読み込んで利用するにはどうすればいいのでしょうか?


574 名前:デフォルトの名無しさん :03/01/24 00:15
>>572
ASPIしか使ったことがないから知りませんが、検索したらでてきました
ttp://www.geocities.co.jp/Hollywood/4205/doc/spti.html
DDKが必要らしいです


575 名前:デフォルトの名無しさん :03/01/24 00:17
>>573
どの言語で作るつもりか知らんけど
C++なら仮想クラスを自分のプログラムで定義して、
DLLはそれの派生クラスを作成する
あとはDLL側にそのクラスのインスタンスを作成する関数を作って
LoadLibrary/GetProcAddressでその関数を呼び出す
返って来たインスタンスを通して全ての処理を行えばいい

576 名前:572 :03/01/24 00:41
>>574さんありがとうございます。

ふと思いついて「wnaspi32.dll spti」でグーゴゥしてみました。

WinASPI32 to SPTI wrapper for WinNT3/4/5
http://f-ts.bias.ne.jp/~azuco/apj/apjf.htm
> SPTIを使ってASPIのファンクションをエミュレート

DLL 関連回答
http://www.snark.co.jp/soft/faq/dll_a.htm
> 単純にNTでSCSIコマンドを発行するだけなら DeviceIoControlでできます。
> DDK の src\storagej\class\spti にサンプルがありますが
> \\.\scsi1: といったデバイスファイルを開いて CDB を送れます。

・・・てか、SPTI以前にASPIのことも分からないので、
むしろ>>572みたいなツール、どこかに転がってないですか?

577 名前:デフォルトの名無しさん :03/01/24 00:53
>>576
その質問はスレ違いですが
>>576のwrapperDLLのファイル名をwnsapi32.dllにすれば
>>572等に既存のASPIソフトが使えるのでは?


578 名前:572 :03/01/24 01:00
>>577
なるほど! 明日やってみます。

ついでに「wnaspi32.dll spti」に引っかかった英語ページ。
読めないので関係あるのかないのか分からない。。
http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_10351574.html
http://akrip.sourceforge.net/
http://www.onlinepcfix.com/ASPI2.htm

579 名前:デフォルトの名無しさん :03/01/24 01:19
>>567
>>555のソースをビルドして試してみたけど確かに色が変わらないねえ。
でも自作のアプリではちゃんと色が変わった。よって
> 私がプログラムミス
であることは
> 確かなようだ。
申し訳ないが自作アプリとどこが違うのかまではわからない。


580 名前:デフォルトの名無しさん :03/01/24 01:24
となると、あやしいのは
SendMessage(hStatus, SB_SIMPLE, TRUE, 0L);
のあたりでしょうか?
いずれにしろ.NETでは解決しないでしょうね


581 名前:デフォルトの名無しさん :03/01/24 01:46
>>580
自作アプリではCreateWindowEx+SB_SIMPLEの代わりに
CreateStatusWindowを使ってたんでそうしてみたが変わらなかった。
いったい何が違うんだ。まじでわからん…

582 名前:602 :03/01/24 03:33
>>579
早起きしました。

変わらないですよね(涙)
ステータスバーに関してはいろいろな方法で試したのですが、変わりません。
これでも駄目でした。
switch (msg) {
case WM_CREATE:

INITCOMMONCONTROLSEX sex;

sex.dwICC=ICC_BAR_CLASSES;
sex.dwSize=8;
InitCommonControlsEx(&sex);

CreateMyStatus(hWnd, hInst);
・・・・・

これはREBARでも同じ現象(配色が変わらない)が起こるので、何に問題があるのかがいまだに不明・・。



583 名前:デフォルトの名無しさん :03/01/24 03:49
XPのバグ(というか仕様変更)だったら泣くな.…

584 名前:デフォルトの名無しさん :03/01/24 04:31
WM_KEYDOWNでは、キーを押されたときのshiftキーの状態はわからないですよね。
キーが押されたときのshiftキーの状態を知るにはどうしたらいいんでしょうか。

585 名前:デフォルトの名無しさん :03/01/24 04:49
>>584
WM_KEYDOWN処理中に GetKeyboardState で全仮想キーの状態を取得するとか……

586 名前:デフォルトの名無しさん :03/01/24 05:20
>>584
::GetKeyState

587 名前:デフォルトの名無しさん :03/01/24 08:21
>>585-586
それってWM_KEYDOWNを受け取ったタイミングの状態であって、
WM_KEYDOWNが発生する原因となったキーが押されたときの状態じゃないですよね。


588 名前:デフォルトの名無しさん :03/01/24 09:08
>>587
> This function retrieves the state of the key
> when the input message was generated.
と書いてるが。でも
> The key status returned from this function
> changes as a thread reads key messages
> from its message queue.
とも書いてるなあ。どっちが本当だよおい

589 名前:デフォルトの名無しさん :03/01/24 09:13
あー入力メッセージが生成されたときの状態を読み取るから
メッセージを読み出すたびに状態が変化すると考えれば
とくに矛盾しないか。
つーわけでGetKeyStateで問題ないと思うが

590 名前:デフォルトの名無しさん :03/01/24 13:57
>>587
キーが押されたときのだよ。ヘルプぐらい読んでくれ。
あとトレースするとかすればわかる。
ハードウエア的な現在の状態を知る方法はまた別の方法だから。

591 名前:デフォルトの名無しさん :03/01/24 14:17
キーボードが2つ以上接続されている環境があったとして、
どちらのキーボードのキーが押されたのか判断する方法はあるのでしょうか? 

 

592 名前:デフォルトの名無しさん :03/01/24 14:59
スプリットウィンドウの右上とかにバッテンで閉じるのを作りたいんですが、
簡単な方法がありましたら是非教えて下さい。お願いします。

593 名前:デフォルトの名無しさん :03/01/24 15:06
>>592
bitblt

594 名前:デフォルトの名無しさん :03/01/24 15:35
印刷関係でちょっと不可解な現象が発生してるんです。

とあるアプリで StartDoc() とかしても印刷がはじまらないんです。
で、印刷ルーチンが二つありまして(出力形態が二種類あるので)、
片方ではちゃんと印刷開始されるのですが、もう片方はうんともすんともいいません。
これだけだと一方のルーチンの不具合じゃないか、と言われるかもしれません。
確かにそれはそうで、現在調査しているのですが、不可解なのは
関数の中で文字列処理のために

 char buf[256];

しているのですが、これを

 char buf[184];

にすると正しく印刷が開始されるのです。
これが逆ならスタックでも壊してるのかなという気にもなるのですが、
小さい方が動く、というのは聞いたことがありません。

何となくドライバ関係のDLLのアロケート関係のような気もするのですが、
どなたかこのあたりに関して情報お持ちでないでしょうか?

ちなみにOSはWinME、コンパイラはVC6です。
さらにちなみにその他のOS(98、98SE、2000、XP)では
問題なく印刷が開始されます。

595 名前:デフォルトの名無しさん :03/01/24 15:39
>>594
>char buf[184];
>にすると正しく印刷が開始されるのです。
たまたま印刷されてるだけだと思われ。"\0"とか抜けてない?

596 名前:デフォルトの名無しさん :03/01/24 15:54
>>594
EndDocまで行わないと、印刷を始めるかどうかはドライバ次第だったような。

597 名前:デフォルトの名無しさん :03/01/24 16:07
>>594
GetLastError()で調べれ。

598 名前:594 :03/01/24 16:14
ちょっと試してきました。
とりあえず buf がらみの処理は変数宣言も含めて削除してみますた。
すると。確かに印刷される。やっぱりどこかでつぶしてる?
それではと、途中に

 {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

と入れてみますた。出なくなりました。何で???

>>595
そういうわけで文字列処理部分ではなさそうです。

>>596
あ、ちょっと説明が足りませんでしたが、どの段階で印刷が開始されるかは
よくわかってないまま書きました。まぁ印刷される場合があるということは
処理の流れ自体はあってるだろうということで。

>>597
というかエラーにならないんです。あたかも正常に終わったかのように
印刷されないんです。

何か見落としてるかもしれないので他にもヒントありましたらお願いします。


599 名前:594 :03/01/24 16:17
すいません。読み返してみてちょっと補足。説明が中途半端な気がしたので。
結論から言えば、

 /* ↓この処理を通らないと印刷される */
 if (0) {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

 /* ↓通ると印刷されない */
 if (1) {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

ということです。なんでだろーなんでだろー
age させてもらっていいですか?

600 名前:デフォルトの名無しさん :03/01/24 16:18
余裕で600ゲット

601 名前:デフォルトの名無しさん :03/01/24 16:24
600ゲトー

   ∧∧   (⌒
 ⊂(゚Д゚⊂⌒つ(≡
    ズサー (⌒


602 名前:デフォルトの名無しさん :03/01/24 16:26
それではと、途中に

 {
  char buf[256];
  *buf = '\0';
  DrawText(pd.hDC, buf, -1, &rc, format);
 }

と入れてみますた。出なくなりました。何で???


・・・初期化してないcharの配列をを渡してた?

603 名前:594 :03/01/24 16:33
さらに突き詰めてみました。先ほどの処理をさらに簡略化して

 if (1) {
  char buf[256];
  *buf = '\0';
 }

○。

 if (1) {
  char buf[256];
  lstrcpy(buf, "hoge");
 }

×。

 if (1) {
  char buf[256];
  strcpy(buf, "hoge");
 }

○。

どうやらよそ様のDLLの関数に buf のアドレスを渡すとダメなようです。
何かどこかで聞いたことあるような。。。

604 名前:594 :03/01/24 16:38
引っ張ってしまってスマソン。もう少しおつきあいいただければ幸いです。
さらに続けて(if は省略します)

char *buf = GlobalAlloc(GPTR, 256);
lstrcpy(buf, "hoge");
GlobalFree(buf);

○。

お、そゆこと?

と思って元の処理に戻して、先頭で定義してた
char buf[256];

char *buf = GlobalAlloc(GPTR, 256);
にしてみますた。

ダメでした。。。ショボン

605 名前:デフォルトの名無しさん :03/01/24 16:38
http://banana.fruitmail.net/cgi/introduce_jump1.cgi?1363289

606 名前:デフォルトの名無しさん :03/01/24 16:44
>>604
HGLOBAL GlobalAlloc(
UINT uFlags, // 割り当ての属性
SIZE_T dwBytes // 割り当てたいバイト数
);

根本的に使い方間違ってる。 

607 名前:594 :03/01/24 16:47
え?今って GPTR でポインタ返せないの?

608 名前:デフォルトの名無しさん :03/01/24 16:58
返せるよ。

609 名前:デフォルトの名無しさん :03/01/24 17:31
子ウィンドウとして作成したリストコントロールを
要らなくなった時点で、DestroyWindow(hList);で破棄しようとしたのですが
サブクラス化したリストコントロールのプロシージャのWM_DESTROYで
PostQuitMessage(0);とすると、親ウインドウも一緒に閉じてしまいます。
PostQuitMessage(0)しなくても、リストコントロールはきちんと破棄されたと
思って良いのでしょうか?

610 名前:594 :03/01/24 17:33
うーん、謎です。。。
メモリまわりっぽいのは確かだと思うんですけどねぇ。
LintTo() や、即値渡しの TextOut() だけにすると問題なく描画できますので。。。

他のOSではたまたま動くけど、
Meでは注意しないとダメな処理ってありましたっけ?


611 名前:デフォルトの名無しさん :03/01/24 17:36
PostQuitMessageは最後のウィンドウとか
メインウィンドウが閉じたときにだけ呼び出すものだよ
なんでWM_DESTROYのデフォルト処理で自動的に
呼び出されないのか考えれ

612 名前:デフォルトの名無しさん :03/01/24 18:36
>575
インスタンスを作成する関数を作って返す
とありますが、どのような形で返せばいいのでしょうか?

613 名前:デフォルトの名無しさん :03/01/24 19:18
>>612
ポインツァー?

614 名前:デフォルトの名無しさん :03/01/24 19:22
変数形です。

615 名前:594 :03/01/24 19:40
ちょっと気付いて試してみたらどうやらOKっぽかったので
それのような気がするんですが、

StartDoc() に渡す DOCINFO 構造体って
やっぱ不要なメンバはゼロクリアしとかないとダメです?

マニュアルにはダメとは書いてないんですけど、そんな感じですよね。。。

巷のサンプルみても、初期化せずに必要なメンバ(lpszDocNameとか)設定してる
だけのものが多いんですが違うのかな?

これだけ↓でとりあえずは動くようになったのですが。

 di.cbSize = sizeof(di);
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;

616 名前:デフォルトの名無しさん :03/01/24 19:48
>>615
しむらcbSize--!書き間違えかも知れんけど。

617 名前:デフォルトの名無しさん :03/01/24 19:49
>>615
静的変数やGlobalAlloc(GPTRの場合は基本的に0初期化されているから必要ない

多少なりともプログラムをやっているならどういう場合に初期化が必要かは推測できるはず
メンバが設定されているかいないかをどうやってシステム側が判別するの?


618 名前:594 :03/01/24 19:54
>>616
へ?何か間違ってる?気付いてないかも。

>>617
もう少し言い訳さしてください。

実は。。。昔ながらのやり方でやってたので
DOCINFO のメンバが増えてるの知らなかったんです。。。
印刷するプログラム書いたの久しぶりだったもので。。。

大変お騒がせ致しました。

619 名前:デフォルトの名無しさん :03/01/24 20:03
>>618
cbSize==0になってるよ

620 名前:594 :03/01/24 20:07
>>619
ごめん、まだわかってない。

あれ?

DOCINFO di;

di.cbSize = sizeof(di);

で間違ってる?そこじゃない?

621 名前:デフォルトの名無しさん :03/01/24 20:09
その後ZeroMemoryしている


622 名前:デフォルトの名無しさん :03/01/24 20:11
>>620
いや順番がこうじゃないとだめじゃん?
 ZeroMemory(&di, sizeof(di));  // この行を追加
 di.cbSize = sizeof(di);
 di.lpszDocName = lpszDocName;
 di.lpszOutput = NULL;

623 名前:594 :03/01/24 20:28
あ。。。あぅ。。。あぅぅ。。。。。

面目ないっ m(_ _)m

みんな、いい香具師だなぁ。好きだぜ、みんな!じゃー逝ってくる!

624 名前:デフォルトの名無しさん :03/01/24 20:29
>>575
インスタンスを作成する関数を作って返す
とありますが、どのような形でポインタを返せばいいのでしょうか?

625 名前:602 :03/01/24 20:46
やはり、誰もわからないみたいですね。
致命的なバグか?

626 名前:デフォルトの名無しさん :03/01/24 20:48
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} };
IBeeper*CreateBeepInterface();
DeleteBeepInterface(IBeeper*p);
とでもインターフェースを定義しておき、共通とする。

んで、プラグイン側では、インターフェースを実装する。
class CBeeper : public IBeeper { void Beep() { .... } };
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }

それだけ。

627 名前:デフォルトの名無しさん :03/01/24 21:14
>>626
う〜ん。難し。
interface IBeeper { virtual void Beep() = 0; ~IBeeper(){} };
って、クラスじゃないんですね。。同じですか。
これは、ヘッダーですか?
IBeeper*CreateBeepInterface();
DeleteBeepInterface(IBeeper*p);
これは、何をするかは見当がつくのですが…。

class CBeeper : public IBeeper { void Beep() { .... } };
この*でつながっているのはどういう意味でしょうか?ポインターですか?
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }



628 名前:デフォルトの名無しさん :03/01/24 21:48
ほう、何も継承しないのか

629 名前:デフォルトの名無しさん :03/01/24 22:02

public ですか?
継承ですね。はぁ。

630 名前:デフォルトの名無しさん :03/01/24 22:16
COMのようでCOMじゃない

631 名前:デフォルトの名無しさん :03/01/24 22:19
はぁ。何かつかめた気が。
でも、
IBeeper*CreateBeepInterface() { return new CBeeper; }
DeleteBeepInterface(IBeeper*p){ delete p; }
が解りません。
どういう意味でしょうか?


632 名前:572 :03/01/24 22:49
>>572-578と、ちょっとスレ違いな質問をしていた者ですが、
要求は解決したのでこのスレでご報告します。

まず、
>WinASPI32 to SPTI wrapper for WinNT3/4/5
http://f-ts.bias.ne.jp/~azuco/apj/apjf.htm
このASPTI.DLLをWnASPI32.dllにリネームして
http://www.vector.co.jp/soft/win95/hardware/se084939.html
を実行したのですが、loadできないとエラーが出て使えませんでした。

で、いろいろ探していたらhttp://www.runser.jp/softlib.html
「Device Benchmark Test Program」というツールが見つかりました。
cmd.exeで「devtest.exe scsi」と実行すると、
すべてのSCSIディスクが表示されました。
これで要求は満たしているので解決としますが、
ソースも付いているので勉強していきたいと思います。

ありがとうございました。 // SHIORI-1 //

633 名前:デフォルトの名無しさん :03/01/24 22:51
CBeeperのクラス名やら実装やらをIBeeper利用者に見えなくするのでは?

634 名前:デフォルトの名無しさん :03/01/24 23:12
626=629=631
(・∀・)ジサクジエーン

635 名前:デフォルトの名無しさん :03/01/24 23:19
自作自演の使い方を激しく間違っている634萌え

636 名前:デフォルトの名無しさん :03/01/24 23:48
>>633
そういう意味なんですか。
CreateBeepInterfaceというのはどこから出てきたのですか?

637 名前:デフォルトの名無しさん :03/01/24 23:51
>>636
"COM"だとか"インターフェースと実装の分離"で調べれ。

それから、スレ違いなのでここでやるのはよせ。

638 名前:デフォルトの名無しさん :03/01/25 04:03
ウインドウがGetOpenFileNameやGetSaveFileNameで開かれた
ダイアログかどうかを調べたいのですが、
その方法がわからず困っています。

頼みのウインドウクラスは
他のダイアログと同じ#32700なので使えないし...。

何か良い方法はないでしょうか?
よろしくお願いします。

639 名前:デフォルトの名無しさん :03/01/25 05:15
>>625
誰のバグだよ
どうでもいいがそのハンドル紛らわしいからやめてくれ

640 名前:デフォルトの名無しさん :03/01/25 05:19
>>638
そのウィンドウに属する子ウィンドウの種類やテキストから強引に……w

641 名前:575 :03/01/25 05:51
なんか、反応が無いもんで昨日は寝ちゃったよ

>>637
COMの話じゃないって

>>636
そんな事聞いてるようじゃどうせ実装できないけど

最初にインスタンスを返すってのはインスタンスのアドレスを返すって意味ね
自分で IBeep って仮想クラスを作って、ソースを公開。
プラグイン作者は IBeep を継承して独自のクラス CBeep を作成。
同時に CreateBeepInterace と言う名前の関数を定義し、その中で CBeep を作成して返す。
君は GetProcAddress 等を使って CreateBeepInterface を呼び出すことでそのオブジェクトのアドレスを受け取る。
型は IBeep* になっているので、 CBeep の実装を知らなくてもその機能を使うことができる。
通常の多態と同じ。
使い終わったら DeleteBeepInterface で削除するのをお忘れなく。

ちなみにここで出てきた名前は全て君が勝手に名前を付けても良い。
> どこから出てきたのですか?
とかそう言うレベルの話じゃない、君が決めていいんだよ。

642 名前:デフォルトの名無しさん :03/01/25 06:01
>>641
解説するだけ無駄な気がしないでもない

643 名前:デフォルトの名無しさん :03/01/25 06:03
>>640
やっぱり、それしかないですかぁ。

コモンコントロールがバージョンアップした時が怖いですが、
判定ミスしたとしても致命的な問題になるようなプログラムではないので
その方法でいこうと思います。

どうもありがとうございました。

644 名前:デフォルトの名無しさん :03/01/25 06:39
>>641
>仮想クラス
C++用語なら抽象クラス
COM用語ではインターフェース

GetProcAddressを使うならCBeepの実装(特定のDLL)に思いっきり依存

>COMの話じゃないって
まあ確かに
COMの話のできそこないだ

645 名前:644 :03/01/25 06:42
>ソースを公開。
ヘッダな
そういう説明が必要な相手は激しく誤解するぞ

646 名前:デフォルトの名無しさん :03/01/25 06:51
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな

647 名前:デフォルトの名無しさん :03/01/25 07:09
>>644-645
IBeep のように純粋仮想関数だけで形成されてるクラスならヘッダだけで良いけど
実装を含む場合はソースも公開してやるかlibファイルを作って公開してやる必要があると思うんで、
とりあえずヘッダ、とだけ言うとヘッダだけ公開しそうなんで。

ところで GetProcAddress を使っても CBeep の実装には依存しないと思うけど、
どうなの?
実際そういう風にプラグインにしてるけど今のところ問題ないし。
メインプログラムとプラグインのコンパイラやオプション設定が違う場合どうなるかは知ったこっちゃないけど。

648 名前:あやや :03/01/25 11:06
なぜステータスバーの色が変わらないのだろうか?

だれか、ソースをください。参考になる。

649 名前:デフォルトの名無しさん :03/01/25 11:10
汎用的な実装についてはCOMを眺めたほうがいいんじゃない
特定用途ならGetProcAddressで充分だと思うけど

650 名前:デフォルトの名無しさん :03/01/25 17:09
16進数文字列を数値に変換する関数ってなかったっけか?
普通のCのライブラリにはないようだけど。
あったらスマソ。

651 名前:デフォルトの名無しさん :03/01/25 17:11
>>650
sscanf(a,"%x",&b);

って感じ?

652 名前:デフォルトの名無しさん :03/01/25 17:14
>>650
strtol

653 名前:名無し@沢村 :03/01/25 17:17
>>650
sscanf()

さあ、謝れ。

654 名前:デフォルトの名無しさん :03/01/25 17:22
>>653
二代目沢村として兄者を恥ずかしく思うよ。

655 名前:650 :03/01/25 17:30
ぐぇ、そんな関数あったんだ。
scanf()は知ってたけど、標準入力からだしなぁと思って。
10年戦士なのに、意外なところに穴があるもんだ。
なにはともあれサンクスコ(´・∀・`)

656 名前:デフォルトの名無しさん :03/01/25 18:09
リストビューで特定の項目のテキストの色を変えたいのですがどうすればよいですか?
ListView_SetTextColorを使ったら全てのテキストの色が変わってしまいました。


657 名前:デフォルトの名無しさん :03/01/25 19:08
OwnerDraw

658 名前:デフォルトの名無しさん :03/01/25 21:11
>>646
>ネタ、板とは関係の無い話題はご遠慮ください。
↑↑
もう一度言う
C++用語なら抽象クラス
COM用語ではインターフェース

アフォは来るなという決まりはない
お前が正当性を主張できるのはそこだけだ


>>647
クラス名のプリフィックスをIとCにしながら
Iで始まるクラスに実装を含めるのはWin32では沢村かお前だけ

659 名前:デフォルトの名無しさん :03/01/25 23:12
リストビューで2番目以降の項目にアイコンを表示するにはどうしたら良いですか?
最初のカラムにしかアイコンが表示されないのですが。

660 名前:デフォルトの名無しさん :03/01/25 23:30
カスタムドローするよろし

661 名前:646 :03/01/25 23:41
>>658
そういう重箱の隅をつつくようなセコい突っ込み、おじさんは嫌いだな

662 名前:デフォルトの名無しさん :03/01/25 23:50
>>661
必死だな(藁

663 名前:デフォルトの名無しさん :03/01/25 23:52
PGにバグを放置する権利はない

664 名前:663 :03/01/25 23:53
名乗るのを忘れた
洩れは662だ

665 名前:デフォルトの名無しさん :03/01/25 23:57
リストビューのフォーカスの点線を実線にしたり色をつけたりしたいのですが、
どうしたらできるでしょうか。


666 名前:602 :03/01/26 00:14
誰もわからないようだな(汗

667 名前:デフォルトの名無しさん :03/01/26 00:22
>>665
自分で書く
WM_DRAWITEMとか捕まえられなかったっけ

>>666
666ゲットを機に粘着さんは消えてくださいませ。

668 名前:デフォルトの名無しさん :03/01/26 00:25
>>666
つーかてめーは、全スレから延々とRebar関係の質問してるだろ。
いい加減にしろよ。

669 名前:デフォルトの名無しさん :03/01/26 01:15
>>666
誰もわかりません。
ですからもうこないでください。

670 名前:デフォルトの名無しさん :03/01/26 01:20
>>666は神!
http://news2.2ch.net/test/read.cgi/newsplus/1043111900/600-

671 名前:602 :03/01/26 04:34
何で消えなきゃいけないんだよヴォケども

672 名前:デフォルトの名無しさん :03/01/26 08:50
   ∧∧     ┌──────────
  ( ´ー`)   < てりめーだヴァカ
   \ <     └───/|──────
    \.\______//
      \       /
       ∪∪ ̄∪∪
教えて君にあるまじき無礼な発言(ex.>>618)
未定義動作の意味を激しく誤解(ex.>>598)
>>623から>>625への痛すぎる言動の変化
マルチやめろって顰蹙を無視した結果と思われ

おまえ沢村並み

673 名前:デフォルトの名無しさん :03/01/26 09:10
むしろ沢村のほうがマシに思える

674 名前:デフォルトの名無しさん :03/01/26 11:12
なんかこのバカ、ずっと同じ質問繰り返してないか?
コテハン変えて何度も質問したり。
最初はまともな態度だったから許容してたが、最近態度がでかくなってきた。

675 名前:デフォルトの名無しさん :03/01/26 11:32
本当にmanifest確認したのかなぁ
よし6.0.0.0 Ok!とかいってそうだ


676 名前:デフォルトの名無しさん :03/01/26 11:39
>>674
このスレの>>53あたりからずっとこいつだな。
最初から舐めた態度だが。>>55とかな。

677 名前:デフォルトの名無しさん :03/01/26 13:12
整数演算関係のAPI関数って

Int32xTo64
Int64ShllMod32
Int64ShraMod32
Int64ShrlMod32
MulDiv
UInt32x32To64

以外に無いですか???
知っていたら教えて欲しいでごわすの東北人。

678 名前:名無し@沢村 :03/01/26 14:13
>>677
MSDNを見れば分かる話だから、教えてあげないよ。ヌヒよ。

679 名前:デフォルトの名無しさん :03/01/26 14:19
>>677
APIはMulDiv(KERNEL32)のみ
他はマクロ


680 名前:デフォルトの名無しさん :03/01/26 17:02
ドライブ文字の割り当てられていないCD-ROMで
メディアの入れ替えを検出するにはどのように
すればよいのでしょうか?

よろしくお願いします。

681 名前:デフォルトの名無しさん :03/01/26 20:30
>>641
typedef CFormat * __stdcall GetData();
HINSTANCE hDllInstance = ::LoadLibrary("dl.dll");
if (hDllInstance != NULL) {
GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
if (gsf != NULL) {
CFormat *cfs;
cfs = gsf();
}
FreeLibrary(hDllInstance);
}
//////////////////
extern "C" __declspec(dllexport) CFormat* __stdcall GetData()
{
return new CApp;
}

このようになったのですが、いざGetProcAddressに入るとエラーが出ます。
どうすればよいのでしょう?


682 名前:デフォルトの名無しさん :03/01/26 21:15
>>681
エラーメッセージくらい書いてください。

683 名前:デフォルトの名無しさん :03/01/26 22:43
>>681
> GetData *gsf = (GetData*)::GetProcAddress(hDllInstance, "GetData");
おいおい…

GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。

684 名前:デフォルトの名無しさん :03/01/26 22:48
GetData gsf = (GetData)::GetProcAddress(hDllInstance, "GetData");

こうじゃないの?

685 名前:デフォルトの名無しさん :03/01/26 22:49
> typedef CFormat * __stdcall GetData();

こんなんだっけ?

686 名前:デフォルトの名無しさん :03/01/26 22:53
>>683
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。
GetProcAddress() が返すのは「GetData 関数へのポインタ」だろ。GetData を
実行した結果じゃなくて。


687 名前:デフォルトの名無しさん :03/01/26 23:08
>>683
痛すぎ(激藁

688 名前:デフォルトの名無しさん :03/01/26 23:12
>>685
関数ポインタへの typedef にしたいなら、括弧の位置が違うような。

typedef CFormat (*__stdcall GetData)();

689 名前:688 :03/01/26 23:17
* 一個抜けてた。

typedef CFormat* (*__stdcall GetData)();

690 名前:デフォルトの名無しさん :03/01/26 23:17
そうだよねえ

691 名前:デフォルトの名無しさん :03/01/26 23:27
こーでねえ?
typedef CFormat * ((__stdcall *)GetData)()

692 名前:デフォルトの名無しさん :03/01/26 23:28
最近 win32api の勉強を始めた者です。
WinMain の中の変数etc.を
ウィンドウプロシジャに引き渡すには
外部変数にするしかないんでしょうか?
消防質問ですみません。



693 名前:デフォルトの名無しさん :03/01/26 23:32
>>692
ヒープ上に領域を確保した上で、その領域へのポインタを SetWindowLong()
するとか。

694 名前:デフォルトの名無しさん :03/01/26 23:38
>>693
ありがとうございます。
SetWindowLong()とか知らないので調べに
逝ってきます。

695 名前:デフォルトの名無しさん :03/01/26 23:38
>>641
昨日の話に反応するけど
> 使い終わったら DeleteBeepInterface で削除するのをお忘れなく。
これ、仮想デストラクタでよろしく済ませるってのは無しなん?

696 名前:デフォルトの名無しさん :03/01/26 23:44
COMを知らない奴はこれだから・・・

697 名前:デフォルトの名無しさん :03/01/26 23:46
>>696
具体的な問題点か、情報へのポインタぷりーず。

俺は COM で Detele* 用意しているのは、単に C からも呼び出せるようにするため
かと思ってた。

698 名前:デフォルトの名無しさん :03/01/26 23:48
>>695
よろしく済ませるならスマートポインタでは?

699 名前:デフォルトの名無しさん :03/01/26 23:52
>>698
いや、そういう話では…

700 名前:デフォルトの名無しさん :03/01/26 23:54
>697
DLL(plugin)のnew,deleteと
本体のnew,deleteが同じという保証がない。
DLLでnewするなら、DLLでdeleteしないと死亡の恐れがある

701 名前:デフォルトの名無しさん :03/01/26 23:54
Create/Deleteを明示的によぶことで、
実装側で実体をnewで確保しようがmallocで確保しようが、
グローバル変数領域に自前で確保していようが、
利用側には影響しない。

もっと具体的にいうと、
実装側と利用側がVC++を使っていたとして、
コンパイルオプションが、片方はLIBC使用、他方はMSVCRT使用
だとしても、問題が起こらない。
通常はこれらをまたいでヒープをやり取りすると、おかしくなる。

702 名前:695 :03/01/26 23:58
>>700
納得。

703 名前:デフォルトの名無しさん :03/01/27 00:19
684以降のレスはなに?
602氏の方がはるかにマシに見えるのだが


704 名前:デフォルトの名無しさん :03/01/27 00:22
気にせず、サクッと黙殺しとけ。どうせ害はない。

705 名前:684=685 :03/01/27 00:50
>>703
漏れが何かまずい事を書いたか?

706 名前:デフォルトの名無しさん :03/01/27 20:21
ちょっとお尋ね申し上げますが、
Acrobat SDK を SDK だけで使う例とかを
紹介しているサイトってないでしょうか?

てゆーかスレタイの Win32API って !MFC って意味だよね?
それともやっぱスレ違い?

707 名前:デフォルトの名無しさん :03/01/27 20:34
一応VCとは限らんと言っておく<Win32API

708 名前:デフォルトの名無しさん :03/01/27 21:07
SendMessageCallbackって、他のスレッドからだと動かなかったりします?
ドキュメント見ると問題なさげではあるのですが、現に動かない…
Win2kです。

709 名前:デフォルトの名無しさん :03/01/27 21:19
>>707
MFC=VCか。おめでてぇな。と釣り糸を垂らしてみる。

710 名前:デフォルトの名無しさん :03/01/27 21:20
>>708
あなたのクソコードに問題があるのでは?見せてみて。

711 名前:579 :03/01/27 22:50
自作アプリをいろいろいじってみた結果
ウィンドウからツールバーを外したらなぜかステータスバーの色が
変わらなくなった。ツールバーを付けたらまた変わるようになった。
いくらステータスバーだけのサンプルをいじくっても分からないわけだ

712 名前:デフォルトの名無しさん :03/01/27 22:57
>>711
602か?
XPではCOLOR_BTNFACEではなくCOLOR_MENUBARのほうに影響されるのかも


713 名前:579 :03/01/27 23:05
>>712
別人。Win95だとWM_SYSCOLORCHANGEを転送してやる
必要があったけどXPでは関係なさげ。確かにバグっぽいなこれ

714 名前:デフォルトの名無しさん :03/01/28 00:07
是非 MS にバグレポート出してくれ。

715 名前:デフォルトの名無しさん :03/01/28 00:46
てすと

716 名前:708 :03/01/28 00:48
procedure Callback(Wnd: HWND; Msg: UINT; Data: Pointer; Result: LRESULT); stdcall;
begin
 //何かする
end;

procedure TXXX.METHOD;
begin
 SendMessageCallback(Handle, WM_APP, 0, 0, @Callback, 0);
end;

こんな感じです。
OutputDebugString入れても、他のスレッドから呼んだ時だけCallbackに来てない。
単に、そのままやりたいことをするとデッドロックするので、PostMessage的に使ってるだけなんですが。
(素直にPostMessage使わない理由はSendMessageCallbackだと相手のウィンドウ関数を書き換えずに済むから)

717 名前:デフォルトの名無しさん :03/01/28 00:53
ぎゃっはっははははははははっはあはっはあはっははははははははっはあはっはあ
はっははははははははっはあはっはあはっははははははははっはあはっはあはっははははははははっはあはっは
はははははっはははhはっははははははははっはあはっはあははははっはははははあはh
はははっはっははっははははははははっはあはっはあはははははははあははは

718 名前:デフォルトの名無しさん :03/01/28 00:55
>>716
http://www.microsoft.com/JAPAN/developer/library/jpuipf/_win32_sendmessagecallback.htm
SendMessageCallback 関数を呼び出したスレッドが、GetMessage、PeekMessage、WaitMessage
のいずれかの関数を呼び出した場合にのみ、このコールバック関数が呼び出されます。

とあるが。

719 名前:デフォルトの名無しさん :03/01/28 01:00
SetTimerしてるのにタイマコールバックが呼ばれません

DispatchMessageしていますか?
系の罠か。
本当にプリエンプトしてほしいなら素直にスレッド作れ。

720 名前:708 :03/01/28 01:04
がーん…使えねえ…。
718さんありがとう。英語ドキュメントを斜め読みしただけでした。読めてなかった。シクシク。

721 名前:デフォルトの名無しさん :03/01/28 01:07
まぁ、普通に考えて同一スレッドで非同期にコールバック関数が呼ばれるタイミングって
Windows側に制御が渡ってる状況しかないんだから、当然といえば当然なんだが。

722 名前:デフォルトの名無しさん :03/01/28 01:09
ちょっと勉強してみたいんだけど、どっかに
VC++ か BCC 用の ping のソース落ちてないかな?

723 名前:名無し@沢村 :03/01/28 01:14
>>722
ヌヒよ、たぶん落ちてるんじゃないか。

724 名前:デフォルトの名無しさん :03/01/28 01:18
VCかSDKのサンプルの中にpingなかったけ。

725 名前:デフォルトの名無しさん :03/01/28 01:23
「ICMP.DLL サンプル」とかやるとわらわら出てくるな。

726 名前:デフォルトの名無しさん :03/01/28 01:29
>>722
サンプル: Raw ソケット版 ping
tp://www.kt.rim.or.jp/~ksk/wskfaq-ja/examples/rawping.html

727 名前:722 :03/01/28 01:49
>>725
>>726
大変いいヒントいただきました。どうもありがとうございました。

728 名前:602 :03/01/28 12:57
皆さん、お久しぶりです。
余り質問をしすぎて、迷惑をおかけしまして、すいませんでした。
というより、Rebar関係は、バージョンアップの激しい部分ですので、何か不具合が多いのですよ。
苦労しています。

では、いろいろと質問をきいてくれて、ありがとうっす。


あと、
「「「671 名前:602 投稿日:2003/01/26(日) 04:34
何で消えなきゃいけないんだよヴォケども」」」

これは、私の書き込みではないですよ。
偽者ですか、ID制を導入してみてはどうですか?

729 名前:デフォルトの名無しさん :03/01/28 13:13
何でてめえなんかの為にID制を導入しなきゃいけないんだよヴォケ

730 名前:デフォルトの名無しさん :03/01/28 14:00
>>728
たのむからもう来ないでくれ。
あと、貴様ごときにID導入するほど価値はない。

731 名前:名無し@沢村 :03/01/28 19:07
>>728
ヌヒよ、キャップを付けなさい。

732 名前:602 :03/01/28 20:21
あれ?怒ってるなww

何か悪いことをしたとは思えないが。
荒らしたわけでもない。
ただ質問をしただけなのにこの態度。
だから、プログラム板っていつも人が少ないんだよw。

プログラムをする奴は基本的に閉鎖的な人が多いからね。
自分の世界以外の者が入ると、追い出すんだよ。
内向的、いや内弁慶、いやいやネット弁慶と表現したほうがいいかも。

要するに、
自分のわかる質問→大歓迎
わからない質問→追放

私みたいなプログラム初心者もいるのですから。初めて日が浅いのですよ。

733 名前:デフォルトの名無しさん :03/01/28 20:30
怒ってるのはID導入のことについてだろ。
基本的な読解力ないから嫌われるんだよ。

734 名前:602 :03/01/28 20:35
ただ、プログラミングは面白いですね。
初めて2ヶ月目なので、これからどんどん勉強していこうと思います。

あと、>>729さんと、>>730さんは、ひどいことを言いますね。
なにも悪いことをしてないのに。
しかも、午後2時前後の書き込みですか。
お仕事はしてないのですか?

735 名前:デフォルトの名無しさん :03/01/28 20:38
>>732
君はプログラミングの勉強の前に、まず質問の仕方から覚えるといい。

736 名前:602 :03/01/28 20:41
貴様ごときにID導入するほど価値はない。

貴様ごときってw
この発言が、「怒ってるのはID導入のことについてだろ。」だとは思わないな。

うーん、こんなにガラの悪い人が多いとは・・・。
がっかりですね。
まぁ、プログラムをする人でも、性格の悪い人は山ほどいるでしょうけどねw

737 名前:602 :03/01/28 20:43
ああ、なるほど。
「わかる人がいないみたいだな。」というのが、貴方達のプライドに傷がついたわけですね。

これのほかに、失礼な書き込みはしてないですよ。
これぐらいで怒るようでは、まともな社会生活はできないと思いますが。

738 名前:602 :03/01/28 20:44
時間がないので寝よ。
どっちにしろ、Win2000で開発を再開したので問題なく進んでいます。

739 名前:デフォルトの名無しさん :03/01/28 20:44
>>728
671 で困ってる人はあんた以外に一人も居ないよ。
あんたの心証だけで何でいきなり ID 導入という話になるの?

>>732
実際に荒れてるんだから、つもりはどうであろうとあんたは荒らしだよ。
ちょっと聞きたいんだけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?
ここはグチ垂れるスレじゃないよ。

大体、わからない質問にどう答えろと言うんだ?
みんなで調べろって?
プログラム初心者だから優遇しろって?
初めて日が浅いから多少の無礼は勘弁しろって?

ふざけるな、ここは無料サポートセンターじゃないぞ。
いろんな人の好意と余暇で成り立っているコミュニティだ。
その人達にそっぽを向かせるようなレスを繰り返しておきながら、自分の要求だけは
押しつけるのか?
それが、人にものを頼む態度か?

ここから追い出されようとしてるのは、あんたが 「自分の世界以外の者」 だから
ではなく、あんた自身が人間的に問題あるからだと気付け。


↑ で、自分で言うのもなんだけど、どこを縦読みすればいいんだ?

740 名前:デフォルトの名無しさん :03/01/28 20:45


愚民ども、しずまれぇ〜


741 名前:602 :03/01/28 20:47
>>739
ああ、勘違いしてますね。
ただ、わかる人がいるのかな?と聞いただけです。
わからないのなら、それでもかまわないのですから。

それを、いきなり「自分で調べろ!」だとか、わかっている内容を「MSDNを見ろよ」とか、なにか攻撃的ですね。
まぁ、どうでもいいですけど。
問題は自分で解決しましたので。

742 名前:デフォルトの名無しさん :03/01/28 20:49
602 の中の人も可哀想だな。

743 名前:デフォルトの名無しさん :03/01/28 20:50
>>741
あぁあぁ。消えろ。もうここにいる用は無いだろ。
もう二度とくんな。2ちゃんねるから出て行け。

744 名前:デフォルトの名無しさん :03/01/28 20:50
>>741
もう一度聞くけど、そういう発言をすることによって、何を達成したいの?
どういう目的があるの?

745 名前:602 :03/01/28 20:50
プ

746 名前:デフォルトの名無しさん :03/01/28 20:51
>>744
もうどうでもいいだろ。粘着だな。お前。

747 名前:デフォルトの名無しさん :03/01/28 20:53
何? 祭り? ワショーイ

748 名前:デフォルトの名無しさん :03/01/28 21:06
>>602はまだ寝ていないに全部。

749 名前:デフォルトの名無しさん :03/01/28 21:08
>>747
あおるな。はげ。

750 名前:デフォルトの名無しさん :03/01/28 21:35
ぶはは
煽られてるよ602が(w
ここにいる奴らはヒッキーの集まりだから気にするな(w
これで安心したろ(w


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.