5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Win32API質問箱 Build31

1 :デフォルトの名無しさん:2005/04/29(金) 17:09:54
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。

  ∧_∧
 ( ´∀`) < ぬるぽ

過去スレ、関連リンクは>>3くらい。

■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう
・日本語版MSDN Online Libraryは不完全です。英語版(http://msdn.microsoft.com)の利用推奨
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで

2 :デフォルトの名無しさん:2005/04/29(金) 17:10:04
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>1

3 :デフォルトの名無しさん:2005/04/29(金) 17:10:24
-過去スレ
Build30: http://pc8.2ch.net/test/read.cgi/tech/1112345886/
Build29: ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
Build28:ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
Build27:ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
Build26:ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
Build25:ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
Build24:ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
Build23:ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
Build22:ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
Build21:ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
Build20:ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
Build19:ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
Build18:ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
Build17:ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
Build16:ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
Build15:ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
Build14:ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
Build13:ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
Build12:ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:ttp://pc.2ch.net/tech/kako/991/991576947.html
(★は「いやーごめんなさい。」に巻き込まれた模様

4 :デフォルトの名無しさん:2005/04/29(金) 17:13:16
- MSDN Online
http://www.microsoft.com/japan/msdn/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
- Google
http://www.google.com/

Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
Win32 プログラミング入門
http://www7.plala.or.jp/keny01/windows/win32/
Win32 SDK Programming
http://usr_vogel.at.infoseek.co.jp/Win32SDK/

■書籍
Advanced Windows
http://www.amazon.co.jp/exec/obidos/ASIN/4756138055

5 :デフォルトの名無しさん:2005/04/29(金) 17:14:39
急速にスレの質が低下してまいりました

6 :デフォルトの名無しさん:2005/04/29(金) 17:35:21
>>5
ワロタ

7 :デフォルトの名無しさん:2005/04/29(金) 17:56:07
>>1-2
10 秒かよ

8 :デフォルトの名無しさん:2005/04/29(金) 18:06:30
>>5
これはテンプレ入りだな。

9 :デフォルトの名無しさん:2005/04/30(土) 00:54:04
Advenced Windows

10 :前スレ796:2005/04/30(土) 05:04:12
>>797,>>798
ご紹介のページを参考に、ReadProcessMemory()で、ゲームの、デフォルト?セグメントにはアクセスできましたが・・・

アク禁のエリアが所々あって、適当なアドレスでアクセスしようとするとすぐ不正な処理エラーが出ます。

それと、やはりプログラムが取得したセグメントは一般には一つではないですよね・・・

やはりOSのメモリ管理情報からこうした情報を取得しなければならない、と思いますが・・・

色々実験したところ、プログラムの起動直後には、レジスタFSに、何かの管理情報が書いてあるセグメントがセットされているようですが・・・自分のじゃないので簡単にはとれないし・・・

11 :デフォルトの名無しさん:2005/04/30(土) 05:47:30
>>10
だからして俺はXPが出たあとでもMEを使ってる時代があった
NT系は堅い

12 :デフォルトの名無しさん:2005/04/30(土) 09:20:55
>>前スレ796==チートツール作り
だろ。相手にすることないよ。

13 :前スレ796:2005/04/30(土) 10:43:11
>>12
??前スレでも別に普通に相手されてましたが???

14 :デフォルトの名無しさん:2005/04/30(土) 10:49:14
質問です。
シャアウェアをインストロールしたらレジスターが
書き換えられてディスクトップがぐちゃぐちゃになって、
エキスプローラでホルダーをクィックしても動かなく
なってしまいました。どうすればレジスターを修復で
きますか? ソフトはWindous95で機種はBMWの
アクティバです。接続環境はフレッシュISBNです。
 ヤッホーやゴーグルなどの検索で調べても解らないので
ツーチャンネルの皆様、ご指導よろしくお願いします。

15 :デフォルトの名無しさん:2005/04/30(土) 10:54:26
>>14
まず、お前自身のスピードを3倍にするところから始めるんだ。

16 :デフォルトの名無しさん:2005/04/30(土) 10:55:52
まず普通に言葉が書けるようになってから出直してきてください

17 :デフォルトの名無しさん:2005/04/30(土) 11:22:48
>>13
だから、ゲームのチートツール作りならこんなところで質問してないでゲ製に引っ込んでろって。
つーか、前スレ使い切れよ。

18 :デフォルトの名無しさん:2005/04/30(土) 12:54:30
実行バイナリいじっちゃえ

19 :デフォルトの名無しさん:2005/04/30(土) 13:16:39
>>14
ネタ?

20 :デフォルトの名無しさん:2005/04/30(土) 13:33:00
>>19
明らかにネタ。本人は否定するだろうが。

21 :デフォルトの名無しさん:2005/04/30(土) 19:26:25
新鮮な書籍コードってなんだよ

22 :デフォルトの名無しさん:2005/04/30(土) 19:44:09
現在定義されている環境変数を列挙するAPIを教えてください。

23 :デフォルトの名無しさん:2005/04/30(土) 19:49:29
Winに環境変数などというものは無い

24 :デフォルトの名無しさん:2005/04/30(土) 19:56:33
>>23
あるじゃん

25 :デフォルトの名無しさん:2005/04/30(土) 20:14:30
>>22
http://members.at.infoseek.co.jp/zzyyb/hack/winhack.html#Env

26 :22:2005/04/30(土) 20:39:02
サンクスです。実はなかなか厄介くさいですねぇ。
でもできることはできるっぽいんでやってみます。

27 :デフォルトの名無しさん:2005/04/30(土) 20:48:41
envp 使えば?


28 :22:2005/04/30(土) 20:56:47
WinMainでできます?

29 :デフォルトの名無しさん:2005/04/30(土) 21:57:28
>>28
出来ないわけがない。

30 :デフォルトの名無しさん:2005/04/30(土) 22:23:58
リッチエディットをただの文字数制限なしエディットボックスとして使いたいんだが、
Ctrl+Rで右揃えになったり、Ctrl+Vで違う書式のテキストが張り付いたりして気持ち悪い。
リッチエディット(2.0)のすべてのキーボードショートカットを無効にするのってどうしたらいい?

31 :デフォルトの名無しさん:2005/04/30(土) 22:43:26
サブクラス化してプロシージャ書けば?

32 :デフォルトの名無しさん:2005/04/30(土) 22:43:49
>>26
GetEnvironmentStrings一発で取れますよ。

>>10
俺も普通に相手してあげるよ。

ReadProcessMemory()でOK。
APIがダメなのではなく、お前さんの使い方が悪いんじゃないかな。

まぁその質問の仕方では、相手にされにくいわな。

33 :デフォルトの名無しさん:2005/05/01(日) 00:39:41
__argc とか__argvみたいに __envpがあるんじゃないの?


34 :デフォルトの名無しさん:2005/05/01(日) 04:54:18
お願いします。WindowsGUIでのプログラミングで、
使っているDLL(tar32.dll)に直接コマンドを送ったあと、
そのDLLは「結果を標準出力に出力している」、というのですが、
どこかに書き込んでいる様子は見えても
CUIでないせいで何もおきず、 " > "をつけてみたり"
SETSTDHANDLEを使って標準出力をファイルに変えてみても
取り出せませんでした。何か取り出す方法がありましたら
アドバイスお願いします。



35 :デフォルトの名無しさん:2005/05/01(日) 05:01:48
int main()
{
return WinMain(GetModuleHandle(NULL), 0, "", 0);
}


36 :デフォルトの名無しさん:2005/05/01(日) 05:56:41
>>34
tar32.dllが標準出力に出力?何か勘違いしてないか?

37 :デフォルトの名無しさん:2005/05/01(日) 06:09:21
>>36
ファイルを個別出力させるときに他のDLLと違ってファイルへの出力がなくて
標準出力への展開(-p オプション)だけになってしまうみたいで
http://openlab.jp/tsuneo/soft/tar32_1/old/tar32_1/SDK/TAR32SDK.TXT
http://openlab.jp/tsuneo/soft/tar32_2/tar32_2/sdk/Tar_cmd.txt
これしか-pオプションに関する説明がないし
APIにも無いのでDLLの標準出力をファイルハンドルにあわせるしか
ないかと思ったんですが それもダメで・・

38 :デフォルトの名無しさん:2005/05/01(日) 07:53:36
>>37
-xだけ指定すればファイルへ出力してくれそうに読めるが。

39 :デフォルトの名無しさん:2005/05/01(日) 09:12:14
>>37
> -p
>     アーカイブ中のファイルを標準出力(バッファ)に展開します。

これ、実際にはTar() の最後の引数で指定したメモリに出力される。

40 :デフォルトの名無しさん:2005/05/01(日) 15:31:30
質問です。

CreateFile()やSetFilePointer()等を使って、標準関数のfgets()のような
一行読み込みをする関数を作っているのですが、なかなかうまくいきません。
よければヒントだけでも教えてくれませんか?

環境は
OS : Windows2000
コンパイラ : VC6
です。


41 :デフォルトの名無しさん:2005/05/01(日) 15:41:40
ReadFile は使わないの?

42 :40:2005/05/01(日) 15:51:19
すいません。ReadFile()も使います。
while文でSetFilePointer()を使って一つずつポインタを進めていきながら、
ReadFile()で1バイトずつ文字を読み込んでいくような感じで書いているのですが
どうも上手くいきません。


43 :デフォルトの名無しさん:2005/05/01(日) 15:53:56
ReadFileした分は勝手にポインタ進むだろ

44 :40:2005/05/01(日) 16:00:25
>>43
そうだったんですか。それでおかしくなったのかもしれません。
もうちょっとがんばってみます。


45 :デフォルトの名無しさん:2005/05/01(日) 16:02:01
>>40
http://www.google.co.jp/search?num=50&hl=ja&c2coff=1&q=Read.c+ReadFile+_osfhnd+Microsoft+Corporation.+All+rights+reserved&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

46 :デフォルトの名無しさん:2005/05/01(日) 16:02:49
キャッシュしか残ってなかったな...

47 :デフォルトの名無しさん:2005/05/01(日) 18:23:31
>>38 >>39
ありがとうございます。
-xだけだと指定に関係なく全ファイル展開になります。
>これ、実際にはTar() の最後の引数で指定したメモリに出力される。
Tar()の最終引数がDWORD dwSizeでバッファのサイズの値なんですが
これにメモリのポインタを入れればよいのでしょうか?



48 :デフォルトの名無しさん:2005/05/01(日) 18:47:41
APIそのものの質問じゃないのですが、
ここの人が詳しいかと思いまして

パラメータをレジストリに保存してダイアログで設定するようなアプリを作ったとき
常にレジストリを読むわけにはいきませんし
読み込みと書き込みの両方を考えて
メモリ上のパラメータとレジストリの値とはどのタイミングで同期をとるもんなんでしょう?

49 :デフォルトの名無しさん:2005/05/01(日) 18:50:07
起動時と終了時

50 :デフォルトの名無しさん:2005/05/01(日) 18:59:34
ダイアログを開いたときに読み込んで閉じるときに(必要なら)書き込む。

51 :48:2005/05/01(日) 19:02:19
同時に2つ立ち上がる可能性があるので
・起動時とダイアログを開いたときに読み込み
・終了時とダイアログを閉じたときに書き込み
・読み込み時にレジストリが見つからなかったときは
 メモリのパラメータをデフォルトの値にして
 書き込み時を待って反映させる

としようと思います。

52 :10:2005/05/01(日) 19:04:23
>>32
どうもです。チートツールってほどのものじゃない個人的なものなんですが・・・

以前に埋めに入っているスレで質問して誰も答えてくれなかったことがあるんで・・・

もちろんReadProcessMemory()は正常に動いてるのだとは思いますが・・・
4Gのアドレスのうち、全部があるはずはないですよね・・・
たしかにコード近辺、スタック近辺とあとよくわからないシステムエリア?近辺は読み取れるんですが、大方は読み取ろうとすると不正な処理ダイアログが出ます。
自分の領域ならばLDT読むとかいろいろ方法はあるとは思うんですが、他プログラムの領域なんで・・・

あと質問の仕方のまずい所を・・・?

>>33
私でしょうか?
__envp調べて見ます。

>>18
私のことですよね?
やはりその前に何の変数が何に使われているのか確認しないといけないので・・・

53 :デフォルトの名無しさん:2005/05/01(日) 19:06:06
>>52
Advanced Windows読め

54 :デフォルトの名無しさん:2005/05/01(日) 19:29:03
>>51
複数起動を仕様としたアプリ?
そうでないなら複数起動は制限しとくようにしたほうがいい気がするよ



55 :デフォルトの名無しさん:2005/05/01(日) 19:52:03
>>54
複数プロセスのアプリからロードされるプラグインDLL
なんですよ

56 :32:2005/05/01(日) 20:13:48
>>52
やろうとしていることが嫌われていることもあるが、それ以前に質問の仕方が悪い。

過去ログを見て、回答をもらえている質問者と、そうでない質問者の違いを見て、
何がいけないのか察してくれ。

それが面倒だったら、ここで質問するよりも、
チートツール作ってる人達のWebサイト見たほうが早い気がするよ。

57 :デフォルトの名無しさん:2005/05/01(日) 20:41:58
>>55
共有メモリを利用するという手はどうよ?
最初にプロセスにアタッチされたときにロードして、
すべてのプロセスから参照されなくなったときに保存すると。

58 :デフォルトの名無しさん:2005/05/01(日) 20:48:35
>>52
PEヘッダを見ればいいんだよ。
そしたらメモリ配置は全部わかる。
仕様はこのあたりが詳しい。
http://www.interq.or.jp/chubu/r6/reasm/PE_FORMAT/intro.html

59 :デフォルトの名無しさん:2005/05/01(日) 20:50:56
>>57
いいかもしれないけど、そんなにクリティカルな情報でもないので
できたらやってみます

ところでDLLってプロセスのメモリ空間ごとにコピーされるんですよね

60 :デフォルトの名無しさん:2005/05/01(日) 20:54:56
それじゃあスタティックリンクと一緒じゃろ

61 :デフォルトの名無しさん:2005/05/02(月) 00:19:44
>>47
すまん。後ろから2番目だわ。
でも-xで指定ファイルの解凍ができるが。

62 :52:2005/05/02(月) 00:29:13
よく過去ログとか見ろって言われるんですが、現実にはなかなか最初から全部目を通せる人っていないと思うんですが・・・
ふつうの人はお金にも時間にも限界がありますから・・・
私もできたら本屋で売っている面白そうな本、全部買いたいですよ・・・

結局何が悪かったのかよくわからなかったのですが、とにかく悪いということなのでここで聞くのはあきらめます。皆さんどうもありがとうございました。

>>58
おお!これですね。わかりました。早速熟読を・・・
あとは動的に取得されたセグメントの情報ですね・・・
一応ググってはいるんですが、英語のばかりひっかかるんで・・・もちろん英語でも読んではいるんですが、???という感じで・・・
あと途中退場して本当に申し訳ありません・・・
ご容赦下さい・・・

63 :デフォルトの名無しさん:2005/05/02(月) 00:42:16
>>62
仮令個人使用だろうとチートツールはチートツール。
それが只のマナー違反か犯罪になるかはゲームの種類と体制によるが。
そうである以上、まとまった情報が得られないことくらいすぐに判ると思うが。
そうでなくとも、教えて君は一般的に嫌われる。
まぁ、「半年ROMしてから書き込め」という板もあるくらいだ。空気は読もうな。

64 :デフォルトの名無しさん:2005/05/02(月) 01:14:10
本当に欲しいなら惜しまずに金と時間を投入しろってこった

65 :デフォルトの名無しさん:2005/05/02(月) 04:37:47
ステータスバーを付けたいのですがどうすればいいでぇすくわぁ?

66 :デフォルトの名無しさん:2005/05/02(月) 06:28:04
>>65
ステータスバーをつける。

67 :デフォルトの名無しさん:2005/05/02(月) 07:10:18
>>65
http://www.kumei.ne.jp/c_lang/sdk/sdk_57.htm

68 :デフォルトの名無しさん:2005/05/02(月) 08:04:32
>>59
32ビットではDLLはプロセス間で独立してると思っていいですよ。
(昔はDLLを使ったプロセス間通信なんてアホな話もありましたが。)

DLLでプロセス間でまったく同じメモリ内容になる部分は、
OSが自動的に見えないところで共有してくれています。
これを意識する必要は、メモリ & ディスクキャッシュの節約という面以外ではないです。

>>62
開き直るなよ。

お金にも時間にも限界がある人が回答してるんだよ。
だから質問の仕方が悪いと相手にされないの。

質問がド下手な人の相手をすると、お金と時間が無駄になるし、
そもそも回答してくれる人の手間を極力省くために、
自分の時間をいくらでも注ぎ込む気構えがないのは、失礼でしょ。
だから相手にされないの。


69 :デフォルトの名無しさん:2005/05/02(月) 10:51:09
DLLネタで便乗しちゃうけど
DLL作るときってベースアドレスずらしてる?
重ならないように設定するのめんどいんだけど・・・
あと、重ならないことで実際どんな効果があるのかしらん

70 :デフォルトの名無しさん:2005/05/02(月) 12:10:10
>>52
ttp://software.nikkeibp.co.jp/software/download/down02.html
Windowsのメモリー管理を理解する のサンプルを見てVirtualQueryEx使うとか

>>69
ベースアドレスが重なると別のアドレスにロードすることになり、再配置処理が必要になる。
アドレスがずれると複数プロセスでのDLL読み取り専用領域の共有もできなくなるらしい。
ちなみにDelphi/BCCでexeを作るときはStripRelocで再配置情報を削除した方が良い

間違ってたらスマン

71 :デフォルトの名無しさん:2005/05/02(月) 15:13:54
デスクトッププロパティの「ドラッグ中にウィンドウの内容を表示する」
をONにして適当なウィンドウをぐりぐりドラッグすると
再描画されずに白いゴミが残ることがあるんだけど
へぼいマシンなんだからウィンドウの内容を表示するオプションOFFにシル
って対応だけでいいのかな?
BitBltで絵を張っている位なんだがこっちがミスしてるのかな・・

72 :デフォルトの名無しさん:2005/05/02(月) 16:58:52
ボタンの色と同じ色で、ある領域を塗りつぶしたく、
FillRectを使い、第三引数でGetStockObject(**_BLUSH)とやっているのですが、
GRAYは暗く、LTGRAYは明るく、HOLLOWはうまく表示されず、同じ色が出せません。
いい方法がありましたら、教えてください。

73 :72:2005/05/02(月) 17:08:45
少し修正します。
GRAY_BRUSH、LTGRAY_BRUSH共にボタンの色より濃くなってしまいます。
当然BLACK_BRUSH、DKGRAY_BRUSH、WHITE_BRUSHも違う色です。

74 :デフォルトの名無しさん:2005/05/02(月) 17:14:59
>>72
::CreateSolidBrush(RGB(255,255,255)) でブラシ作って
::FillRect したらどうかな。
そのブラシは後でDeleteObject する

75 :デフォルトの名無しさん:2005/05/02(月) 17:19:34
ボタンと同じ色なら
CreateSolidBrush(GetSysColor(COLOR_BTNFACE))
じゃないのか?

76 :72:2005/05/02(月) 17:25:03
>>74
ありがとうございます。似た方法はやっていました。
ペイントソフトでボタンの色を調べて、その色で塗りつぶしたのですが、
微妙に色が違ってしまいました。デスクトップの色数とかが原因かもしれません。

>>75
ありがとうございます。同じ色を表示できました。

77 :デフォルトの名無しさん:2005/05/02(月) 18:49:35
システムデフォルトのグレイ関係ならヘッダファイルに定義してあるはずだが

78 :デフォルトの名無しさん:2005/05/02(月) 19:03:54
ボタンの色とかって、ユーザごとに違うだろ。

79 :デフォルトの名無しさん:2005/05/02(月) 19:09:12
デフォルトのグレイならって書いてあるのじゃん

80 :デフォルトの名無しさん:2005/05/02(月) 23:00:40
マウスカーソルがぐるぐる円を描くように動作するプログラムを
作りたいのですが、どのように作ればいいのでしょうか?
まったく検討もつきません、どなたかアドバイスよろしくお願いします。

81 :デフォルトの名無しさん:2005/05/02(月) 23:35:41
>>80
タイマーで円を描くようにマウスポインタの位置を変更していけばいいだけじゃないの?

82 :デフォルトの名無しさん:2005/05/02(月) 23:37:12
>>80
>>4にあるURLからひたすら探せ

83 :デフォルトの名無しさん:2005/05/02(月) 23:40:32
SetCursorPosと円の方程式でなんとかしる

84 :デフォルトの名無しさん:2005/05/02(月) 23:57:42
>>81-83
レスありがとうございましたっ!
そして>>83さん、結構探したつもりだったんですけど、
助かりました、本当に。感謝!

85 :デフォルトの名無しさん:2005/05/03(火) 01:08:43
ネットワーク関係のアプリを作りたいんですが、
初歩として2台のPC間でファイルの送受信を行うプログラムを作ろうと思いました。

WINAPIに必要な関数は用意してありますか?

86 :デフォルトの名無しさん:2005/05/03(火) 01:20:50
ちょっと調べればわかることをなんで訊くのか謎だ。

87 :デフォルトの名無しさん:2005/05/03(火) 02:11:53
検索語が分からないんです。
[winapi, ネットワーク]や[ファイルの送受信, winsock2]
等で検索してみたのですが欲しい情報が見つかりませんでした。
それでこちらで質問させてもらいましたが、もうちっとgoogleを漁ってみます。
失礼しました。

88 :デフォルトの名無しさん:2005/05/03(火) 09:23:54
winsockって分かってるなら来るなと。

89 :デフォルトの名無しさん:2005/05/03(火) 11:08:43
データの送受信なのか、ファイルをファイルとして送受信したいのか。

90 :デフォルトの名無しさん:2005/05/03(火) 12:28:28
ファイルをファイルをして送受信したいんです。
目的としてはファイルを送信する側が
自分が持っているファイルの一覧を受信者に送信、
受信者は一覧を見て欲しいファイル名を送信、
送信者は指定されたファイルを送信する。

こんな感じのことがしたいので最初はエラーとか全く考えずに
ある決まったファイルを送受信したいなと思ったんです。

んでもって、やりたいことが決まっても
どんな関数を使えば良いのかよく分からないので質問しました。

91 :デフォルトの名無しさん:2005/05/03(火) 12:39:02
ftp使えば?

92 :デフォルトの名無しさん:2005/05/03(火) 13:03:12
簡易FTPをお勉強として作りたいという前提で答えると。
データの出元や最終的な出力先がファイルというところは、
ネットワークプログラミングとは関係ない。
winsockって分かってるなら、それで普通にデータの送受信を
すればいいじゃん。

そうじゃなくて、FTPクライアントを作りたいだったらwininetあたりで。

93 :デフォルトの名無しさん:2005/05/03(火) 19:23:59
TrackPopupMenuExでポップアップメニューを表示するときに
(キーボードで操作できる)カーソルを
あらかじめ特定の項目に移動させたいのですが
そういうことはできますか?

94 :デフォルトの名無しさん:2005/05/03(火) 19:50:11
>>90
プログラミングのスパイスって本に君の希望する内容が書いてある。

95 :デフォルトの名無しさん:2005/05/03(火) 20:11:03
>>90
プロトコルについて勉強汁。
ちなみに、君の希望するものは FTP。
RFC FTP で検索汁。

96 :デフォルトの名無しさん:2005/05/03(火) 20:31:50
いまどきFTPもないんでやっぱHTTP+Web DAVだろ。

97 :デフォルトの名無しさん:2005/05/03(火) 20:41:39
('A`)

98 :デフォルトの名無しさん:2005/05/03(火) 21:06:01
ウィンドウプロシージャでWM_CLOSEメッセージが送られてきたら
MessageBoxを出して本当に終了するかどうかを促す実装をしているのですが、
それだけのプログラムをクラスとか一切使わず作るとうまくいくのですが、
自前のウィンドウプロシージャクラスを使うとメッセージボックスは表示されません。
しかし、エンターキーを押すと、デフォルトのOKが押されて終了してくれます。

クラスの中では、WM_CLOSEメッセージの時にはOnClose関数に飛ぶようにしているだけで、
特に変なことはしてないつもりです。

検索してみても分からなかったので、ここで質問させてもらいました。
同じような現象になったことある方や、意見がある方は回答をお願いします。
条件が曖昧ですがよろしくお願いします。

環境:Visual C++.NET 2003, WinXP(SP1)

99 :デフォルトの名無しさん:2005/05/03(火) 21:28:38
>>98
ソース晒してみ

100 :98:2005/05/03(火) 21:30:42
書き込みしたあとも色々試してみたのですが、
どうやら、ウィンドウ(メインのウィンドウ)が表示されている間に
メッセージボックスを出そうとすると表示されないということが分かりました。
WM_CREATEではうまくいきますが、WM_LBUTTONDOWN等ではうまくいきません。

101 :98:2005/05/03(火) 21:33:30
>>100
ウィンドウプロシージャ関数
switch(msg)
{
case WM_CLOSE:
return OnClose();
・・・他のメッセージ処理

メインウィンドウのOnClose関数
ウィンドウプロシージャの基本クラスの関数をオーバライドしてます
{
if(MessageBox(m_hwnd, "Really?", "", MB_YESNO) == IDYES)
DestroyWindow(m_hwnd);
return 0;
}

どのくらい晒せばいいか分かりませんが、
とりあえずかかわってるとこだけ書いてみました。

102 :デフォルトの名無しさん:2005/05/03(火) 21:37:14
>>98
全部晒したほうがいいんでない?

103 :デフォルトの名無しさん:2005/05/03(火) 21:51:16
TCHARの文字列をwchar_tの文字列に変換したいのですが、
TCHARがcharの時もwchar_tの時も上手くいく方法はどのようなものがありますか?

104 :デフォルトの名無しさん:2005/05/03(火) 22:10:14
_UNICODEが定義されてないときだけ
変換したらいいんでないですかね?

105 :デフォルトの名無しさん:2005/05/03(火) 22:30:13
>>103
ATLのCT2Wとか

106 :デフォルトの名無しさん:2005/05/04(水) 00:05:49
スレッドとウィンドウメッセージの関係について質問です。
GUIを扱うメインスレッドと、長い処理を行うワーカースレッドがありまして、
あるウィンドウに対して送信するときにクリティカルセクションを使って
排他をしようと考えています。
状態遷移を考えているうちに疑問に思ったのですが、

・ワーカースレッドで、クリティカルセクションをロックしてる最中に
メインスレッドにSendMessageすると、どうなるでしょうか?
メインスレッドに処理が移った瞬間デッドロックするのでしょうか。

107 :デフォルトの名無しさん:2005/05/04(水) 00:07:53
>104-105 ありがとうございます。
#ifdef でやってみます。

108 :デフォルトの名無しさん:2005/05/04(水) 00:09:08
補足ですが、
あるウィンドウは、メインスレッドのダイアログ上に存在します。
単なるエディットボックスです。

109 :デフォルトの名無しさん:2005/05/04(水) 00:09:41
>>106
メインスレッドがそのクリティカルセクションをロックしようとしなければ大丈夫。

110 :デフォルトの名無しさん:2005/05/04(水) 00:22:48
リソースを「実行時」に生成して、
外からインスタンスハンドルと「特定のID」を引数として引っ張ってこれるようにしたいのですが
どうしたらいいですか?

111 :デフォルトの名無しさん:2005/05/04(水) 00:31:27
>>109
いや、今の設計では、メインスレッド側もロックしようとします。
やっぱダメかな・・・
ボタンを押したりしたときにそのウィンドウにテキストを出力する時とか。
ちゃんとクリティカルセクションのlock/unlockはしてますが。


112 :デフォルトの名無しさん:2005/05/04(水) 00:35:49
要するに、ワーカースレッドの中でlockしたまんま、
メインスレッドへSendMessageは正当なのかということなのですが、
なんか試した限りではうまく動かないみたいです。
クリティカルセクションのコードを外せば動くんですが。
ああもう寝よ・・・

113 :デフォルトの名無しさん:2005/05/04(水) 00:40:38
なんか設計が悪い気がしてきました。
別のスレッドからのSendMessageって、スタックから見るとかなり
ややこしいことになってるみたいなんで、バグの温床のような気がします。
SendMessageを使わない別の通信手段を考えることにします。

114 :デフォルトの名無しさん:2005/05/04(水) 00:45:39
それがいいよ。

115 :デフォルトの名無しさん:2005/05/04(水) 01:14:45
以下のフローに変更。

データをバッファリングすることにして、
そのデータをクリティカルセクションのロック対象とする。
ワーカスレッドは、バッファを更新したらWM_USER+nの適当なメッセージを
PostMessageでGUIを持つメインスレッドへ通知し、
GUIメインスレッドは通知を受けたらコントロールを更新してバッファをクリアする、
というフローに変更。

これでメッセージループが正常に回るようになりました。
気持ち悪い部分が消えて良かった・・・


116 :デフォルトの名無しさん:2005/05/04(水) 01:22:06
よかったね。

117 :デフォルトの名無しさん:2005/05/04(水) 03:05:58
えーっ SendMessageをPostMessageにしちゃうの?
同期的に処理しなくていいなら、最初からPostMessageにしとけ、っていう気もするけど、
ロックの都合で変えるのは、どうかと思う。

基本的には、クリティカルセクション内でSendMessageするのは、よくない。

SendMessageのように、いつ返ってくるのかわからないような処理を、
排他状態で行うのは、パフォーマンス的にもよろしくないし、なんか気持ち悪い。
(気持ち悪いのは、デッドロックしやすいからよくない、ということだと思うのだけど、
デッドロックするような設計なら、長かろうが複雑だろうが、ダメなものはダメだなぁ。)

もしかして、ロック対象のオブジェクトを、SendMessageで誰かに触らせようとしているの?
だとしたら、それはロックの使い方を間違っているよ。
ロックしている = 自分以外に触らせない
ということだから。

渡す側は、オブジェクトに触れる前にロック。オブジェクトに触れ終わったらアンロック。
渡された側も、オブジェクトに触れる前にロック。オブジェクトに触れ終わったらアンロック。
ロックしないで触るコードがあれば直すべし。
SendMessageする時や、メッセージキューから受けとる時は、ロックしていない状態でいいよ。

118 :117:2005/05/04(水) 03:10:23
誤解があるかも・・・

> SendMessageする時や、メッセージキューから受けとる時は、ロックしていない状態でいいよ。
SendMessageすることや、メッセージキューから受けとること自体は、
オブジェクトのハンドルやポインタは扱うかもしれないけれども、
オブジェクトの中身には触れないことなので、ロックが不要なのです。

もちろん、
そのハンドルやポインタ自体がロック対象のオブジェクトというのであれば、
ロックしなくてはいけませんが、そんなロック対象のものを直接SendMessageで渡してはいけません。
必ず、一段噛まさないと。

119 :デフォルトの名無しさん:2005/05/04(水) 03:15:52
そんなことわかってるよ。

120 :デフォルトの名無しさん:2005/05/04(水) 05:25:05
すいません、DeleteMenu(sysMenu,SC_MINIMIZE,MF_BYCOMMAND );

上記のようにでぇりーとした、みにまいずなアイコンを再び
使えるようにしたいのですがどうすればいいのでぇすくわぁ


121 :デフォルトの名無しさん:2005/05/04(水) 08:36:16
>>119
わかってりゃ、最初の質問だって出なかったろ。

122 :デフォルトの名無しさん:2005/05/04(水) 15:16:38
InsertMenuで追加するとか

123 :デフォルトの名無しさん:2005/05/04(水) 17:41:50
自分で作成したプログラムからチャットとかに、なんでもいいから文字を送信
したいんですけど、送信するにはどんな関数を使えばいいんですか?
そういうのは存在するんでしょうか? 優しい方教えてくださいm(_ _)m

124 :デフォルトの名無しさん:2005/05/04(水) 17:52:45
>>123
要件の不足。
詳細述べよ。

125 :デフォルトの名無しさん:2005/05/04(水) 17:55:00
チャットを荒らしたいんですが、どんな関数を使えばいいんですか?
優しい方教えてくださいm(_ _)m

126 :デフォルトの名無しさん:2005/05/04(水) 17:59:34
ただ文字を送信したいだけです。
フォームに文字を入力せずに、自分で作成したプログラムから
特定の文字を送信するにはどうすればいいのかなぁ、って思っただけです。

127 :デフォルトの名無しさん:2005/05/04(水) 18:08:30
>>126
とりあえずスレ違い。
HTTP 関連のお勉強から始めれ。

128 :デフォルトの名無しさん:2005/05/04(水) 18:09:20
>>126
スレ違い、氏ね

129 :デフォルトの名無しさん:2005/05/04(水) 18:12:57
氏ねとか軽軽しく言っちゃダメだよ

130 :デフォルトの名無しさん:2005/05/04(水) 20:21:20
じゃ
死ね
は?あと
お望みならぶち殺したろか?
とかは?

131 :デフォルトの名無しさん:2005/05/04(水) 20:23:04
申し訳ございませんが二度と私達の前に姿を現さないで頂けませんでしょうか
ぐらいで

132 :デフォルトの名無しさん:2005/05/04(水) 21:27:45
私達って、勝手に他人を巻き込むなよ

133 :デフォルトの名無しさん:2005/05/04(水) 21:34:45
メッセージボックスをたくさん表示させて、
一番最後に出たメッセージボックスのOKボタンを押したら、全ての
メッセージボックスが閉じてくれるジョークプログラムを作ろうと思うのですが、
どのようにすればよいでしょか?

134 :デフォルトの名無しさん:2005/05/04(水) 21:39:29
罠作者はお帰りクダサイ

135 :デフォルトの名無しさん:2005/05/04(水) 21:51:21
>>133
普通に組めるだろ
アフォか

136 :デフォルトの名無しさん:2005/05/04(水) 22:02:41
///////////////////////////////////////////////////////////////////////////////////////
#include <windows.h>
#include <time.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hinst, HINSTANCE, LPSTR, int )
{HWND hwnd[999];MSG msg;WNDCLASS unkoClass;int i,j=0,k=0;srand(clock());
{unkoClass.style = CS_HREDRAW | CS_VREDRAW;unkoClass.lpfnWndProc = WndProc;unkoClass.cbClsExtra = 0;
unkoClass.cbWndExtra = 0;unkoClass.hInstance = hinst;unkoClass.hIcon = NULL;unkoClass.hCursor = LoadCursor(NULL, IDC_ARROW);
unkoClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);unkoClass.lpszMenuName = NULL;unkoClass.lpszClassName = "うんこ";
if( !RegisterClass(&unkoClass) ) return 0;}for(i=0; i<999; i++){j=rand()%1000+1;k=rand()%1000+1;
hwnd[i] = CreateWindow( unkoClass.lpszClassName,"うんこ",WS_OVERLAPPEDWINDOW,j,k,200,200,NULL,NULL,hinst,NULL);
ShowWindow(hwnd[i], SW_SHOW );}if(IDNO == MessageBox(*hwnd,"うんこおk?","うんこ", MB_YESNO )){ }
else {SendMessage(*hwnd, WM_CLOSE, 0, 0);}while( GetMessage(&msg, NULL, 0, 0) ){TranslateMessage(&msg);DispatchMessage(&msg);}
return 0;}LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg, WPARAM wp, LPARAM lp){
switch(imsg){case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd, imsg, wp, lp);}return 0;}
///////////////////////////////////////////////////////////////////////////////////////


137 :デフォルトの名無しさん:2005/05/04(水) 22:10:58
http://aion666.hp.infoseek.co.jp/cgi-bin/fupbbs/obj/obj35_1.zip

作ってみた


138 :デフォルトの名無しさん:2005/05/04(水) 22:53:28
何を作ったのやら。

139 :デフォルトの名無しさん:2005/05/05(木) 00:37:13
リストビュー(ListView)で質問です、、
項目のヘッダを押すとそのカラムについてソートされるようにしたいんですが、
項目のヘッダが押されたというのは、何のメッセージを捕まえればよいですか?

140 :デフォルトの名無しさん:2005/05/05(木) 00:38:46
猫のページにありました
すいません。

141 :デフォルトの名無しさん:2005/05/05(木) 00:40:27
気を取り直してもう一つ質問です。
リストビューの任意の項目で、
右クリックしたらポップアップメニューを出したいのですが、
何のメッセージを捕まえればよいですか?

142 :デフォルトの名無しさん:2005/05/05(木) 00:45:19
猫のページにありました
すいません。

143 :デフォルトの名無しさん:2005/05/05(木) 00:50:05
>>136
おぉ、最高っす!
参考にさせていただきます!

144 :デフォルトの名無しさん:2005/05/05(木) 00:55:25
ウィンドウがアクティブ化したときに何らかの処理を行うために、フックを使おうと思います。
WH_CBT と WH_SHELL とどちらを使うほうがよいでしょうか?

145 :デフォルトの名無しさん:2005/05/05(木) 00:58:40
猫のページにありました
すいません。

146 :デフォルトの名無しさん:2005/05/05(木) 01:02:20
ウィンドウがアクティブ化したときに何らかの処理を行うために、フックを使おうと思います。
WH_CBT と WH_SHELL とどちらを使うほうがよいでしょうか?

147 :デフォルトの名無しさん:2005/05/05(木) 01:04:55
おれもそう思う

148 :デフォルトの名無しさん:2005/05/05(木) 01:06:42
リストビューの任意の項目で、
右クリックしたらポップアップメニューを出したいのですが、
何のメッセージを捕まえればよいですか?


149 :デフォルトの名無しさん:2005/05/05(木) 01:17:07

 -<二:彡――

150 :デフォルトの名無しさん:2005/05/05(木) 01:47:32
追加で質問です。
リストビューで項目ヘッダの淵をダブルクリックすると
横幅がトリムされますが、これをプログラム側から行うには
何のメッセージ送ればよいですか?

151 :デフォルトの名無しさん:2005/05/05(木) 02:04:10
>>150
LVM_SETCOLUMNWIDTH メッセージでカラムの幅を
LVSCW_AUTOSIZE(アイテムのテキストの幅に合わせる) 又は
LVSCW_AUTOSIZE_USEHEADER(カラムのテキストの幅に合わせる) にする。

152 :デフォルトの名無しさん:2005/05/05(木) 02:11:12
>>151
ありがとうございました。
できました。

153 :デフォルトの名無しさん:2005/05/05(木) 02:13:30
1アプリケーションが持つウィンドウは
あまり多くないほうがいいのでしょうか?
具体的には、
キーボードを模したコントロール用パネルを作るときに、
各キーがそれぞれパネル上の一つの子ウィンドウという作り方は
推奨されない作り方なのでしょうか?


154 :デフォルトの名無しさん:2005/05/05(木) 02:19:07
100個ぐらいなら普通にうごくんじゃね?


155 :デフォルトの名無しさん:2005/05/05(木) 02:20:43
普通ボタンにしねぇか?
ってか、ボタンもテキストボックスもスタティックテキストもウィンドウなんだけどな

156 :デフォルトの名無しさん:2005/05/05(木) 02:27:48
昔Win16の時はご法度だったけどね、100個も並べたらまずリソース足りなくなってた
今は平気なんじゃないかなあ。

と言ってる俺は300-500並べるやつを作らなくてはならないんだが、これはやばそうだな・・・

157 :デフォルトの名無しさん:2005/05/05(木) 02:35:21
座標で管理

158 :デフォルトの名無しさん:2005/05/05(木) 02:39:01
>>156
あれ?昔ボタンで作られたキーボードの窓があった様な・・
誰が使うんだ?って代物だったけど。
Win95の頃かな。

159 :153:2005/05/05(木) 03:13:25
>>155
そう! その通り!
私は、ボタンをいっぱい使う
アプリケーションが作りたかったのです。
多くのボタンを持ったアプリケーションが懸命に動作する姿は、
私をも感動させるものがあるでしょう。


160 ::2005/05/05(木) 03:31:46
アホ

161 :デフォルトの名無しさん:2005/05/05(木) 04:24:48
>>160
下手に出ておればいい気に
なりおって! 氏ね!


162 :デフォルトの名無しさん:2005/05/05(木) 07:47:54
>>158
付属のソフトウェアキーボードのことか?

163 :デフォルトの名無しさん:2005/05/05(木) 17:14:49

LoadImageでIMAGE_ICON,16,16指定でアイコンハンドル(HICON)を読んで
タスクアイコンに設定したいのですが、
Windows2000用ではICOファイルから16色のテーブルを読み込みたいのですが、
指定する方法を教えてください




164 :デフォルトの名無しさん:2005/05/05(木) 23:43:19
とりあえず日本語勉強してからもいちど来てくれ

165 :デフォルトの名無しさん:2005/05/05(木) 23:52:39
>163
http://www.vector.co.jp/soft/win95/amuse/se201729.html?g
これ使ってみそ  的はずれてるかもしらんが・・・

166 :デフォルトの名無しさん:2005/05/06(金) 11:20:29
マイクの設定ってプログラム上から出来ませんか?
ミュートとか音量設定とか

167 :デフォルトの名無しさん:2005/05/06(金) 11:23:44
できる

168 :デフォルトの名無しさん:2005/05/06(金) 12:51:51
ダイアログプロシージャA内で、別のダイアログBを生成したとき、
プロシージャBに何か値を渡すにはどうしたらいいでしょうか。

例えばダイアログAのチェックボックスの選択状況によって、
ダイアログBの初期状態を変化させるなどしたい場合です。
今はグローバル変数に持たせて渡しているのですが、あまり多用したくないです。


169 :デフォルトの名無しさん:2005/05/06(金) 13:19:08
M−V−Cだとかを一度勉強しなはれ

170 :デフォルトの名無しさん:2005/05/06(金) 13:20:02
>>168
DialogBoxParam

171 :デフォルトの名無しさん:2005/05/06(金) 13:35:58
>>170
THX
>>169
ウィンドウのクラス化めんどくさいんだもの。
SDKのみで懇切丁寧にクラス化の手順と仕組みが載ってる本とかないですかねー
Webに多少資料があるけど余りよく理解できない。

172 :デフォルトの名無しさん:2005/05/06(金) 14:09:50
クラス化は関係ない。

173 :デフォルトの名無しさん:2005/05/06(金) 14:20:05
じゃあ>>169ってどういう意味?

174 :デフォルトの名無しさん:2005/05/06(金) 14:24:41
つうか答えるならわざわざもったいぶるような書き方するなよ。
質問者には当然のように問題点を詳細に書くよう要求するんだから
回答者だって答えるならば少なくとも意味が伝わるように書いてくれ。

175 :デフォルトの名無しさん:2005/05/06(金) 14:26:18
はい次の質問者の方どぞ

176 :デフォルトの名無しさん:2005/05/06(金) 14:26:37
なにこのアホ。

177 :デフォルトの名無しさん:2005/05/06(金) 14:27:33
>>175
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね

178 :デフォルトの名無しさん:2005/05/06(金) 14:27:46
気に入らない答えが聞きたくなかったら質問しないことだよ

179 :デフォルトの名無しさん:2005/05/06(金) 14:28:15
意味不明。

180 :デフォルトの名無しさん:2005/05/06(金) 14:29:50
>>178
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね
キチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ねキチガイ氏ね

181 :166:2005/05/06(金) 14:47:47
>>167
出来ればAPIの名前とか方法の手がかりを教えてもらえないでしょうか?
よろしくお願いいたします。

182 :デフォルトの名無しさん:2005/05/06(金) 14:52:51
>>178
気に入らない質問が聞きたくなかったら回答しないことだよ

183 :デフォルトの名無しさん:2005/05/06(金) 15:07:49
>>182
ろmもいるだろうに。俺とか

184 :デフォルトの名無しさん:2005/05/06(金) 15:16:50
カレントドライブがネットワークドライブか判別する方法ってあります?

185 :デフォルトの名無しさん:2005/05/06(金) 15:23:13
ある

186 :184:2005/05/06(金) 15:24:59
>185
質問が悪かったですかね orz
どうすればわかりますか?

187 :デフォルトの名無しさん:2005/05/06(金) 15:31:30
>>183
気にいらない質問が見たくなかったらロムらないことだよ

188 :デフォルトの名無しさん:2005/05/06(金) 15:34:05
で、>>169ってどういう意味?
クラス化する以外にどうしろと。

189 :デフォルトの名無しさん:2005/05/06(金) 15:43:55
M−V−Cが何なのかすらわからない俺。

190 :デフォルトの名無しさん:2005/05/06(金) 15:58:28
M−V−C
が顔文字に見えてきた

191 :デフォルトの名無しさん:2005/05/06(金) 16:00:50
>>184
GetDriveType

192 :デフォルトの名無しさん:2005/05/06(金) 17:13:28
Microsoft Visual C++

193 :デフォルトの名無しさん:2005/05/06(金) 17:14:21
サブクラス化について質問です。
サブクラス化された子ダイアログから
親ダイアログの変数を参照するにはどうすればいいのでしょうか?

194 :デフォルトの名無しさん:2005/05/06(金) 17:33:46
ダイアログの変数?

195 :デフォルトの名無しさん:2005/05/06(金) 17:52:38
>>193
とりあえずGetParent()で親のウィンドウハンドルが手に入れられる。

196 :193:2005/05/06(金) 18:05:37
>>194
子ダイアログであるエディットボックスのウインドウプロシージャ内から
その親であるダイアログ内で使われている変数の値を参照したいのです。

>>195
ウィンドウハンドルを使えばいいのでしょうか。
少し調べてみます。

お二人ともレスありがとうございました。

197 :デフォルトの名無しさん:2005/05/06(金) 18:12:25
>>196
そりゃ直接は無理。

198 :デフォルトの名無しさん:2005/05/06(金) 19:09:01
つーか、ダイアログで使う変数ってなんだよ。
ダイアログクラスのメンバ変数か?

199 :デフォルトの名無しさん:2005/05/06(金) 19:28:50
で、>>169ってどういう意味?
クラス化する以外に。

200 :デフォルトの名無しさん:2005/05/06(金) 19:31:43
ttp://e-words.jp/w/MVC.html
これの事ではなかろか

201 :デフォルトの名無しさん:2005/05/06(金) 19:53:25
そんなの知ってる。
168の質問内容に対し、
クラス化する以外でMVCをどう実現するのだという事。

202 :デフォルトの名無しさん:2005/05/06(金) 19:57:44
APIとは何の関係もなさそうだな

203 :デフォルトの名無しさん:2005/05/06(金) 20:03:35
プロシジャ間のデータの受け渡しの実現方法の質問。

204 :名前は開発中のものです。:2005/05/06(金) 22:56:15
>>168の質問に対する回答としての
>>169>>172の意味を誰か説明して下さい。
気になって寝れません。

205 :デフォルトの名無しさん:2005/05/06(金) 23:05:49
質問です。

WinMain関数のメッセージループを

HDC hdc = GetDC(hwnd);
while(GetMessage(&msg, NULL, 0, 0)) {
TextOut(hdc, 0, 0, TEXT("test"), 4);
DispatchMessage(&msg);
TranslateMessage(&msg);
}

このように書いた状態でメッセージボックスを表示させると
文字とメッセージボックスが重なったときに文字が消えてしまいました。
これを文字が消えないようにするにはどうすればいいのでしょうか?

よろしくお願いします。


206 :デフォルトの名無しさん:2005/05/06(金) 23:09:10
高度なプログラミング技術だ。

207 :デフォルトの名無しさん:2005/05/06(金) 23:13:43
>>205
WM_PAINT内にTextOutを移す。

208 :デフォルトの名無しさん:2005/05/06(金) 23:33:32
HDC hd = GetDC(hwnd);を消す

209 :205:2005/05/07(土) 00:30:13
>>207-208
ご解答ありがとうございます。
>>207
WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
>>208
やってみましたが表示されなくなってしまいました。


210 :デフォルトの名無しさん:2005/05/07(土) 00:38:21
>>209
>WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
メッセージボックスをモードレスなダイアログでモーダルに見せかけるようにすればできないことはないが
面倒だし君のスキルでは多分無理だ。
つか、なんでそんなことがしたいの?

211 :デフォルトの名無しさん:2005/05/07(土) 00:38:28
>WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
  _, ._
( ゚ Д゚) ?

212 :デフォルトの名無しさん:2005/05/07(土) 00:39:15
>>209
自分で再描画処理を作れ

213 :デフォルトの名無しさん:2005/05/07(土) 01:23:36
>209
>WM_PAINT内ではうまくいくのですがどうしてもループの中でやりたいときは何か手はあるのでしょうか?
汎用的な手は無いと思う。

DialogBox関数でダイアログを作成した場合、ダイアログを閉じるまで、DialogBox関数から
帰ってこない。=君が作ったメッセージループもGetMessage関数で止まってる。
Windowsの構造上無理。


214 :デフォルトの名無しさん:2005/05/07(土) 06:51:42
advanced windowsを買ったはいいが付録のソースを
コンパイルしようとしたらエラー出まくりな上に
最初からCDに入ってる実行ファイル郡は全て
「このコンピュータでは扱えないファイル形式です」だとよ(プゲラチョフwwwwwwwなめすぎwwwwwww意味分からんwwwwwww互換性ないから使えないってことか?wwwwwwwwこれがジェフリーの集大成なのか?wwwwwwwwwwwwww

215 :デフォルトの名無しさん:2005/05/07(土) 07:34:37
やっとコンパイル通りやがったぜ

   __             __/  / |   ┌─┼` _ _|_
     / ─ /  / \ ○   |   /  |   |┐  |   |   / |
  __/  _/  /   \    |  /  レ  /    レ  ̄ / |

    /\___/ヽ
   /''''''   '''''':::::::\
  . |(●),   、(●)、.:| +
  |   ,,ノ(、_, )ヽ、,, .::::|
.   |   `-=ニ=- ' .:::::::| +
   \  `ニニ´  .:::::/     +
,,.....イ.ヽヽ、ニ__ ーーノ゙-、.
:   |  '; \_  _ノ.| ヽ i
    |  \/゙\ /\|  i |
    >   ヽ. V   |   ||

216 :デフォルトの名無しさん:2005/05/07(土) 07:34:49
結局、>>169は何?

217 :デフォルトの名無しさん:2005/05/07(土) 07:50:50
リストビューの内容領域が、リストビュー自体より大きくなって
スクロールバーが出ているときに
スクロールバーがでないようにMoveWindowでサイズを変更したいのですが、
適切なサイズを計算するにはどうしたらよいですか?

218 :デフォルトの名無しさん:2005/05/07(土) 08:00:04
>>216
バカが知ったかしてみたかったんじゃねーの。

219 :デフォルトの名無しさん:2005/05/07(土) 08:28:34
>>217
GetClientRectでリストビューのサイズ取得してそのサイズにあわせてMoveWindow

220 :デフォルトの名無しさん:2005/05/07(土) 09:05:43
>>219
ちょっと質問を誤解されているようです。
GetClientRectの引数は親ウィンドウのつもりだったのかリストビューのつもりだったのか
わかりませんが、
リストビューそのもののサイズを
内側のスクロールバーがでなくなるように変えたいのです。
リストビューにGetClientRectしても、現在のサイズが返るだけでした。

221 :デフォルトの名無しさん:2005/05/07(土) 09:10:58
>>209
ループ内でInvalidateRect()とUpdateWindow()を呼べばいい。

222 :デフォルトの名無しさん:2005/05/07(土) 09:24:50
>>220
言ってる意味がわかりません

223 :デフォルトの名無しさん:2005/05/07(土) 09:35:22
超能力を使ってみた。
こんな意味じゃなかろうか↓
例えば、項目の文字列がかなり横長のに、ウィンドウの幅が50ピクセルくらいだと、
クライアント領域内に水平スクロールバーが表示されるってことかな?
人間だったら手動でビューの幅を広げるけど、
そのための十分なサイズを計測する方法を聞いているのだと思われ。

224 :デフォルトの名無しさん:2005/05/07(土) 10:02:33
最初からそういってるやん。

225 :デフォルトの名無しさん:2005/05/07(土) 10:08:39
>>223
超能力ありがとうございます!
超能力で質問にも答えていただけますか?

一応、GetScrollInfoでリストビュースクロールバーの情報を得て
nMaxとnMinをとって8ぐらい足すとうまくいくようなんですが

226 :デフォルトの名無しさん:2005/05/07(土) 10:17:45
なぜ糞挙動なアプリを作りたいのか、目的がわからない。
アイテムを挿入するたびにウィンドウの大きさが変わってしまうのか。
最初から表示したいものが決まってて、要素の数や幅が不変なのであれば
リストビューの属性をスクロールしない設定にしとけばいいんじゃね。
そういう設定項目あるよ。

227 :デフォルトの名無しさん:2005/05/07(土) 10:34:30
>>226
サイズを変更するのは初期化時のみで
あとはユーザーのリサイズにあわせます
表示したいものはデータによって変わりますので幅も変わります
糞挙動ということはないです

228 :223:2005/05/07(土) 10:49:28
>>227
226は漏れじゃないぞよ。念のため。
各カラムのサイズを調べればよさげ?
ってかリストビューもあんまり使ったことないし、
徹夜明けの頭で適当に答えてるだけなので責任はもてない。
もっとマシなやつに聞いてくれ。寝る。

229 :デフォルトの名無しさん:2005/05/07(土) 11:13:47
幅なら幅って最初に言っといてほしいよな

230 :デフォルトの名無しさん:2005/05/07(土) 11:16:15
普通に考えりゃ幅だろ
縦を気にしてたらきりがないからな

231 :デフォルトの名無しさん:2005/05/07(土) 11:34:40
>表示したいものはデータによって変わりますので幅も変わります
>糞挙動ということはないです

どう考えても糞。


232 :デフォルトの名無しさん:2005/05/07(土) 11:54:34
縦だったら仕事で作ったのがあるけど、MFCべったりだ。

233 :デフォルトの名無しさん:2005/05/07(土) 12:02:44
縦幅ならアイテム数調べて、それ×何ピクセルか指定するだけでいいし
どうにでもなるやん。

234 :デフォルトの名無しさん:2005/05/07(土) 12:48:32
ClientToScreenはクライアント座標をスクリーン座標に変換する、とありますが
これはマルチモニタシステム上では「仮想スクリーン座標」に変換するものと
考えていいんですか?

自力でテストできたらいいんですが、生憎ディスプレイがひとつしかないので

235 :デフォルトの名無しさん:2005/05/07(土) 13:03:18
>>233
そして画面下を割るわけですね

つーか、わざわざ少しずつ広げるくらいなら最初から全画面表示しときゃいいじゃん

236 :デフォルトの名無しさん:2005/05/07(土) 14:09:23
↑脳味噌が一階層しかねぇのかよアホが。

237 :デフォルトの名無しさん:2005/05/07(土) 15:12:56
まぁそう自分を貶すなよ

238 :デフォルトの名無しさん:2005/05/07(土) 15:16:50
まぁ、APIの話題ではなくGUIがいかにあるべきかの話題なのですれ違い

239 :デフォルトの名無しさん:2005/05/07(土) 16:38:07
>>217,>>225
GetScrollRange あたりを調べてみて
GetSystemMetrics の幅や高さを足したら?

親ウィンドウも連鎖的にでかくなるのか?

240 :デフォルトの名無しさん:2005/05/07(土) 16:49:36
>>205
>>207のようにWM_PAINT内に移した上で、ループ内にInvalidateRect(hwnd,NULL,TRUE)とUpdateWindow(hwnd)でダメ?

241 :デフォルトの名無しさん:2005/05/07(土) 16:52:58
ウインドウハンドルからLOGFONT構造体を取得するにはどのようにすればいいでしょうか?

242 :デフォルトの名無しさん:2005/05/07(土) 16:55:28
>>166
できたことある

243 :デフォルトの名無しさん:2005/05/07(土) 16:57:29
>>241
ウインドウハンドルからって何?
ウインドウハンドルにフォントが関連付けられてる?

244 :デフォルトの名無しさん:2005/05/07(土) 17:04:29
>>243
HDCからHFONTを取得する方法きぼんぬ。
HDCはHWNDから簡単に取得できるしHFONTからLOGFONTも可能だし。

245 :デフォルトの名無しさん:2005/05/07(土) 17:06:06
デバイスコンテキストを理解せよ

246 :デフォルトの名無しさん:2005/05/07(土) 17:07:24
GetObject

247 :デフォルトの名無しさん:2005/05/07(土) 17:07:35
GetDCでいつも同じDCが返って来るとは限んないよ

248 :デフォルトの名無しさん:2005/05/07(土) 17:08:45
>>245
ありがとうございます。
デバイスコンテキスト関係は知識が浅いのでもう少し勉強します。

249 :デフォルトの名無しさん:2005/05/07(土) 17:09:09
じゃなかった
WM_GETFONT

250 :デフォルトの名無しさん:2005/05/07(土) 17:11:04
>>246
ありがとうございます。
それを試してみます。

>>247
その都度取得と開放を繰り返すので問題ないと思います。

251 :232:2005/05/07(土) 17:20:02
>>235
顧客からの要求で、「ダイアログが画面内に収まらないなら画面縦一杯に出してListCtrlにスクロールバーを出せ。
さもなくば、適切なサイズにListCtrlをあわせてスクロールバーは出すな。
ただし、ダイアログのサイズは自由に変えられるようにしろ」なんてのがあったりするわけだがね。
#あ、説明不足で誤解されそうな悪寒。

252 :デフォルトの名無しさん:2005/05/07(土) 17:38:14
もうしゃべらないでいいよ無能

253 :デフォルトの名無しさん:2005/05/07(土) 18:56:17
指定されたフォルダから指定されたファイルを検索するWindowsの標準関数は、
ファイル名を一字一字比較して、末尾まで一致するファイルへのポインタを返す
という仕様になっていると思うのですが・・・間違ってないでしょうか?

254 :デフォルトの名無しさん:2005/05/07(土) 19:00:31
http://YahooBB219029188008.bbtec.net/


うはっwwwwwwっwうはっwwwっwwwwwwwwwwww
wwwwwwっうぇ
wwwwwwwwwwww
wおkwww
wwwwwwおkwww


255 :デフォルトの名無しさん:2005/05/07(土) 19:01:22
>>253
指定されたフォルダから指定されたファイルを検索するWindowsの標準関数
の名前を書いてくれなきゃわからない。

256 :デフォルトの名無しさん:2005/05/07(土) 20:09:12
>>249
その方法でうまくいきました。
どうもです。

>>252
無能で悪かったな。

257 :デフォルトの名無しさん:2005/05/07(土) 20:15:57
最近よくみかける>>254みたいなのってなんなんだ?

258 :デフォルトの名無しさん:2005/05/07(土) 20:16:56
>>257
山田ウイルス

259 :デフォルトの名無しさん:2005/05/07(土) 20:36:24
>>253
ファイルへのポインタ?

260 :デフォルトの名無しさん:2005/05/07(土) 22:07:33
>>253
ワイルドカードがあるからそう単純ではないと思う。

261 :デフォルトの名無しさん:2005/05/07(土) 22:29:05
>>260
ワイルドカードは内部でPathMatchSpecを呼んでるだけだろ。

262 :デフォルトの名無しさん:2005/05/07(土) 22:39:10
ポップアップメニューって親ウィンドウの中じゃないと絶対表示できない?
グローバルなフックプロシージャからTrackPopupMenu使ってみたけど親ウィンドウ以外では表示されません。
なんか方法ありますか?


263 :デフォルトの名無しさん:2005/05/07(土) 22:50:19
なんのポップアップだよ

264 :デフォルトの名無しさん:2005/05/07(土) 22:56:45
別にウィンドウに限定されないけどなあ

265 :デフォルトの名無しさん:2005/05/07(土) 23:00:39
質問させてください

Cの構造体ってコンパイラによってメンバが
4バイトの境界にそろえられてしまったりすると思うんですけど、
Windowsビットマップをそのまま読み込んで表示しようとした時に
読み込んだバッファに構造体のポインタをそのまま当てはめて使っているサンプルを
見かけるのですが問題ないのでしょうか

手持ちのbccではオプションに色々指定してもちゃんと1バイト区切りになっていましたが
そういう取り決めになっていたりするんでしょうか

266 :デフォルトの名無しさん:2005/05/07(土) 23:10:27
多分心配無用

267 :デフォルトの名無しさん:2005/05/07(土) 23:19:49
>>265
構造体の定義で
struct {
 char a;
 int b;
};
なんていう馬鹿なことしなければ大概大丈夫。

268 :デフォルトの名無しさん:2005/05/07(土) 23:30:25
>>265
普通はBITMAPFILEHEADERの定義の前に
#pragma pack(2)
とか入ってるから大丈夫よ。
まあメンバごとに読んだ方が行儀がいいのは確かだけど。

269 :265:2005/05/07(土) 23:32:37
ええと、BITMAPFILEHEADERやRGBQUADでWORDとBYTEがあるので大丈夫かなあと心配してみたんです

お話を聞く限り大丈夫そうなので構造体使って画像読み込む関数つくってみます
ありがとうございました!

270 :デフォルトの名無しさん:2005/05/07(土) 23:34:53
何もしないと、パディングされちまうけど、
BITMAPFILEHEADERとかBITMAPINFO、INFOHEADERとかRGBQUADとかのような、
パディングされたら困るやつは、ちゃんと定義のとこでパディングされないように細工してある

271 :デフォルトの名無しさん:2005/05/07(土) 23:52:14
>>166
MSDNのmixer〜のあたりを読めば書いてあります。
マイクはMIXERLINE_COMPONENTTYPE_SRC_MICROPHONEでmixerGetLineInfo。

272 :デフォルトの名無しさん:2005/05/08(日) 00:22:52
ただ、ビットマップに関する構造体に関しては定義でパディング対策してあるけど
ビットマップの実際のビットデータ部は、画像の横幅によってはスキャンラインごとに、
ラインの最後にパディングが有るから、ビットマップファイルを触るときはそこに注意だな

273 :265:2005/05/08(日) 00:28:51
>>270 >>272
レスありがとうございます
きちんと対策がしてあるものなのですね

データ部の4byte境界は横幅とビットカウントから1ラインのバイト数出す
関数作って対応済みです(`・ω・´) シャキーン

いろいろ心配していただいてありがとうございました

274 :デフォルトの名無しさん:2005/05/08(日) 00:56:53
>>273
その対策というのが>>268

275 :デフォルトの名無しさん:2005/05/08(日) 00:57:46
Win32API でのファイル操作についての質問です。

#include <windows.h>

HANDLE hFile;
・・・・・・・・・・・・
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS winc;

hFile = CreateFile(lpCmdLine , GENERIC_READ , FILE_SHARE_READ , NULL ,
OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL);
if (hFile == INVALID_HANDLE_VALUE) {
MessageBox(NULL , TEXT("ファイルが開けません") , NULL , MB_OK);
return -1;
}
(以下略)

をコンパイルして実行したら、存在するファイル名をコマンド引数に指定しても
「ファイルが開けません」のエラーメッセージが出てしまいます。

当方の開発環境は、
OS:Windows XP
コンパイラ: lcc-win32 Ver3.8
です。

どなたか問題点を教えて下さい。お願いしますm(_ _)m

276 :デフォルトの名無しさん:2005/05/08(日) 01:03:26
>>275
CreateFileに渡しているlpCmdLineに何が入っているか確認してみようとは思わん?

277 :デフォルトの名無しさん:2005/05/08(日) 01:33:09
>>276
ダイアログボックスには何度も表示しましたが、改めてコンソールに出力してみると、
276さんに言われるまで見落としていたのですが、lpCmdLine に入っていたのは
 C:\Document and Settings\・・・・\filename.txt
ではなくて、
 "C:\Document and Settings\・・・・\filename.txt"
↑                            ↑
文字列そのものの両端にダブルクォーテーションがある

ということに気づきました。
気づかない方がヴァカなのかも知れませんが、(私にとって)これは盲点でした。
でも、その一言のお陰で解決しました。どうも有難うございましたm(_ _)m感謝感謝

278 :デフォルトの名無しさん:2005/05/08(日) 02:41:52
>>277
ちなみにD:\とかだとダブルクォーテーションが排卵よ

279 :デフォルトの名無しさん:2005/05/08(日) 03:23:07
スペースが入れば入る

280 :デフォルトの名無しさん:2005/05/08(日) 03:24:34
スペースって宇宙の事だよね

281 :デフォルトの名無しさん:2005/05/08(日) 03:59:09
急速にスレの質が低下してまいりました

282 :デフォルトの名無しさん:2005/05/08(日) 04:18:38
>>278
D:\・・・ でもダブルクォーテーション入りました(当方の環境では D ドライブは CD-ROM)。
こちらの環境が Windows XP だからなのか、それとも lcc-win32 のためなんでしょうか・・・・・・

283 :デフォルトの名無しさん:2005/05/08(日) 06:19:39
サボらないでコマンドラインパーサ書けよ

284 :デフォルトの名無しさん:2005/05/08(日) 06:54:03
>>283
"を含むパス名って存在しないんだっけ?
パーサを書こうにも仕様がわからんとね。

285 :デフォルトの名無しさん:2005/05/08(日) 07:31:04
存在しねぇよ
仕様がわからんとねとか言う前に、自分でファイル名つけてみろよ

286 :デフォルトの名無しさん:2005/05/08(日) 07:31:21
なんでファイル名にスペースなんて使えるようにしたんだろう

287 :デフォルトの名無しさん:2005/05/08(日) 07:46:14
ファイル名に\ とか / とか使われたらお手上げだよ。

288 :デフォルトの名無しさん:2005/05/08(日) 08:53:31
CreateFileの前にPathUnquoteSpaces(lpCmdLine);を入れると解決するよ。

289 :デフォルトの名無しさん:2005/05/08(日) 11:00:01
Path系のAPIはIE4以降必須だから・・・


290 :デフォルトの名無しさん:2005/05/08(日) 11:12:03
今時IE4以降が入ってないようなWinマシン使ってるヤツが居るのか?
天然記念物だな

291 :デフォルトの名無しさん:2005/05/08(日) 11:41:22
>>290
某コンピューター系大企業の生産現場では、製品チェック用のノーマルWin95PCが現役だったよ。
工場とかには結構な数あるんじゃないかな?

292 :デフォルトの名無しさん:2005/05/08(日) 11:50:33
Win95ならもう既にshlwapi.dll入ってたと思うが

293 :デフォルトの名無しさん:2005/05/08(日) 11:51:37
おいおい
製品チェック用のマシンにどこの馬の骨とも知らんヤツの作ったアプリ入れるんかい

294 :デフォルトの名無しさん:2005/05/08(日) 13:03:46
自社製より信頼性が高いと思っているのかも知れない。

295 :234:2005/05/08(日) 14:59:05
だれかおせーて

296 :デフォルトの名無しさん:2005/05/08(日) 15:58:27
質問したかて、必ず知ってる人間が居るとは限らん
とりあえず俺はしらね

297 :デフォルトの名無しさん:2005/05/08(日) 16:21:16
仮想の意味がわからんが、モニタ2台あるとスクリーン座標はそのまま出るよ
たとえば、1024幅が2台あってプライマリを左にすれば、 0 - 2047 の範囲になる

298 :デフォルトの名無しさん:2005/05/08(日) 17:07:38
ダライアス可能?

299 :デフォルトの名無しさん:2005/05/08(日) 17:33:52
>>298
ひっくり返るほどスレ違いすぎ。

300 :デフォルトの名無しさん:2005/05/08(日) 18:46:41
Gと外伝なら見たことあるな。
えっ、ダライアスだよ。

301 :234:2005/05/08(日) 20:19:46
>297
ありがとうございます。
仮想スクリーンてのはこのあたりの文章を参照しました。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/monitor_7hym.asp

302 :デフォルトの名無しさん:2005/05/08(日) 21:31:20
すんません、
セミコロン(;)つきのファイル名って存在しますか?

303 :デフォルトの名無しさん:2005/05/08(日) 21:37:52
どころか、セミコロンだけでも存在できる。

304 :デフォルトの名無しさん:2005/05/08(日) 21:42:12
あちゃあ、まぢですか?

セミコロンをファイル名リストの区切りにしようとしてたんだけど、
破綻しちゃった。
おススメの区切り文字ってありますか?

305 :デフォルトの名無しさん:2005/05/08(日) 21:51:20
>>304
タブ文字でも改行でも

306 :デフォルトの名無しさん:2005/05/08(日) 21:52:21
>>304
MFCのCFileDialogでやってるように縦簿'|'はどう?

307 :306:2005/05/08(日) 21:53:35
「棒」ね

308 :デフォルトの名無しさん:2005/05/08(日) 21:58:03
>>304
普通にセミコロンでいいじゃんか。
環境変数のパス名とかの区切りだし

309 :デフォルトの名無しさん:2005/05/08(日) 22:02:29
>>304
'\0'

310 :デフォルトの名無しさん:2005/05/08(日) 22:06:10
縦棒にします!
ありがとうございました!


311 :デフォルトの名無しさん:2005/05/08(日) 23:05:50
環境変数ではどうしてんだろう・・・

312 :デフォルトの名無しさん:2005/05/08(日) 23:31:17
UIやメッセージを表示する専用の子ウィンドウを沢山持つアプリケーションを作る場合、
その時点で使ってない子ウィンドウは、どのようにしておくのが推奨されていますか?
毎回、使う度にCreate と Destroyを繰り返すのはシステムに負荷が掛かるのでしょうか?
一応、作成しておいて、ただ見えなくしておくだけの方がいいのでしょうか?


313 :デフォルトの名無しさん:2005/05/08(日) 23:32:27
>>312
好きにしろ

314 :デフォルトの名無しさん:2005/05/08(日) 23:44:28
>>312
TPOに応じて方法を使い分けるべきかと。
少数の複雑なウインドウなら隠蔽するだけのほうがいいと思うが、多数のボタンやエディトボックスなら使うたびにCreateとDestroyを繰り返したほうがいい。
一つのプログラムに二つの方法を混在させると開放し忘れでリークするということもあるだろうからどちらかに統一するのがベター。

315 :デフォルトの名無しさん:2005/05/09(月) 00:11:27
回答ありがとうございます。
マナーの良いプログラミングを心掛けていきたいと思っています。

316 :デフォルトの名無しさん:2005/05/09(月) 00:15:47
フックについてですが、WH_GETMESSAGE でフックをかけているんですが、
ウィンドウのアクティブ/非アクティブを変えても WM_ACTIVE が捕捉できません。
全く同じコードで WM_LBUTTONDBLCLK などのメッセージは捕捉できるのですが
WM_ACTIVE は何か特別扱いになっているのでしょうか?

317 :デフォルトの名無しさん:2005/05/09(月) 00:44:41
>>311
フォルダ名を""で括ればok

318 :デフォルトの名無しさん:2005/05/09(月) 00:57:32
引用符切り分けるのめんどくさい

319 :デフォルトの名無しさん:2005/05/09(月) 01:08:14
>>316
WM_ACTIVEはsendされるメッセージ。
WH_GETMESSAGEはpostされたメッセージしか捕らえられない。

320 :デフォルトの名無しさん:2005/05/09(月) 01:51:38
>>319
なるほど。ありがとう御座います。
WH_CALLWNDPROC でフックできました。

321 :デフォルトの名無しさん:2005/05/09(月) 03:41:12
FindFirstChangeNotification()

ReadDirectoryChangesW()
のように、ディレクトリごとではなく、ファイルごとに変更を知る方法はありませんか?

一つのファイルを複数のプロセスが共有で開いて読み書きしている時に、
他の誰かが書きこんだことを知りたいので、書き込まれた位置までわかるとありがたいのですが。

322 :デフォルトの名無しさん:2005/05/09(月) 04:07:20
FindFirstChangeNotification

323 :デフォルトの名無しさん:2005/05/09(月) 04:27:12
それって、ネットワークドライブでも使える?

324 :デフォルトの名無しさん:2005/05/09(月) 05:43:25
使える

325 :デフォルトの名無しさん:2005/05/09(月) 07:18:57
PROCESSENTRY32構造体についてなんですが

PROCESSENTRY32 unko;

と宣言してるのですが
「'PROCESSENTRY32' : 識別名を宣言するのに、型が指定されていません」
とエラーがでます。解決方法を教えてください


326 :デフォルトの名無しさん:2005/05/09(月) 08:44:11
PROCESSENTRY32 構造体を宣言してください。

327 :デフォルトの名無しさん:2005/05/09(月) 08:47:08
#include <tlhelp32.h>

328 :デフォルトの名無しさん:2005/05/09(月) 09:03:47
>>327
既にやってる

329 :デフォルトの名無しさん:2005/05/09(月) 09:13:09
http://dhcp255-146.tamatele.ne.jp/
うぇwwwっうぇwwwwwwwwwwwwっwwwっうぇ
うはっwwwwwwwwwwwwwwwうはっwww
うぇwwwっwおkwwwっwwwwwwwwwwwww

330 :デフォルトの名無しさん:2005/05/09(月) 09:13:12
というか<tlhelp32.h>にインクルードしてるのに
「CreateToolHelp32Snapshot' : 定義されていない識別子」って出ます。原因と解決方法を教えてください

331 :330:2005/05/09(月) 09:17:51
すいません解決しました

332 :デフォルトの名無しさん:2005/05/09(月) 09:41:32
どう解決したんだよ
>>328を書いた以上、経過を説明してくれないかな

333 :330:2005/05/09(月) 10:18:54
関数名間違ってただけ

334 :デフォルトの名無しさん:2005/05/09(月) 10:28:52
>>325
...ENTRY... に「出るもの」の名前は後任者が勘違いしやすい。ここはもっと
ピタッとする名前があるのにしないのはまずいな。

335 :デフォルトの名無しさん:2005/05/09(月) 11:34:35
334 が非常に的外れなレスをしている気がしないでもないが、

336 :デフォルトの名無しさん:2005/05/09(月) 16:00:17
>>334
いやいや、その変数をEntryするのかもしれんぞ。
#どこにかは知らんが。

337 :デフォルトの名無しさん:2005/05/09(月) 16:46:46
シリアルポート2つ使うプログラムで同じCOM番号を指定した時にそれを共有して使う方法を教えてください

338 :デフォルトの名無しさん:2005/05/09(月) 16:49:33
Telephony API

339 :デフォルトの名無しさん:2005/05/09(月) 17:05:29
>>338
詳しく

340 :デフォルトの名無しさん:2005/05/09(月) 17:17:22
>>339
http://www.google.co.jp/

341 :デフォルトの名無しさん:2005/05/09(月) 17:45:05
>>336
あの続きのコードを見たくなった。日経の小説も気になってんだけど。

342 :デフォルトの名無しさん:2005/05/09(月) 18:06:47
>>340
知らないならレスしないで下さい。ウザイだけです、消えてください

343 :デフォルトの名無しさん:2005/05/09(月) 18:08:01
オマエモナ

344 :デフォルトの名無しさん:2005/05/09(月) 18:14:45
騙りが横行してる希ガス

345 :デフォルトの名無しさん:2005/05/09(月) 18:20:42
共有ねぇ。DuplicateHandleするとどうなるのかは気になるけど、
素直にアウトプロセスCOMみたいなRPCな仕掛けを挟んだら?

346 :デフォルトの名無しさん:2005/05/09(月) 19:37:00
めんどい

347 :デフォルトの名無しさん:2005/05/09(月) 21:09:50
コンボボックスを選択して確定することにするにはどうしたらいいでしょうか?
ただたんにテキストをかえるだけではだめなようです。
そのコンボボックスのハンドルはわかっています。

wm_Settext文字を変更することはできたのですが内部的には確定されていないのか結果が反映されないのです


348 :デフォルトの名無しさん:2005/05/09(月) 21:24:51 ?#
>>347
CB_ADDSTRINGで文字列を追加して、帰ってきたインデックスをCB_SETCURSELで選択。

349 :321:2005/05/10(火) 09:58:23
>>322
あの、それはディレクトリごとだし、
ファイルの変更部分は通知されませんが。

350 :デフォルトの名無しさん:2005/05/10(火) 10:32:06
ReadProcessMemoryを使ってもことごとくNULLが返ります。アクセス権がないようなのですが解決方法を教えてください。
あとPROCESSENTRY32構造体のメンバth32ProcessIDにはProcess32Nextなどで最後に得たプロセスIDが格納されるのですか?


351 :デフォルトの名無しさん:2005/05/10(火) 10:49:53
>>349
ファイル単位で監視っていうのは無かったと思う。

352 :デフォルトの名無しさん:2005/05/10(火) 10:58:45
>>349
ディレクトリの変更がきたら自分で調べりゃいいだろ

353 :デフォルトの名無しさん:2005/05/10(火) 10:59:49
なんでもかんでもAPIに無いと、何もできないのだろうか

354 :デフォルトの名無しさん:2005/05/10(火) 12:20:28
>348
ありがとうございます
しかしそれでは目的のテキスト(CB_SETCURSELでセットしたインデックスのテキスト)は一瞬表示されますが
それが選択状態にはならず元にもどってしまいます

なにかいい方法はないでしょうか

355 :デフォルトの名無しさん:2005/05/10(火) 12:30:30

>>353を晒し上げ(´,_ゝ`)

356 :デフォルトの名無しさん:2005/05/10(火) 12:40:49
>>354
他のイベントで変な事してるんじゃないのか?

357 :デフォルトの名無しさん:2005/05/10(火) 12:45:30
そのようなこともないと思います
新規で試しにワードパッドのフォントを変えるものを作ってみましたが
同様でした。

コードは
SendMessage((HWND)コンボボックスのハンドル,CB_SETCURSEL,77,0);
念のためそのコンボボックスの親ウィンドウに
SendMessage((HWND)親ウィンドウのハンドル, WM_COMMAND,MAKEWPARAM(165, CBN_SELCHANGE),(LPARAM)(HWND)コンボボックスのハンドル);
と送ってみましたがそれでもダメでした

358 :デフォルトの名無しさん:2005/05/10(火) 12:48:32
>>357
>新規で試しにワードパッドのフォントを変えるもの

新規で作って検証するなら、
ウィンドウにコンボボックスのみを貼り付けて、
そのコンボボックスに CB_SETCURSEL を送るだけじゃないのか?

って言うか、外部プロセスのコンボボックスを変えようとしている?

359 :デフォルトの名無しさん:2005/05/10(火) 12:50:06
申し遅れましたがその通り外部のプロセスのコンボボックスです。


360 :デフォルトの名無しさん:2005/05/10(火) 12:51:08
やはりこれもwin98で影響を受けたsetforeground同様の制限をもらってしまうのでしょうか?

361 :デフォルトの名無しさん:2005/05/11(水) 01:28:05
質問なのですが
Win32において
Destoryを実行した場合
Destoryを実行されたWindowが一番最後にうけとるメッセージはなんなのでしょうか?
WM_NCDESTROYが最後でいいのでしょうか?

私的ライブラリでGUIをクラスライブラリ化したのですが
ウィンドウが破棄されたタイミングで自身のインスタンスにたいして
delete thisを行いたいのです。

MFCのほうではPostNcDestroyなるメソッドがあるっぽいのですが・・・
Win32オンリーの場合はどのように対処したらよいのでしょうか?

362 :デフォルトの名無しさん:2005/05/11(水) 01:30:29
つspy++

363 :デフォルトの名無しさん:2005/05/11(水) 01:53:31
>>361
それで良いと思う。気になるならMFCのソースを見てコードをまねれ。

364 :デフォルトの名無しさん:2005/05/11(水) 06:52:22
DestroyWindowを実行すると、WM_DESTROY、WM_NCDESTROYの順番でメッセージが送られる
その後のWM_QUITはウィンドウプロシージャでは受け取らない
よって、NCDESTROYが最後にウィンドウが受け取るメッセージ

365 :349:2005/05/11(水) 09:55:50
>>351-353
ありがとう。
無駄に重くなるけど、ディレクトリごと監視します。

>>350
ReadProcessMemoryの返り値はBOOLですよ。
0が返ってきたら、GetLastError()してエラーコードを見ましょうよ。

366 :デフォルトの名無しさん:2005/05/11(水) 11:59:41
>>365
あぁ?失敗したらヌルポが返るんだよデブ。もう原因わかったからどっか行っていいよ

367 :デフォルトの名無しさん:2005/05/11(水) 12:09:09
>>366
「ヌルポ」がcatchできないんですが^^

368 :デフォルトの名無しさん:2005/05/11(水) 13:30:36
>>366
まあしねよぶた

369 :デフォルトの名無しさん:2005/05/11(水) 14:28:27
StretchBltの縮小画質がありえないくらい
汚いんですが(ゴミが入るようなかんじ)、フリーか何かで代用のAPIないでしょうか?
教えてください


370 :デフォルトの名無しさん:2005/05/11(水) 14:31:15
何でもかんでも API って言えばいいと思ってる奴
             キタ━━━━(゚∀゚)━━━━ッ!!

371 :デフォルトの名無しさん:2005/05/11(水) 14:36:43
>>369
SetStretchBltMode はどのモードでやった?

372 :デフォルトの名無しさん:2005/05/11(水) 15:28:24
>>369
つ[DirectX]

373 :デフォルトの名無しさん:2005/05/11(水) 15:35:07
gdi plus

374 :デフォルトの名無しさん:2005/05/11(水) 16:14:07
IPicture::Render

375 :デフォルトの名無しさん:2005/05/11(水) 16:22:29
自前でリサイズしたら?

376 :デフォルトの名無しさん:2005/05/11(水) 16:57:48
誘導されてきました

フォルダの中のファイルの監視をしたいのですが
下のコードを実行して c:\test フォルダ内のファイルの内容を変更すると
メッセージボックスが二回表示されてしまいます。
変更は一回しかしていないのに二回でてしまうのですが
ここまでコードを短くしても出るので行き詰まってしまいました
二回検知してしまう動作が正しいのでしょうか?
どこかおかしくて二回出てしまうのならばご指摘お願いします。

HANDLE hFind = FindFirstChangeNotification( "C:\\test\0", FALSE, FILE_NOTIFY_CHANGE_SIZE );
if( hFind == INVALID_HANDLE_VALUE )
  return;

while( 1 )
{
  DWORD ret = WaitForSingleObject( hFind , INFINITE );
  if( ret == WAIT_OBJECT_0 )
  {
    MessageBox( NULL, "TEST", "Changed!", MB_OK );
    if( FindNextChangeNotification( hFind ) == 0 )
      return;
  }
}
FindCloseChangeNotification( hFind );


377 :デフォルトの名無しさん:2005/05/11(水) 17:54:36
>>376
変更手段によるかと。
例えばエディタの場合、一時ファイルを作ったりするから一回の変更と思っても
複数回ファイル操作が行なわれているかも。

実際、fopen(..., "w")を行なうと空のファイルができるのでこの段階で一回、
fclose()でバッファフラッシュが起きて一回、都合2回通知されることは実験で確認した。

378 :デフォルトの名無しさん:2005/05/11(水) 18:02:26
>>376
何でファイルを変更しているのか知らないけど、多くのソフトはファイルを一度
0 サイズにクリアしてから改めて書き込む (CreateFile() で CREATE_ALWAYS を
指定したり、fopen() で "w" を指定していたりなど) ので、
 1. 0 クリアで 1 回
 2. データの書き込みで 1 回
の合計 2 回、変更が検知される。
(試しに 0 バイトのデータを保存してみること)
さらに、ディスクキャッシュサイズごとに書き込むので、そのたびに
変更が検知される可能性もある。

379 :376:2005/05/11(水) 18:40:25
>>377
>>378
そういうことだったのですか!よく分かりました。
ファイルが変更されたあとフォルダのサイズが変わる?ので二回きている
とか色々考えていました
ちなみにファイルはテイストファイルでnotepadで書き換えていました

でも二回くるのはどうしようもないですね
ちょっと厄介になってきましたが
上手く一回だけ処理できるよう試行錯誤してみます

ありがとうございました

380 :デフォルトの名無しさん:2005/05/11(水) 18:54:06
テイストファイル(・∀・)!! ワラタ!!

381 :デフォルトの名無しさん:2005/05/11(水) 18:57:14
>>380
箸が転がっても笑う人?

382 :デフォルトの名無しさん:2005/05/11(水) 18:59:37
>>381
いやそれはさすがに                                               笑う

383 :デフォルトの名無しさん:2005/05/11(水) 19:11:28
笑う(・∀・)!! ワラタ!!

384 :デフォルトの名無しさん:2005/05/11(水) 19:17:41
  _  ∩
( ゚∀゚)彡 ワラタ!!ワラタ!!
 ⊂彡

385 :デフォルトの名無しさん:2005/05/11(水) 19:18:55
ここはハッピーなインターネットですね?

386 :デフォルトの名無しさん:2005/05/11(水) 20:12:21
WAVEファイルに格納されているサンプリングデータを取得するには、
WAVEファイルを自前で解析するしか方法はありませんか?
WAVE ファイルを解析するための API はないのでしょうか?

387 :デフォルトの名無しさん:2005/05/11(水) 20:17:27
WaveOut

388 :デフォルトの名無しさん:2005/05/11(水) 20:33:09
そもそもWaveファイルにしてもBitmapファイルにしてもファイル構造はどっちも単純だろうに。

389 :デフォルトの名無しさん:2005/05/11(水) 20:35:59
>>386
標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。

低レベル再生したいのなら、>>387のWaveOut系APIでも使えば良い。
再生中に、サンプルデータも自由に処理できるしね。

高レベルAPIでいいなら、PlaySound()やsoundPlaySound()で。


390 :デフォルトの名無しさん:2005/05/11(水) 20:43:59
解析したいと言ってるのにPlaySoundはないだろうw
ところでMCIってまだあるのかな。
考えたら5年ぐらいマルチメディア刑API触ってないや

391 :デフォルトの名無しさん:2005/05/11(水) 20:47:12
>>389
waveファイルってRIFF形式だった気がするんだが。
mmio〜系のAPIで操作できる・・・はず

392 :デフォルトの名無しさん:2005/05/11(水) 20:48:47
>>389
> 標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。

PCMとは限らないんだけど。。。


393 :デフォルトの名無しさん:2005/05/11(水) 20:52:55
>>390
もちろん残ってる。Win95の頃と実装は変わってるようだけど。

394 :デフォルトの名無しさん:2005/05/11(水) 22:19:33
>>386
作るのが面倒臭かったらこんなの使ってみたら?
Wave File Library(Windows95/98/Me/プログラミング)
ttp://www.vector.co.jp/soft/win95/prog/se214677.html

395 :デフォルトの名無しさん:2005/05/11(水) 22:25:02
宣伝乙。
いやしかし、既成ライブラリに頼るというのはこの場合正解だよ。
WavOutは使いやすいとは言い難いしな。

396 :デフォルトの名無しさん:2005/05/12(木) 01:11:31
ピクチャーコントロールにDirectXで描画するダイアログベースのツールを作ろうとしているのですが、
ピクチャーコントロールの更新されるタイミングが分からず困ってます。
DirectXの描画特有の問題かとも思ったのでDXスレで伺ったのですが、
なかなかレス頂けないみたいなのでこちらにも失礼します。

まずはアプリ起動時にDXで適当な矩形でも表示してみようと、
WM_INITDIALOGで矩形描画関数を呼んでみたのですが、
一瞬描画されたあと、ピクチャーコントロールの色で塗りつぶされてしまうようでした。
なので、WM_PAINT内でも同じように描画関数を呼んで見たのですが相変らず
起動時に矩形を表示してくれません。
(というかピクチャーコントロールの描画で消されているような感じ。)
WM_LBUTTONDOWN内などで描画すればきちんと表示されるのですが、
WM_MOVE内で呼んだ時などは、一度目の移動では表示されず、
二度目以降の移動では表示されるという、よく分からない挙動になっています。
どうしたらいいのでしょうか?

環境はW2k、VC6、DX9.0bです。よろしくお願いします。

397 :デフォルトの名無しさん:2005/05/12(木) 01:58:25
>>396
まずはDirectX描画域の背景を描画しない設定にする。
ダイアログのスタイルにWS_CLIPCHILDRENを適用、
コントロール側のWM_ERASEBKGNDで0以外の値を返す
これでちらつき・上書きは消えるはず。


398 :デフォルトの名無しさん:2005/05/12(木) 02:18:11
Win32API を使用したプログラムを実行したときに、コマンドプロンプトを待たせない方法はないのでしょうか?

例えば、コマンドラインから notepad を起動したとき、

 C:\>notepad[改行]
 
 C:\>
 (notepad が開く)

となりますが、自作のプログラムでは

 C:\>hogehoge[改行]
 (hogehoge が終了するまで待機状態)

となってしまいます。
これを解決するにはどうすればよろしいのでしょうか?

399 :デフォルトの名無しさん:2005/05/12(木) 02:23:26
>>398
コンソールアプリでビルドしてないか?

400 :398:2005/05/12(木) 02:28:36
ビルドというか、lcc-win32 でプログラムを作成し、

 C:\>lcc hogehoge.c
 
 C:\>lcclnk hogehoge.obj

というふうに実行ファイルを作成しています。
それとも、この環境では >>398 の問題を解決することは出来ないのでしょうか?

401 :デフォルトの名無しさん:2005/05/12(木) 02:46:14
Meadow2ってエディタについてくるfiber.exeってやつなら
C:\ > fiber.exe hoge.c  
ってすれば
「.c」拡張子のファイルをクリックした時に起動するプログラムがそのファイルを開いて
シェルにも処理がもどる。

402 :デフォルトの名無しさん:2005/05/12(木) 02:54:22
>>400
それは「Win32API」の話ではなく、特定の処理系の話なのでスレ違い

403 :398:2005/05/12(木) 02:58:49
すみません、説明不足でした。

エディタのことではなくて、自分で作成(コンパイル)した Win32API プログラムを実行したときに、
そのプログラムが実行したままシェルにも処理が戻るようなプログラムを作りたいのです。

 C:\>lcc hogehoge.c
 
 C:\>lcclnk hogehoge.obj
 
 C:\>hogehoge

 C:\>
 (hogehoge.exe は実行されたまま)

となるような hogehoge.c を作りたいのですが、どうすればよろしいのでしょうか?
プロセスやスレッドについて調べてみても、どうもうまく行きません。

404 :デフォルトの名無しさん:2005/05/12(木) 02:59:28
void FreeConsole(void);


405 :398:2005/05/12(木) 03:13:58
>>404
そんな関数があったんですね。
どうもありがとうございました!!m(_ _)m感謝感謝

406 :396:2005/05/12(木) 03:38:07
>>397
ありがとうございます。

>まずはDirectX描画域の背景を描画しない設定にする。
>コントロール側のWM_ERASEBKGNDで0以外の値を返す

この二つの意味は同じでしょうか?別の事を指してますか?とりあえず
DirectXで描画したいのはダイアログ内に配置したピクチャーコントロールなのですが、
これをサブクラス化してその自前プロシジャ内に
case WM_ERASEBKGND:
return 1;
と追加してみたのですが、変わりませんでした。

>ダイアログのスタイルにWS_CLIPCHILDRENを適用、
これはピクチャコントロールが乗ってる親ダイアログのプロパティで設定しても変わりませんでしたし、
ピクチャコントロール自体にSetWindowLongでWS_CLOPCHILDRENを設定してみても変わりませんでした。


407 :デフォルトの名無しさん:2005/05/12(木) 03:47:08
犯罪予告祭り会場
http://ex10.2ch.net/test/read.cgi/news4vip/1115834824/

408 :デフォルトの名無しさん:2005/05/12(木) 04:03:08
>>398
今の状態だとエクスプローラから実行するとコンソールが開くんでないかい。
それで構わないのならFreeConsoleでも使ってればいいんだけど、
そうじゃないのなら、lcclnkのマニュアルをよく読んどけ。

409 :デフォルトの名無しさん:2005/05/12(木) 05:37:12
Win32APIの話っていうより
そもそもWindowsプログラミングの

410 :デフォルトの名無しさん:2005/05/12(木) 06:34:19
>>376
何をしたいのかによるけど、
通知を何度受けるかわからない
という前提で作ったほうがいいですよ。

また通知を受けるたびに処理をしてたら重くなるので、
通知を受けたら、変更があったということだけ覚えておき、
それに対するアクションはその場ではしないほうがいいです。

もし通知に対してアクションをしたいのであれば、
1秒くらい待ってからやったほうがいいかも。

411 :デフォルトの名無しさん:2005/05/12(木) 10:40:44
ウインドウのタイトルや枠などの色の取得方法を教えてください。


412 :デフォルトの名無しさん:2005/05/12(木) 11:18:49
GetSysColor

413 :デフォルトの名無しさん:2005/05/12(木) 12:26:40
文字列が正当なURLであるかどうかを確かめるAPIと、
URLからホスト名などを抜き出すAPIはありますか?

414 :デフォルトの名無しさん:2005/05/12(木) 12:31:00
>>413
使ったことは無いけど、

>文字列が正当なURLであるかどうかを確かめるAPI
::UrlIs()にURLIS_URLを渡して確認する。

>URLからホスト名などを抜き出すAPI
::UrlGetPart()にURL_PART_HOSTNAMEを渡して切り出す

415 :デフォルトの名無しさん:2005/05/12(木) 14:58:39
>>414
できました。
ありがとうございます。


#shlwapi.dllには、自前で書くこともできるけど、面倒くさいから書きたくない処理をする関数がたくさんある気がする。

416 :デフォルトの名無しさん:2005/05/12(木) 16:22:36
MSはレジストリを使うことを推奨してるのに
レジストリを使うアプリが嫌われる理由は何?

417 :デフォルトの名無しさん:2005/05/12(木) 16:42:40
ユーザーが消しにくいから。

インストールしたフォルダを削除しても消えないからね。
まあそれが利点でもあるんだけど。

418 :デフォルトの名無しさん:2005/05/12(木) 17:03:32
レジストリをいじりまくるとレジストリファイルが断片化・肥大化するから。
Win9xの場合はそれが原因で不安定になることがあった。

もういい加減過去の話だが。

419 :デフォルトの名無しさん:2005/05/12(木) 17:08:54
.NETではXMLで保存するのが推奨されるとかどこかで読んだ気がするんだけど

420 :デフォルトの名無しさん:2005/05/12(木) 17:41:01
ちょっとしたツールだと、フォルダごとコピーすれば設定もコピーできて楽。

421 :デフォルトの名無しさん:2005/05/12(木) 18:15:16
しかしファイルで保存するにしてもユーザーのフォルダにしてほしいなあ
自分ちのマシンならどこでもいいが・・・

422 :デフォルトの名無しさん:2005/05/12(木) 19:53:11
ユーザのフォルダに設定ファイルを置くと、
1つのフォルダごとコピー・移動・削除
では済まなくなるので、レジストリと大差ないんだよね。
その割には、メリットがない。

EXEと同じフォルダにINIファイルを置くのは、
シングルユーザ当たり前のDOS時代の悪い慣習を引きずってると思う。

レジストリにすれば、ファイルのインストール先を気にしなくていいし、
レジストリをバックアップすれば、一括して設定をバックアップできるよね。

423 :デフォルトの名無しさん:2005/05/12(木) 20:06:10
便乗で質問ですが、
ユーザーのフォルダの取得って何を使えばよいですか?
ユーザー毎の設定を\Documents and Settingsの奥深くにある
フォルダに置きたい。

424 :デフォルトの名無しさん:2005/05/12(木) 20:10:22
>>422
初心者の発想だね

425 :デフォルトの名無しさん:2005/05/12(木) 20:17:34
>>423
GetEnviromentVariableで環境変数HOMEPATHを取得
USERPROFILEでもいい

426 :デフォルトの名無しさん:2005/05/12(木) 20:23:18
2000、XPでもレジストリのコンパクションはできないから肥大化する一方

427 :デフォルトの名無しさん:2005/05/12(木) 20:37:49
>>425
ありがとう。

428 :デフォルトの名無しさん:2005/05/12(木) 20:41:31
なんだよ、レジストリってのは欠陥システムだな。

429 :デフォルトの名無しさん:2005/05/12(木) 20:42:21
ややこしいことが1つの売りだったんだよ
商用とかシェアウェアにとっては

430 :デフォルトの名無しさん:2005/05/12(木) 20:56:28
>>423,425

ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnw2kcli/htm/AppSpecDesk5.asp

SHGetFolderPath() を使ったやり方が書いてある。
こっちの方が MS の推奨ということか?

431 :デフォルトの名無しさん:2005/05/12(木) 22:14:00
SH〜系ってなんかアバウトというか、信用ならねーって感じのAPI群だけど、
それがMS推薦っぽいね。

432 :デフォルトの名無しさん:2005/05/12(木) 23:35:08
なんていうかもうapi関数大杉('д`)

433 :デフォルトの名無しさん:2005/05/13(金) 00:29:19
>>426
レジストリのサイズは消せば小さくなると思うけど・・・
VS.NETをインストール中に、一時的にものすごく大きくなるけど、インストール終わると減るし。

>>424
他に良い方法があれば教えてください。

1つのINIファイルの中にユーザごとに設定を書くと、
一人の設定を他所に移すのが難しくなるよね。

ユーザ別にINIファイルを分けると、
ユーザ名が変わったときにファイル名を変更しないといけない。

ユーザ名の代わりにSIDを使うと、他所のドメインやPCに移したら困るし。



434 :デフォルトの名無しさん:2005/05/13(金) 00:52:58
>>433
キーや値を削除してもサイズが減らない、それがWINDOWSのレジストリ

435 :デフォルトの名無しさん:2005/05/13(金) 00:55:48
VACUUMかければいいじゃない

436 :デフォルトの名無しさん:2005/05/13(金) 01:39:36
>>435
詳しく

437 :デフォルトの名無しさん:2005/05/13(金) 01:42:17
そりゃPostgreSQL

438 :デフォルトの名無しさん:2005/05/13(金) 01:50:05
どうせレジストリがパンクする頃には
新ウィンドウズが出てるんだろ。
XPももう過去の物だろw

439 :デフォルトの名無しさん:2005/05/13(金) 04:05:29
Snes9xにキーの入力情報送りたいんだけど
SendMessageやPeekmessageでは矢印や
ABYXに相当するボタンの情報を送っても無反応です。
(F1や1等ゲームというよりSnesの機能に相当するものは動きます。)

(例えばキーボードのAにSnesのAを割り当ててSendMessage送っても効果なし)

なんかこれ解消するAPIないっすか?


440 :デフォルトの名無しさん:2005/05/13(金) 04:47:21
Peekは受ける側だったorzPostMessageね

441 :デフォルトの名無しさん:2005/05/13(金) 04:54:38
DirectInput使ってるからだろ。

442 :439:2005/05/13(金) 05:37:47
どうにかならんもんですかね。


443 :デフォルトの名無しさん:2005/05/13(金) 05:56:07
SendInpu()とかはだめ?

444 :439:2005/05/13(金) 06:14:58
試してみようと思ったらサンプル少ねぇ
MSいってみます

445 :439:2005/05/13(金) 12:56:46
>>443
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
後世の為に置き去りメモ

SendInputを使う為にstdafx.hの中に

#define _WIN32_WINNT 0x0501
#define WINVER 0x0501

を宣言。呼び出したい場所で

UINT ret;
INPUT tt;
tt.ki.wVk=0x41;
tt.ki.dwFlags=0;
tt.ki.time=0;
tt.type=INPUT_KEYBOARD;
ret=SendInput(1,&tt,sizeof(INPUT));

押しっぱになるのでdwFlagsで適度に補正してやる必要あり。

446 :デフォルトの名無しさん:2005/05/13(金) 13:43:20
GetWindowThreadProcessIdなどで取得したプロセスIDのベースアドレスを求めるにはどうしたらいいのでしょうか?教えてくださいお願いします

447 :デフォルトの名無しさん:2005/05/13(金) 15:23:29
>>446
プロセスIDのベースアドレス
この時点で、何か間違ってるよ。

いったい何がしたいの?

448 :デフォルトの名無しさん:2005/05/13(金) 16:10:32
うるせぇカスだなぁ。わかんねぇならでしゃばんなよボケが。
readprocessで戻ってきたハンドルのベースアドレスだよタコ。ほんとお前みたいカスがくると気分悪くなるぜ。
お前のせいでまたこんなレスしてしまった俺は結局自分で解決するハメになると。ほんとうぜぇ・・・

449 :デフォルトの名無しさん:2005/05/13(金) 16:17:25
スレのレベルが急速に低下してまいりました。

450 :デフォルトの名無しさん:2005/05/13(金) 16:18:10
お前が読み取りを始めたいアドレス=ベースアドレス(ReadProcessMemory()では)。
プロセスID→プロセスハンドルにはOpenProcess()がある。

451 :デフォルトの名無しさん:2005/05/13(金) 16:26:00
だからReadProcessMemoryで指定するベースアドレスがわかんねぇから教えろっつってんだよ。あ?わかんねぇんだろ?お?あぁ?コラ

452 :デフォルトの名無しさん:2005/05/13(金) 16:27:23
      __ ┌┬┬┬┐ __
    ―――┴┴┴┴┴―――――、
   /.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ ||     __________
  /.    ∧// ∧ ∧|.||      |||   ||  /
 [/____(゚_//[ ].゚Д゚,,) ||___|||   || <  >>448,451を迎えに来ました
 ||_. *  _|_| ̄ ̄ ∪|.|.       .|ヽ. _||  \__________
 lO|o―o|O゜.|二二 東|.|京 精神 .病院 ||
 | ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
   ̄ ̄`ー' ̄   `ー'  `ー'   `ー'


453 :デフォルトの名無しさん:2005/05/13(金) 16:52:25
>>451
お前がやりたいこと次第。

454 :デフォルトの名無しさん:2005/05/13(金) 17:03:08
おまえらわかんねーならレスするなつってんだろ!

455 :デフォルトの名無しさん:2005/05/13(金) 17:10:11
>>454
ごめんよ、おれもわかんねーや

456 :デフォルトの名無しさん:2005/05/13(金) 17:57:30
>>454
http://www.microsoft.com/japan/msdn/subscriptions/resources/additionalincident.aspx
http://www.microsoft.com/japan/msdn/subscriptions/resources/support.aspx


457 :デフォルトの名無しさん:2005/05/14(土) 01:12:53
おいおい、騙りを何相手してやってんだ?

458 :デフォルトの名無しさん:2005/05/14(土) 04:00:39
うるせーよ。煽りたいだけのやつはしゃしゃりでんなよカスどもが
ほんと使えねーなー

459 :デフォルトの名無しさん:2005/05/14(土) 04:10:02
リソースエディタで作ったダイアログ内のボタンコントロール上に
矩形を描画しようとしているのですが、全く表示されません。
TextOutしてみても何も文字が表示されません。
どこがおかしい部分があるでしょうか?
何か他の部分で、ここがあやしそう、などありましたら教えてください。

hdc=GetDC(hWnd);//hWnd=GetDlgItemで取得したボタンのハンドル
hPen=CreatePen(PS_SOLID,1,RGB(r,g,b));//rgbは適当な値が入ってる
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hPen);
SelectObject(hdc,hBrush);
Rectangle(hdc,0,0,100,100);
TextOut(hdc,0,0,"iii",3);

460 :459:2005/05/14(土) 04:22:41
WM_PAINT内でやったらうまくいきました。
WM_INITDIALOG内でやってたのでダメだったようです。

461 :459:2005/05/14(土) 05:02:09
度々すいません。やはり挙動が変です。
今までデバイスコンテキストの取得はGetDCを使ってたのですが、
GeginPaintとかいうのを使った方がいいらしいので書き換えました。
ですが、ダイアログ起動時に四角形は描画されるものの、ボタン自体が描画されません。
ボタンの部分を押してみるとボタンは出現するのですが、
今度は四角形が消えてしまいます。どうしたらよいのでしょうか。

//ダイアログのプロシジャ内
case WM_PAINT:
DrawRect(GetDlgItem(hWnd,IDC_BUTTON),100,100,0);
return FALSE;

//矩形描画関数
void DrawRect(HWND hWnd,int r,int g, int b){
PAINTSTRUCT paint;
HDC hdc;
HBRUSH hBrush;
RECT rct;
GetClientRect(hWnd,&rct);//hWnd はボタンのハンドル
hdc=BeginPaint(hWnd,&paint);
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hBrush);
Rectangle(hdc,4,4,rct.right-5,rct.bottom-5);
EndPaint(hWnd,&paint);
ReleaseDC(hWnd,hdc);
DeleteObject(hBrush);
}

462 :デフォルトの名無しさん:2005/05/14(土) 06:47:52
>>446
ほんとここの無知どもはウザイよね。
おまえの気持ちはよくわかる。
特に>>449の馬鹿は、わかんねーのに答えるからレベル低下してるってのが
どうやら理解できないらしい。

というわけだから、わかるおれが答えてあげよう。
全部説明するとなると大変なのでかいつまんで言うと、
まずプロセスといっても中で実行されてるのはスレッドという単位だ。
つまりプロセスで実際に動いているスレッドを特定する必要がある。
これはいろんな方法があるので別途AdvancedWindows読むなり
すればわかる。PSAPIとかでググるのもいいかも。
スレッドを特定するまでできたら、そのスレッドに対して一旦
SuspendThreadなりで停止させ、GetThreadContextを呼ぶ。
すると現在の正確なEIPが得られる。

EIPが得られたら、そのアドレスからこんどはプロセスに
割り当てられているメモリのベースアドレスを特定する。
メモリのチェインをたどっていけばEIPの範囲に収まる
ブロックが見つかるはず。
それが質問のベースアドレスということになる。
まあPSAPIを使わなくても、たとえば普通のアプリなら
0x400000以降がベースアドレスだとか決め打ちされてる。
もちろんこの辺を細工しているアプリもある。
これの特定はプロセスにロードされているコードセクションの
PEヘッダ部分を見るのが手っ取り早い。
一番早いのは、そのプロセスに侵入してしまうという方法。
この辺のやり方の詳細を知りたいなら、やっぱり
AdvancedWindowsを読んどくのが良い。

463 :デフォルトの名無しさん:2005/05/14(土) 07:13:03
結局AdvncedWindows嫁って結論になったけど、
プロセス・スレッド周りの質問は説明しようとすると長くなるからね。
こんな糞スレだと、その説明が正確とも限らないし。
とりあえずやり方だけでも知っとけば道は開ける。
やっぱあの本の存在は偉大なんだよなあ。

ちなみにAdWinにはPEヘッダの読み方は載ってないので、
その辺はWebか何かで調べるしかない。
pe formatかなんかでぐぐれば出てくる。
PEヘッダの構造を理解するのにはかなり時間がかかると思うけど、
プロセスを解析する近道はPEヘッダなので、この辺はぜひ調べて欲しい。

464 :459:2005/05/14(土) 08:41:54
いろいろ試してるのですが解決しないので
簡略化してUPしました。ソースとVC6のリソースが入ってます。
おかしい所を指摘していただけると助かります。

ダイアログ内にボタンが二つあります。
起動時にボタンの上に白い四角が表示されるのが理想なのですが、
なぜかボタン自体が描画されません。
ボタンを押すと色選択ダイアログが開き、
選択した色の四角がボタンの上に表示されるようにしたいです。
ですが、このサンプルではなぜか、一方のボタンで色を選択すると
もう一方のボタンの上の四角が消えてしまいます。
常に表示されているようにしたいです。
よろしくお願いします。

ttp://gamdev.org/up/img/2660.zip

465 :デフォルトの名無しさん:2005/05/14(土) 08:50:44
>>461
ボタンはダイアログの子ウィンドウ。
WM_PAINTが来たのはダイアログであって、ボタン(子ウィンドウ)に来たわけではない。
だからそのコードは不正。

で、そういうことがしたければオーナードローしなさい。

466 :デフォルトの名無しさん:2005/05/14(土) 08:53:32
>>464
>おかしい所を指摘
あんたの頭。

以下解説を書こうとしたら>465に先を越されたので割愛。

467 :デフォルトの名無しさん:2005/05/14(土) 12:05:12
>>464
オーナードローの他に、サブクラス化すると言う手もある。
どちらも詳細はググルか ttp://www.kumei.ne.jp/c_lang/ 辺りを探せ。

468 :デフォルトの名無しさん:2005/05/14(土) 12:11:23
>>448
> うるせぇカスだなぁ。わかんねぇならでしゃばんなよボケが。

人に文句つける前に、自分の日本語を見直せよ。

[ >>446より ]
> プロセスIDのベースアドレスを求めるには

・プロセスID
  プロセスを一意に識別するための識別子

識別子にベースアドレスなどない。
君の質問は、

 「整数値 1 のベースアドレスを求めるにはどうすればよいか?」

などと言っているのと大差ない。
日本語は正しく使え。

469 :デフォルトの名無しさん:2005/05/14(土) 12:48:59
>>462-463
ありがとうございます。

>>468
カスは黙っとけ(プw

470 :デフォルトの名無しさん:2005/05/14(土) 12:59:53
質問です
ウィンドウを何よりも最前面に表示するにはどうすればいいのでしょうか?
DirectDraw等で全画面+最前面になってる物のさらに上に表示したいです
普通に最前面にしただけでは無理でした orz

471 :459:2005/05/14(土) 13:09:56
>>467
サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
ボタンを押したらColorChooserダイアログを出して色を選択し、
ボタン上の四角に反映させたかったのですが、
押された後ではボタンのイベントは発生しないので、
オーナードローでは次に押すまで色が反映されないのでダメでした。
結局、消極的な方法で妥協しました。ありがとうございました。

472 :デフォルトの名無しさん:2005/05/14(土) 13:28:52
DirectDrawサーフェイスの前に持ってくるにはクリップするしかない

473 :デフォルトの名無しさん:2005/05/14(土) 13:51:58
質問です。

@ウインドウ作成してアクティブな状態にする
Aマウスでウインドウ外をクリックして非アクティブにする
Bタイマーで定期的に ShowWindow や SetForegroundWindow などを呼ぶ

AとBを繰り返すと、一回目は最前面にウインドウが表示されるのに、2回目以降は最前面に表示されません。
どうすれば最前面に表示することが出来るのでしょうか?

よろしくお願いします。


474 :デフォルトの名無しさん:2005/05/14(土) 14:04:12
>>473
CreateWindowEx(WS_EX_TOPMOST, ...

>>470のような高度な要求をしなければこれでいい。


SetForegroundWindow()は2000/XPで挙動が変更されたはず。

475 :470:2005/05/14(土) 14:24:43
>>472
まえゲームで全画面+最前面なものをしてたときに、
なんかの拍子で、最前面表示してた後ろのWinampがゲーム画面内にずっと表示されたままになったので
なにかほかに方法があるのかなと思ったのです orz
#Winampは再生中の時間もちゃんと表示され操作も可能でした

476 :デフォルトの名無しさん:2005/05/14(土) 15:18:29
>>475
ttp://saw.minidns.net/software/index.html#soft09
こーゆーの使うとかじゃ駄目か?

477 :470:2005/05/14(土) 15:41:59
>>476
某MMORPG用のツールなので窓化はむりぽいです
公認ツールとして交渉中なので orz

478 :デフォルトの名無しさん:2005/05/14(土) 19:22:54
ゲームのウィンドウをオーナーに指定する
DirectDrawSurfaceはGDIのクリッピング領域に従わないと思うから
ちゃんと描画されない気がするけど

479 :デフォルトの名無しさん:2005/05/14(土) 19:30:28
だからDirectDrawClipperでやるしかないって

480 :デフォルトの名無しさん:2005/05/14(土) 21:57:59
>>471に亀レス

> ボタンを押したらColorChooserダイアログを出して色を選択し、
> ボタン上の四角に反映させたかったのですが、
そういうボタンならサクラエディタなるオープンソースのテキストエディタに
あるからソースを参照にしてみるのはどうかな?
ちなみにサクラエディタではオーナードローで描画してるよ。

> 押された後ではボタンのイベントは発生しないので、
> オーナードローでは次に押すまで色が反映されないのでダメでした。
これはどこかソースがまずいんじゃない?

オーナードローは大した手間ではないし、コントロール上で自分の
好きなように描画する定石なんで知ってて損は無いよ。

あと、
> サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
こいつは実装次第でどうにでもできる。

481 :デフォルトの名無しさん:2005/05/14(土) 22:53:41
ReadProcessMemoryなんていうスケベなAPIを使うのに、
自力で使いこなせないようなレベルの低い香具師って、
ろくでもないことをやろうとしている人間の屑だろうな。

どうせゲームのチートツールやウィルス等の怪しげなものを作ろうとしてるんだろ?

いいかげんウザイので、答えを教えてやる。
VirtualQuery()だ。
もうこのスレに出てくるなよ。

482 :デフォルトの名無しさん:2005/05/15(日) 09:49:47
>>481
カスが必死にググッてその様かwwwwwそんなもん質問する前から知ってますがwwwwwwwいい加減カスは黙ってチンポでも弄ってろwwwww

483 :デフォルトの名無しさん:2005/05/15(日) 09:53:03
最近w使う人増えたね。

484 :デフォルトの名無しさん:2005/05/15(日) 10:51:41
Windows, DWORD, WM_*

485 :473:2005/05/15(日) 11:02:32
>474
レスサンクス
早速試してみましたが駄目でした


486 :デフォルトの名無しさん:2005/05/15(日) 11:15:18
>>485
SetWindowPosでHWND_TOPMOS指定したら?

487 :デフォルトの名無しさん:2005/05/15(日) 12:04:33
レスサンクスと書かれると、less thanks と読んでしまう。

488 :デフォルトの名無しさん:2005/05/15(日) 12:48:46
GetLastErrorの使い方がわかりません

489 :デフォルトの名無しさん:2005/05/15(日) 12:52:49
MSDNに載ってます

490 :デフォルトの名無しさん:2005/05/15(日) 13:00:50
使い方は載ってません

491 :デフォルトの名無しさん:2005/05/15(日) 13:05:41
>>490
プログラムなんかやめたほうがいいよ

492 :デフォルトの名無しさん:2005/05/15(日) 13:28:36
載ってます

493 :デフォルトの名無しさん:2005/05/15(日) 13:57:40
msdnのトップに出てる赤シャツの男って凄い頭よさそうだよな。
腕組みながらあの自信に満ち溢れた顔なんかとくに。

494 :デフォルトの名無しさん:2005/05/15(日) 15:11:36
どうも、赤シャツの男です。

495 :デフォルトの名無しさん:2005/05/15(日) 15:18:03
>>494
IQいくつ?

496 :デフォルトの名無しさん:2005/05/15(日) 15:25:09
80−130です

497 :デフォルトの名無しさん:2005/05/15(日) 15:43:31
血圧かよ!

498 :デフォルトの名無しさん:2005/05/15(日) 16:13:14
漏れのIQは 10D10+5 だぜ。

499 :デフォルトの名無しさん:2005/05/15(日) 17:56:00
期待値で60…低っ

500 :デフォルトの名無しさん:2005/05/15(日) 18:00:55
急速にスレの質が低下してまいりました

501 :デフォルトの名無しさん:2005/05/15(日) 18:45:11
だがそれがいい

502 :デフォルトの名無しさん:2005/05/15(日) 20:08:30
sinunayomajide!

503 :デフォルトの名無しさん:2005/05/15(日) 20:21:01
>>498,499
標準が 3d6 なんだから激高だろ。


504 :デフォルトの名無しさん:2005/05/15(日) 22:46:03
もうダイスから離れろ。

505 :デフォルトの名無しさん:2005/05/15(日) 23:53:10
winiqcfg.exe


506 :473:2005/05/15(日) 23:56:07
>486
レスサンクス
早速試してみましたが駄目でした

507 :デフォルトの名無しさん:2005/05/16(月) 00:37:11
MessageBox関数には
printf("%d",i);
みたいに引数を渡すことは出来ないのでしょうか?

508 :デフォルトの名無しさん:2005/05/16(月) 00:40:02
CString tmp; tmp.Format("%d", i); MessageBox(tmp);

509 :デフォルトの名無しさん:2005/05/16(月) 00:41:14
MessageBox関数は無理。

自分で作ってもわけないよ。こんなやつ
ttp://www14.big.or.jp/~ken1/tech/tech20.html


510 :デフォルトの名無しさん:2005/05/16(月) 00:44:21
>>509
どうもありがとうございます。
さっそく続きを作っていこうと思います。

511 :デフォルトの名無しさん:2005/05/16(月) 01:54:21
sprintfをすっとばすのかい・・・

512 :デフォルトの名無しさん:2005/05/16(月) 02:31:58
>>495
グラハム数くらいです

513 :デフォルトの名無しさん:2005/05/16(月) 14:11:28
string形で宣言と同時にサイズだけ指定することってできますか?

514 :513:2005/05/16(月) 14:13:04
形じゃなくて型だった

515 :デフォルトの名無しさん:2005/05/16(月) 14:14:59
>>513
スレ違い

516 :513:2005/05/16(月) 14:25:47
>>515
ほんとだ!
C++だった。すいませんでした。

517 :デフォルトの名無しさん:2005/05/16(月) 20:18:32
APIで手書きしてるとプロシジャ間で値の受け渡しとかしたいとき
どうしてもグローバルが多くなるんですけど、
皆さんはどうやって解決してますか。

518 :デフォルトの名無しさん:2005/05/16(月) 20:22:31
>>517
コールバックデータに入れるだろ、普通。

519 :デフォルトの名無しさん:2005/05/16(月) 20:40:33
>>518
是非とももう少し詳しく解説お願いします。

520 :デフォルトの名無しさん:2005/05/16(月) 20:43:08
>>519
つまり、受け渡したいデータを構造体にまとめて、
関数の引数に渡すってことだ。それだけだ。

521 :デフォルトの名無しさん:2005/05/16(月) 20:45:23
>>520
解りやすっ
別人だけどありがとうございました。

522 :デフォルトの名無しさん:2005/05/16(月) 20:53:49
どうやって入れますか?

523 :デフォルトの名無しさん:2005/05/16(月) 20:55:29
そういやlparamとかを
構造体のポインタに型変換してよく使ってるもんなー

524 :デフォルトの名無しさん:2005/05/16(月) 20:56:28
LPARAMはx64でもポインタが入るんだっけ?

525 :デフォルトの名無しさん:2005/05/16(月) 21:03:03
LPARAMはそもそもそのための引数だからな

526 :デフォルトの名無しさん:2005/05/16(月) 21:23:10
64bit環境でのWin32 APIを使用したプログラミングってどうなるんだろう。
とくに、ポインタ関係。
64bitのプログラムは、64bit用の新しいAPIを使うのかな

527 :デフォルトの名無しさん:2005/05/16(月) 21:43:00
普通に考えてそうなんじゃね?
今でも残ってる16bit版みたいに互換性が必要なヤツ以外は

528 :デフォルトの名無しさん:2005/05/16(月) 21:47:08
>>526
適切に作ればソースはそのままでいけることになっている。

W/LPARAMは64ビット化されていて、それぞれUINT_PTR/LONG_PTRからのtypedefになっている。
その〜_PTRってのはポインタと同じサイズの整数型、つまりWin64では64ビットになる。
DWORD_PTRなんてわけわからんものもあるが。

一部のAPIはそれに対応した版が追加されている。(SetWindowLongPtrなど)

529 :デフォルトの名無しさん:2005/05/16(月) 21:52:15
Win32の定義から考えると、変更をしてないならDWORD_PTR = LONG_PTRじゃね?

530 :526:2005/05/16(月) 22:02:38
あ……64bit環境でwin32って変だな。
64bitのWindowsのAPIを利用したプログラミングと言ったほうがいいのかな。

32bitのバイナリはエミュで走らせるからいいとして、
64bitはtypedefを変えているからソースはそのままでコンパイルしなおすだけで動くというわけですか。


でも、本当に完全に、「適切」に書いている人ってどれぐらいいるんだろう。
ポインタが4バイトで、int型も4バイトってのが前提なソースを書いている人もかなり居そうなんだけど。
typedefされて、さらに何重にもdefineされているあの変数名をそのまま使っていない人もかなりいそうな気がする。

531 :デフォルトの名無しさん:2005/05/16(月) 22:15:36
>>529
Win32ではDWORD_PTRはunsigined long _w64からのtypedefdeで、ULONG_PTRもそこからtypedefされている。
わけわからんって書いたのはDWORDは32ビットということ(x86では)なんだから、
DWORDと名乗る型に32ビットではないものがあるというのがわけわからんと言いたかったから。

>>530
これがすべてを物語っている。
SetWindowLong の検索結果のうち 日本語のページ 約 2,980 件
SetWindowLongPtr の検索結果のうち 日本語のページ 約 44 件

ちなみにVCではint/longは4バイトのまま。long/LONGをsigned DWORDとして使っているから永遠に(I)LP64へは移れないだろうな。

532 :デフォルトの名無しさん:2005/05/16(月) 22:22:13
>>531
そんなこと言ったって、Win32のDWORDは現にunsigned longのtypedefなんだしさ・・・
DWORDは32bitと決まってるならunsigned longのtypedefはおかしいんじゃ?
あれ?longって規定は32bitだっけ・・・?

533 :デフォルトの名無しさん:2005/05/16(月) 22:31:47
>>532
それはVCやその他Win16/32用コンパイラが(unsigned )longを32bitにしていたのを利用しただけ。
Cができたときからstdint.hがあれば間違いなくtypedef uint32_t DWORD;になっていただろう(と信じたい)。

ちなみにC/C++の規格を見るとlongは32ビット以上が必要と言える。

534 :デフォルトの名無しさん:2005/05/16(月) 22:36:06
マウスフックです。教えてください。

ウィンドウをクリックしたまま、そのウィンドウを出て、
別のウィンドウに移るとWM_MOUSEMOVEやWM_LBUTTONUPが
飛んでこなくなるんですけどなんでですか?
初めにWM_LBUTTONDOWNでセットしたグローバル変数にも
参照できなくなります。

誰か教えてくださいmm(__)mm

535 :デフォルトの名無しさん:2005/05/16(月) 22:59:44
>>534
フックプロシージャは DLL 内に置いてあるか?
あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
プロセスごとにグローバル変数の実態も変わるからな。

536 :534:2005/05/16(月) 23:02:19
返事ありです。

>フックプロシージャは DLL 内に置いてあるか?
もちろん置いてます。
>あと、DLL の場合 #pragma data_seg("shared") に包んでやらないと
>プロセスごとにグローバル変数の実態も変わるからな。
まさにそんな感じです。ちょっと調べてみます。

またわからないことあったら教えてください。

537 :デフォルトの名無しさん:2005/05/17(火) 00:01:37
すいません、教えて下さい。

親ウィンドウにスタティックコントロールを子ウィンドウとして置き、ここに目的の描画処理を行っています。
で、この子ウィンドウのスクロールバーが上手く動きません。
具体的には
1.ウィンドウにSetFocusしない限りWM_VSCROLL/WM_HSCROLLが来ない
2.スクロールバーをドラッグしてもWM_VSCROLL/WM_HSCROLLが来ない
3.それどころかドラッグしてもポインタが動かない
4.にも関わらず、スクロールバー上での右クリックメニューからのスクロールは可能

1は大体諦めて、SetFocusした後はスクロールするんだからと妥協しましたが・・・。
2〜4がいまひとつ納得いきません。

子ウィンドウ上でドラッグなどしつつ届くメッセージをチェックしたところ、WM_NCHITTESTくらいしか来ていません。
WM_NCHITTESTを拾って、スクロールバー上の座標ならHTVSCROLL/HTHSCROLLを返すようにしてみましたが、効果なし。

使用しているのがスタティックコントロールだというのが主要因かとは思いますが、こちらも別件で問題が発生して頓挫しています。
(ResisterClassExしたクラスでCreateWindowExが失敗する)
よい打開策はありませんでしょうか?
一応、別にスクロールバーコントロールを作成するという案はありますが、修正箇所が多くて二の足を踏んでいます。
これしかない、というのであれば別コントロール案を採用します・・・。

538 :デフォルトの名無しさん:2005/05/17(火) 00:26:25
int が64ビットじゃないなんて
なんのための64ビットだよ?


539 :デフォルトの名無しさん:2005/05/17(火) 00:33:55
もちろんメモリマップを広げるためでしょ。
2Gオンメモリで読み込みなんてそのうち当たり前になってくるかも。

540 :526:2005/05/17(火) 00:34:44
sizeof(int) == 4と決め付けた既存のソースが多いからじゃないのかな。
int型のサイズを変えて既存のソースを動かせなくするより、
64bitのintは__int64型にするなどとしてしまったほうが都合がいいのでは?

541 :デフォルトの名無しさん:2005/05/17(火) 01:30:48
数年前に同じような話の展開を見たことがあるな・・・
あのころは16bit->32bitだったが・・・

542 :デフォルトの名無しさん:2005/05/17(火) 01:47:34
そんなのコンパイルオプションで32ビットにできるようにすればいいだろうに。
デフォルトでは64ビットにしておけよ。
なんでクソソースに合わせなきゃならんのだよ?
できの悪いほうに合わせるなんてまるで日本の教育だな。


543 :デフォルトの名無しさん:2005/05/17(火) 02:01:25
int は 32bit の方が良いな。
それよりも short 16bit、int 32bit、long 64bit の方が
型の意味的にも綺麗なんだけどなぁ。




544 :デフォルトの名無しさん:2005/05/17(火) 02:28:34
>>542
俺らに当たってもどうしようもなかろ?


545 :デフォルトの名無しさん:2005/05/17(火) 07:08:06
    SHFILEINFO shfInfo;
    ::SHGetFileInfo( Ext, NULL, &shfInfo,
                     sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_ICON | SHGFI_SMALLICON );
で関連づけられているアイコンを取得しようとしています。ワードのファイルの場合"*.doc"でうまくいきますが、
エクスプローラのフォルダやドライブのアイコンを取得したい場合どのようにすればよいのでしょうか?
Shell32.DLLから決めうちで取得してもよいのですが、将来OSの仕様が変わったときが心配です。

546 :デフォルトの名無しさん:2005/05/17(火) 09:58:24
お一人様ご案内〜

★初心者にVisual C++を教えるスレ★ Part19
http://pc8.2ch.net/test/read.cgi/tech/1116209988/35
> ドライブ名をすべて列挙するにはどうしたらよいのでしょうか?

GetLogicalDrives
GetLogicalDriveStrings
どちらでも好きなほうをどうぞ。

547 :デフォルトの名無しさん:2005/05/17(火) 14:19:16
HeapAllocとVirtualAllocの違いというか、長所ってどんなんでしょうか?
ヒープ領域って1アプリ(?)辺り、如何ほど頂けるのでしょうか?
最後に、VCでのmalloc = HeapAllocと考えてよろしでしょうか?

548 :デフォルトの名無しさん:2005/05/17(火) 15:49:23
>>547
大雑把に言うと
VirtualAllocはプロセスのメモリ空間から直接メモリを割り当てる。だからオーバーヘッドがでかい。
HeapAllocは一旦独自のヒープをVirtualAllocで確保し、そこから必要なだけ切り出してくる。

だからこまごまとしたメモリ(数MBまで)の確保にはHeapAllocが、広大なメモリの確保にはVirtualAllocが適している。

549 :デフォルトの名無しさん:2005/05/17(火) 15:54:24
>>547
VC持ってるなら、mallocのソースもあると思うから読んでみるよろし

550 :デフォルトの名無しさん:2005/05/17(火) 16:05:43
今Virtualとか関係無くなってないか?

551 :547:2005/05/17(火) 16:21:53
勉強になりました
どうも

552 :デフォルトの名無しさん:2005/05/17(火) 16:40:53
時代はパーシャル

553 :デフォルトの名無しさん:2005/05/17(火) 16:42:40
健さんハッケソ

554 :デフォルトの名無しさん:2005/05/17(火) 18:31:51
文太さんじゃねーのか?

555 :デフォルトの名無しさん:2005/05/17(火) 18:33:03
ソーダッタ

556 :デフォルトの名無しさん:2005/05/17(火) 18:37:54
朝日ソーラじゃけん

557 :デフォルトの名無しさん:2005/05/17(火) 20:22:28
○<天ーん!

||
ω


558 :デフォルトの名無しさん:2005/05/17(火) 20:37:06
>>550
適当なこと言うなよ。
VirtualAllocとHeapAllocではメモリをどこから持ってくるかが違う。
ただしHeapAllocでデフォルトヒープのみを使う場合は
GlobalAllocやLocalAllocしても同じ。

559 :デフォルトの名無しさん:2005/05/17(火) 21:16:38
さあ今日もこの合言葉で締めましょう。

「AdvancedWindows読め」

560 :デフォルトの名無しさん:2005/05/17(火) 21:19:03
HeapCreateの解説
>If dwMaximumSize is zero, the heap is growable. The heap's size is
>limited only by available memory. Requests to allocate blocks larger
>than 0x7FFF8 bytes do not automatically fail; the system calls the
>VirtualAlloc function to obtain the memory needed for such large blocks.

561 :デフォルトの名無しさん:2005/05/17(火) 21:44:02
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngenlib/html/msdn_heapmm.asp

562 :デフォルトの名無しさん:2005/05/17(火) 22:00:48
AdvancedWindowsの存在がなかったらWindowsプログラミング挫折してたかも。
それぐらい凄い本。 
本来MSDNに含まれるべきだが商売汚いM$は絶対そんなことしない。

563 :デフォルトの名無しさん:2005/05/17(火) 22:13:32
MicrosoftPressのJeffreyRichter著の本は他のもオススメできると思う。
ProgramingWindows2000とか。

564 :デフォルトの名無しさん:2005/05/17(火) 22:23:21
>>562
乞食臭い

565 :デフォルトの名無しさん:2005/05/17(火) 22:39:20
>>564
UNIX板やLinux板でその発言してみろ
泣いて向かってくるぞ

566 :デフォルトの名無しさん:2005/05/17(火) 22:42:15
WindowsAPI

567 :デフォルトの名無しさん:2005/05/17(火) 23:01:07
AdvancedWindowsは読んだことないけどな・・・。

VirtualAllocとHeapAllocを
MSDNライブラリで引いてみりゃ、
その違いはすぐにわかるでしょ。

568 :デフォルトの名無しさん:2005/05/18(水) 00:22:04
文字を一文字だけ描画するための関数ってありますか?
TextOut()って文字列ですよね?
一文字だけ描画する場合もこの関数を使うんでしょうか?

569 :デフォルトの名無しさん:2005/05/18(水) 00:23:06
そうだね

570 :537:2005/05/18(水) 00:30:39
この見事なスルーっぷりは、スクロールバーコントロールを使えという無言のアドバイスですかね。
やっぱそれしかないのかな・・・_| ̄|○

571 :デフォルトの名無しさん:2005/05/18(水) 00:36:11
>>570
状況がよくわからん。IDは-1じゃないよな?
CreateWindowExの失敗も追及してみないか

572 :537:2005/05/18(水) 00:53:45
>>571
レスありがとう。
IDって何を指してますでしょうか?
SetScrollInfoのウィンドウハンドル?(そんな訳ないか

根本的な対策という意味ではCreateWindowExの失敗を追った方がよいかも知れません。
2つまとめて質問するのは失礼かつ分かりにくいかと思って、スクロールバーに絞った所存です。
必要ならば、ResisterClassExとCreateWindowExの処理部分を晒します。

573 :568:2005/05/18(水) 01:07:28
>>569
お返事ありがとうございます。


TextOut()の4番目の引数(文字列のポインタを指定するところ)に
char型の変数のアドレスを渡すのってありですか?
実行してみたら普通に動いたんですけど、このやりかたで問題ないのでしょうか?
それとも文字をchar[]かstring型の変数に代入してからやったほうが良いのでしょうか?

574 :デフォルトの名無しさん:2005/05/18(水) 01:26:06
>>573
文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。


575 :デフォルトの名無しさん:2005/05/18(水) 01:28:06
>>573
文字列長に-1を指定してないなら、charのアドレスを渡すのもアリ。


576 :568:2005/05/18(水) 01:57:31
>>575
お返事ありがとうございます。

文字列長に-1を指定するなんてこと普通ないと思うんですけど、
何か特別な意味が有るんでしょうか?

577 :デフォルトの名無しさん:2005/05/18(水) 02:15:30
文字数をいちいち意識しなくてすむ。

578 :デフォルトの名無しさん:2005/05/18(水) 02:41:14
>>528
DWORD_PTRは「DWORDもポインタも格納可能な型」ってことだから
sizeof(DWORD_PTR) >= max(sizeof(DWORD), sizeof(LPVOID))ならなんでもいい。

579 :568:2005/05/18(水) 02:49:34
>>577
すいません、どういうことかわからないんですけど。
もしかして文字列長に-1を指定すると自動的に文字列長を計算してくれるとか?
でも試しに文字列のポインタと-1を指定して実行してみたんですけど、
何も表示されなかったんですけど。
どういうことなんでしょうか?

580 :567:2005/05/18(水) 03:01:57
わかりました(たぶん)
DrawText()関数では文字列長に-1を指定すると文字列長を自動的に計算してくれるみたいです。
TextOut()関数ではそれは無いみたいです。(たぶん)

581 :デフォルトの名無しさん:2005/05/18(水) 07:42:59
>>578
だからそれが気に入らないんだ。

582 :デフォルトの名無しさん:2005/05/18(水) 10:32:10
>>581
この際、君の好き嫌いは気にしちゃいられない

583 :デフォルトの名無しさん:2005/05/18(水) 12:58:22
時差の設定の影響されないファイルのタイムスタンプの取得方法を教えてください。

584 :デフォルトの名無しさん:2005/05/18(水) 13:21:38
>>583
先ずはその意味不明な日本語の解説をしてください。

585 :デフォルトの名無しさん:2005/05/18(水) 13:28:46
日本で取得してもアメリカで取得しても同じ値を得たいのです

586 :デフォルトの名無しさん:2005/05/18(水) 13:28:59
>>582
GetFileTimeして得られたFILETIMEを、FileTimeToSystemTimeで
SYSTEMTIMEに変換すればOK。

ただし、FATファイルシステムでは、タイムスタンプをローカルタイムで
持っているため、タイムゾーンの設定が間違っていた場合には、
GetFileTimeがそもそも誤った結果を返す。

このため、FATファイルシステムにおいては
>時差の設定の影響されないファイルのタイムスタンプの取得方法
は存在しない。

587 :デフォルトの名無しさん:2005/05/18(水) 13:29:08
無理


588 :デフォルトの名無しさん:2005/05/18(水) 13:34:50
漏れはまた、
「時差の設定の」「影響されないファイルのタイムスタンプの」取得方法かと思ったよ。


589 :デフォルトの名無しさん:2005/05/18(水) 13:35:22
>>586
ありがとう
>>587
子ね

590 :デフォルトの名無しさん:2005/05/18(水) 13:56:23
環境変数TZについてですが日本語Windowsの場合未設定になっていますが他国語版Windowsでは設定されてるのでしょうか?


591 :デフォルトの名無しさん:2005/05/18(水) 14:02:01
>>590
未設定です

592 :デフォルトの名無しさん:2005/05/18(水) 14:05:35
お前等をアレするAPIを教えてください

593 :590:2005/05/18(水) 14:08:27
⊂(。Д。⊂⌒`つダンダッテー

_tznameは使うなって事か‥‥

594 :デフォルトの名無しさん:2005/05/18(水) 14:33:56
>>592
Delete592()


595 :デフォルトの名無しさん:2005/05/18(水) 14:44:39
メールのUIDLを取得する方法を教えてください

596 :デフォルトの名無しさん:2005/05/18(水) 14:50:22
>>595
サーバにUIDLコマンドを投げれ

597 :デフォルトの名無しさん:2005/05/18(水) 15:31:55
リッチエディットのスムーズなスクロールを、
無効にすることは可能ですか?
可能ならどうすれば…

598 :デフォルトの名無しさん:2005/05/18(水) 15:35:59
今のOSバージョンとCPUメモリ、グラフィックスドライバを
言ってくれないとわからんw

599 :デフォルトの名無しさん:2005/05/18(水) 15:49:17
スタンバイから復帰させる方法を教えてください

600 :デフォルトの名無しさん:2005/05/18(水) 15:52:22
電源ボタンを押す

601 :デフォルトの名無しさん:2005/05/18(水) 15:55:14
スタンバイからプログラムで復帰させる方法を教えてください 

602 :デフォルトの名無しさん:2005/05/18(水) 15:56:00
スタンバイ状態でプログラム動くの?
時刻かなんかでメッセージ受けるの?

603 :デフォルトの名無しさん:2005/05/18(水) 15:56:32
スタンバイから復帰させる方法を教えろつってんだろ!!

604 :デフォルトの名無しさん:2005/05/18(水) 16:03:21
テメーシネヨ、できないのはできない

605 :デフォルトの名無しさん:2005/05/18(水) 16:03:58
スタンバイ状態にしろ、休止状態にしろ、
マシンの制御がBIOSのACPI側に移行してるだろうから、
OS側ましてや、アプリケーションなんかではどうのこうのは出来ないはず。

スタンバイの場合はメモリには給電されてるから復帰が早いってだけじゃなかったっけ?

606 :デフォルトの名無しさん:2005/05/18(水) 16:07:40
スタンバイから復帰させる方法を教えてください

607 :597:2005/05/18(水) 16:08:00
スムーズなスクロールというより・・・
マウスのホイールでスクロールしたときに、
ホイールクルクル止めても、行が多いとスクロールし続けてるのを何とかしたい…
RichEdit1 です

OSとか関係あるん?
xp,p43G,512M,ti4200

608 :デフォルトの名無しさん:2005/05/18(水) 16:23:27
寝てる人に目覚まし鳴らすスイッチを持たせるようなもんだな >スタンバイから復帰
寝てる本人にはどうしようもない。

609 :デフォルトの名無しさん:2005/05/18(水) 16:24:13
>>599-606
SetWaitableTimer

610 :デフォルトの名無しさん:2005/05/18(水) 16:27:31
>>609
ネタかと思ったら本当にあった。すげー

611 :デフォルトの名無しさん:2005/05/18(水) 16:29:08
口ばっかだな

612 :デフォルトの名無しさん:2005/05/18(水) 16:31:14
元の質問の答えには使えないな
スタンバイに入ってしまったらどうしようもないもんな

613 :デフォルトの名無しさん:2005/05/18(水) 16:32:16
>>612
は?まか?

614 :デフォルトの名無しさん:2005/05/18(水) 16:32:21
うわー…

615 :デフォルトの名無しさん:2005/05/18(水) 16:34:55
寝る前に目覚ましをセットするようなものか

616 :デフォルトの名無しさん:2005/05/18(水) 16:35:43
スタンバイから復帰させる方法を教えてください

617 :デフォルトの名無しさん:2005/05/18(水) 16:38:36
それは、確かな外殻団体を作れ!

618 :デフォルトの名無しさん:2005/05/18(水) 17:36:07
RichEditにオートインデント機能を持たせようとENM_KEYEVENTSを設定し、WM_KEYDOWNのVK_RETURNが来たところでTabや半角スペースを入れるようにしましたがうまくいきません。
原因はコントロールの改行挿入が完了しないままEM_REPLACESELでTab挿入をしてることにあるみたいです。
エンターが押された後にコントロール内での処理が終わってから来るメッセージはありますか?

619 :デフォルトの名無しさん:2005/05/18(水) 18:16:34
SHBrowseForFolderにチェックボックスを付ける方法を教えてくださ

620 :デフォルトの名無しさん:2005/05/18(水) 18:18:03
無理

621 :デフォルトの名無しさん:2005/05/18(水) 18:22:26
>>619
BROWSINFO構造体のlpfnメンバにコールバック関数を設定して
コールバックの方で、BFFM_INITIALIZEの時にCreateWindowで自前で作れ

622 :デフォルトの名無しさん:2005/05/18(水) 18:25:03
CreateWindowで作ってやるよハゲ!

623 :デフォルトの名無しさん:2005/05/18(水) 19:27:18
>>618
サブクラス化

624 :デフォルトの名無しさん:2005/05/18(水) 20:29:41
俺を女子高生のサブクラス化にさせる方法を教えてください

625 :デフォルトの名無しさん:2005/05/18(水) 21:02:32
難しい日本語つかうね。

626 :デフォルトの名無しさん:2005/05/18(水) 23:46:40
>>620
hage

627 :デフォルトの名無しさん:2005/05/19(木) 08:31:40
>>624


628 :デフォルトの名無しさん:2005/05/19(木) 09:18:39
プリンタにインストールされているフォント一覧を取得する方法を教えてください

629 :デフォルトの名無しさん:2005/05/19(木) 09:26:02
EnumFontsでどうかなぁ

630 :デフォルトの名無しさん:2005/05/19(木) 10:19:28
>>616
>スタンバイから復帰させる方法を教えてください
タスクスケジューラを設定しておくか、
WakeOnLANで起こしてもらうか、
手で電源ボタン押す。

631 :630:2005/05/19(木) 17:28:03
何この静けさ?

632 :デフォルトの名無しさん:2005/05/19(木) 17:30:50
静かでいいじゃない。

633 :630:2005/05/19(木) 17:51:32
そだな

634 :デフォルトの名無しさん:2005/05/19(木) 18:03:27
Sleep

635 :デフォルトの名無しさん:2005/05/19(木) 18:16:49
質問者のその後が無いからなあ

636 :デフォルトの名無しさん:2005/05/19(木) 18:24:36
MessageLoop

637 :デフォルトの名無しさん:2005/05/19(木) 18:57:59
リストボックスのインデックスを取得する方法を教えてください。

638 :デフォルトの名無しさん:2005/05/19(木) 18:59:12
じゃなかった。説明たりね。スマソ

639 :デフォルトの名無しさん:2005/05/19(木) 19:03:09
>>637
GetListBoxIndex()

640 :デフォルトの名無しさん:2005/05/19(木) 19:45:12
>>637-639
http://www.google.co.jp/search?hl=ja&c2coff=1&q=GetListBoxIndex

641 :デフォルトの名無しさん:2005/05/19(木) 19:52:52
アイコンリソースについての質問です。

リソースファイル(resource.rc)に

MYICON ICON DISCARDABLE "icon.ico"
MYICON2 ICON DISCARDABLE "icon2.ico"

などと書いて、プログラム中で MYICON と MYICON2 を切り替えようとしてもうまく行きません。
というより、どうやら最初の1つ(MYICON)しか認識されないようです。
どうすればよろしいのでしょうか?

642 :デフォルトの名無しさん:2005/05/19(木) 20:16:05
どうやってどうなったのか書かない奴はネタと判定します。

643 :デフォルトの名無しさん:2005/05/19(木) 20:16:28
>プログラム中で MYICON と MYICON2 を切り替えようと
というのは具体的にどういう実装なのか

>うまく行きません。
とは、どういう期待に対する、不満足な結果なのか

を明らかにしないのは釣り。

644 :デフォルトの名無しさん:2005/05/19(木) 21:12:31
MessageBoxで使われてるフォントは何でしょうか?

645 :デフォルトの名無しさん:2005/05/19(木) 21:23:49
画面のプロパティで設定しているフォント

646 :デフォルトの名無しさん:2005/05/19(木) 21:38:47
>>645
dクス

647 :641:2005/05/20(金) 07:15:57
具体的には、タスクトレイに表示したアイコンを動かしたいのです。
タスクトレイにアイコンを表示するには、

NOTIFYICONDATA n_mid;

m_nid.cbSize = sizeof(NOTIFYICONDATA);
m_nid.hWnd = hWnd;
m_nid.uID = TRAY_ID;
m_nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
m_nid.uCallbackMessage = WM_TRAY;
m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_EXCLAMATION));// ここではシステムの「!」マーク
lstrcpy(m_nid.szTip, TEXT("Tip Message"));
Shell_NotifyIcon(NIM_ADD, &m_nid);

変更するには、

m_nid.hIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_QUESTION));// ここではシステムの「?」マーク
Shell_NotifyIcon(NIM_MODIFY, &n_mid);

などとすればよいことまでは分かるのですが、
自分で書いたリソースファイルの中に2つ以上定義したはずのアイコンが1つしか使えないのです。
自分で作成したアイコンを2つ以上使うにはどうすればよいのか、どなたか教えてください。お願いします。

648 :デフォルトの名無しさん:2005/05/20(金) 07:49:07
ImageList

649 :デフォルトの名無しさん:2005/05/20(金) 10:22:31
>>647
少なくとも、こちらで書いた中にそれを組み込んでも
普通に切り替わる。
>>647が書いてない部分に何か原因がありそう

650 :537:2005/05/20(金) 11:36:07
質問者のその後って、漏れのことかも・・・(⊃ω⊂)
SCROLLBARクラスに変更したら、外観が他のウィンドウと異なることが発覚。
結局CreateWindowExの失敗を追及しようかと思うようになりますた。
ちなみに失敗するのはこんなコードです。

WNDCLASSEX wc;

wc.cbSize = sizeof(WNDCLASSEX);
wc.style = NULL;
wc.lpfnWndProc = RightWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInst;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = (LPCTSTR)RWINDOWCLASS;
wc.hIconSm = NULL;
wc.hIcon = NULL;
RegisterClassEx(&wc);
hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,
(LPCTSTR)RWINDOWCLASS,
"",
WS_CHILD | WS_VISIBLE | WS_BORDER,
log_rect.log_pos_x,//左ウィンドウ補正
log_rect.log_pos_y,
log_rect.log_width,//幅
log_rect.log_height,//高さ
hWndSuper,
(HMENU)ID_LOGVIEW,
hInst,NULL);
改行が多いと怒られたので分割します。

651 :537:2005/05/20(金) 11:36:59
>>650の続き

RWINDOWCLASSにはヘッダでクラス名のテキストを定義してあります。

このコードで起きる現象。
・RegisterClassExは成功する。
・CreateWindowExがNULLリターンするが、GetLastErrorで取得するエラーは
 「この操作を正しく終了しました。」
 ちなみにRegsterClassExをコメントアウトすると
 「ウィンドウクラスが見つかりません。」
 となるので、クラス登録は成功していると考えられます。

WH_CBTフックもしてません。
ウィンドウプロシジャでWM_CREATEやWM_NCCREATEも処理していません。
ということで、原因をつかみかねております。
すいません助けて下さい・・・ 。・゚・(ノД`)・゚・。

652 :537:2005/05/20(金) 11:40:41
すいませんもうひとつ書き忘れました。
このCreateWindowExですが、クラスを"STATIC"に変えるだけで普通に動きます。

//STATICコントロールにした状態で作り込みしていましたので・・・

653 :デフォルトの名無しさん:2005/05/20(金) 11:44:00
リストボックスでクリックされた項目の番号によって判別し、
発生するイベントを作りたいのですが、
その番号を配列文字列の数値に割り当てたいのです。
そのやり方を教えてください。

654 :デフォルトの名無しさん:2005/05/20(金) 11:52:55
>>652
その RightWndProc の WM_CREATE で何かやってる?

655 :654:2005/05/20(金) 11:54:25
ああ、何もやってないってか。
WM_CREATE が来るかどうかは調べられる?

656 :537:2005/05/20(金) 12:01:42
>>655
ありがとうございます。
デバッガでトラップしてみたところ、WM_CREATEが来ていないように見えます。
ただ、CreateWindowExのエラーが出る前に、RightWndProcが2回呼ばれていました。
そのメッセージを見ると・・・
1回目:WM_NCCREATE
2回目:WM_NCDESTROY

アレ?これはもしかして・・・。
ちょっとRightWndProcを見直してみます。
ちゃんとDefWndProcしてないかも・・・。

657 :デフォルトの名無しさん:2005/05/20(金) 12:01:59
>>651
CS_OWNDC か CS_PARENTDC のどちらかをセットするとどうなりますか。

658 :537:2005/05/20(金) 12:05:52
>>657
ありがとうございます。
両方のパターンを試してみましたが、現象に変化なしです。

659 :537:2005/05/20(金) 12:14:37
>>656その後

親ウィンドウのWM_CREATE処理で
CreateWindowExするモジュールの呼び出し→SetWindowLongでサブクラス化
とやっているのが気になったので、RightWndProcのCallWindowProcをDefWindowProcに変更。
変化なし orz


660 :537:2005/05/20(金) 12:57:54
たびたびすみません。
解決しました。

RegsterClassExの一部を変更しました。

wc.lpfnWndProc = DefWindowProc;

サブクラス化のSetWindowLongが後で走る訳ですから、クラス登録ではDefWindowProc
を登録しておけば済む話だったんですね・・・。
WM_NCCREATE→WM_CREATEとならずに
WM_NCCREATE→WM_NCDESTROYとなっていたのが重大なヒントになりました。
ありがとうございました。

661 :デフォルトの名無しさん:2005/05/20(金) 15:57:38
ttp://wisdom.sakura.ne.jp/system/winapi/win32/win68.html
>リストボックスの全てのアイテムはインデックスとして管理されます
>最上段のアイテムのインデックスを 0 として、1ずつ増えていきます
>選択されているアイテムや、削除などの操作もインデックスで指定するので
>文字配列と照らし合わせるような処理には非常に便利です

となっていますが、
どうやって選択されたインデックスをint型変数に取得すればいいのでしょうか?
お願いします。

662 :デフォルトの名無しさん:2005/05/20(金) 16:04:55
>>661
そこに LB_GETCURSEL を使うって書いてあるじゃんか

663 :デフォルトの名無しさん:2005/05/20(金) 16:12:13
>662
でもintにキャストできません

664 :デフォルトの名無しさん:2005/05/20(金) 16:14:40
は?やってみたのかよ

665 :663:2005/05/20(金) 16:17:55
i=(int)SendMessage(list , LB_GETCURSEL , 0 , 0);
これじゃダメですか?(ダメだったけど)

666 :デフォルトの名無しさん:2005/05/20(金) 16:32:55
>>665
どういう値を期待してどんな値が返ってきたの?
それで問題なく取得できるはずだけど。
ListCtrlじゃなくて、ListBoxだよね?

667 :663:2005/05/20(金) 16:49:33
>666
ありがとうございます。
どうやら違うところで手違いがあったようです。
後は何とかなりそうです

668 :663:2005/05/20(金) 17:01:47
ああ、何とかならない。。。
strcpy(name[0] ,buf[i][0]);
とか文字列に埋め込むと、なぜかフリーズしてしまうorz

669 :デフォルトの名無しさん:2005/05/20(金) 17:03:22
ほかが見えないとわからんが、、
strcpy(name, buf[i]) ではないのか

670 :663:2005/05/20(金) 17:22:10
static char buf[256][256][1024];
static char name[2][1024];
nameもbufも多次元変数です。
実のところソースは汚すぎなんで。。。

671 :663:2005/05/20(金) 17:34:04
もういいや。吊ってくる

672 :デフォルトの名無しさん:2005/05/20(金) 17:37:36
64MBの配列か・・・いいけどね、ベツニ

673 :デフォルトの名無しさん:2005/05/20(金) 18:36:25
>>668
後は i の値とか。
つか、ここに来たからには嘘でも lstrcpy を使え。

674 :デフォルトの名無しさん:2005/05/20(金) 18:40:49
GETCURSELは非選択だとLB_ERR(-1)返るから注意な

675 :デフォルトの名無しさん:2005/05/20(金) 18:41:40
質問させてください。昨日から悩んでいるのですが、解決できません。
マルチスレッドでshell namespaceを使い、zipの中身を列挙したいのです。
4Mと40Mのzipファイルを用意し、以下のソースを実行したところ(長くてすみません)、
STAの待ち行列に入っているような挙動になりました。
これを回避したいのです。

ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
開こうとしつつも、別のエクスプローラで4Mのzipを開けます。


676 :デフォルトの名無しさん:2005/05/20(金) 18:42:08
#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <shlobj.h>
#pragma comment(lib, "shell32.lib")
void f(void* p) {
int i = (int)p;
::OleInitialize(NULL);
wchar_t* name = (i%2==0) ? L"D:\\4M.zip" : L"D:\\40M.zip";
LPITEMIDLIST idl = ::ILCreateFromPathW(name);
LPSHELLFOLDER desk, sf; LPENUMIDLIST el; HRESULT hr;
hr = ::SHGetDesktopFolder(&desk);
hr = desk->BindToObject(idl, 0, IID_IShellFolder, (LPVOID*)&sf);
printf("start %d\n", i);
hr = sf->EnumObjects(NULL, SHCONTF_NONFOLDERS, &el);
printf("end %d %x\n", i, hr);
sf->Release();
desk->Release();
CoTaskMemFree(idl);
::OleUninitialize();
_endthread();}
int main(int argc, char* argv[]) {
HANDLE hs[10];
for (int i=0; i < 10; i++) hs[i] = (HANDLE)_beginthread(f, 0, (void*)i);
::WaitForMultipleObjects(10, hs, TRUE, INFINITE);
char buf[256];
gets(buf);
return 0;}


677 :デフォルトの名無しさん:2005/05/20(金) 19:40:38
>>675
> ちなみにエクスプローラだと、あるエクスプローラで40Mのzipを
> 開こうとしつつも、別のエクスプローラで4Mのzipを開けます。

この場合は、マルチスレッドではなくマルチプロセスになるから、
比べる意味がないのはわかってる?


678 :デフォルトの名無しさん:2005/05/20(金) 19:48:12
>>677
エクスプローラはマルチプロセスでしたっけ?
複数のエクスプローラを立ち上げると
explorer.exeのスレッドが増えるだけだと思いますが?

679 :678:2005/05/20(金) 19:52:28
>>677
すみません。678で馬鹿なこと書きました。

680 :デフォルトの名無しさん:2005/05/20(金) 23:25:58
>>678
そういうチェックボタンあったから、
たぶんマルチプロセスにもできるんだよ

681 :デフォルトの名無しさん:2005/05/21(土) 00:46:32
>>678,679
エクスプローラはマルチプロセスではないだろ?


682 :デフォルトの名無しさん:2005/05/21(土) 00:56:50
>>680
フォルダオプションの「別のプロセスでフォルダウィンドウを開く」なら、タスクバーその他を管理するプロセスとフォルダウィンドウを管理するプロセスを分けるってだけじゃないか?

683 :デフォルトの名無しさん:2005/05/21(土) 01:31:21
WM_TIMERでInvalidateRgnするとタイミングの問題なのかたまに画面全体がバグるんだけど
どうやって回避する?

684 :デフォルトの名無しさん:2005/05/21(土) 01:32:58
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる
> 画面全体がバグる

685 :デフォルトの名無しさん:2005/05/21(土) 01:35:39
動的にmsvcrt.dllを呼び出してアプリケーション側で
ちゃんと初期化したいんですが、
仕様って後悔されてませんにょ

686 :683:2005/05/21(土) 01:36:09
なんていうか、画面全体が更新領域に設定されるのかすごいちらつく
ウィンドウとか全部真っ白になるけどそのプログラムを止めて再描画させるようにすれば直る。

687 :デフォルトの名無しさん:2005/05/21(土) 01:38:17
>>685
日本語を話せるようになってから、また来てくれ

688 :デフォルトの名無しさん:2005/05/21(土) 07:31:41
>>686
Timerの間隔は?

689 :デフォルトの名無しさん:2005/05/21(土) 08:35:42
>>685
VCをインストールしたディレクトリの中にスタートアップルーチンのソースもある。

690 :663:2005/05/21(土) 08:50:22
>674
うおおおお。それだ!
ありがとうございます。
丸二日悩み続けていました。

691 :デフォルトの名無しさん:2005/05/21(土) 09:01:16
>>685
ロードしただけで自動的に初期化されないか?
そのためにDLL_*_ATTACHがあるんだから

692 :デフォルトの名無しさん:2005/05/21(土) 12:46:09
仕様、というか、MSVCRTはソースがVCに附属してるだろ。

693 :683:2005/05/21(土) 13:18:10
>>688
500ミリ秒です。

694 :デフォルトの名無しさん:2005/05/21(土) 13:50:49
>>693
>>684

695 :デフォルトの名無しさん:2005/05/21(土) 13:57:32
WM_ERASEBKGNDの発行から、WM_PAINTが処理されるまでの
時間が長いんでないの?

696 :デフォルトの名無しさん:2005/05/21(土) 14:00:07
WM_ERASEBKGNDで対象の領域をValidateしてDefault処理

697 :デフォルトの名無しさん:2005/05/21(土) 16:42:24
ビットマップをリソースから読み込まずに
直接ファイルを読み込む方法を教えてください。

698 :デフォルトの名無しさん:2005/05/21(土) 16:52:40
>>697
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpwinui/html/_win32_loadimage.asp
LR_LOADFROMFILE

699 :デフォルトの名無しさん:2005/05/21(土) 17:16:33
>698
dクス

700 :デフォルトの名無しさん:2005/05/22(日) 00:48:57
質問の趣旨はそれでいいのか?
なんか違う気がするんだが・・・

701 :デフォルトの名無しさん:2005/05/22(日) 01:11:02
>>700
じゃ、答えはReadFile()とでも言いたいのかい?

702 :デフォルトの名無しさん:2005/05/22(日) 01:49:27
いや、、、質問者が再訪しなければ問題は無い。

703 :デフォルトの名無しさん:2005/05/22(日) 07:06:41
実行ファイルのプロパティのバージョン情報を取得する方法を教えてください

704 :デフォルトの名無しさん:2005/05/22(日) 07:45:03
>>703
GetFileVersionInfo

705 :デフォルトの名無しさん:2005/05/22(日) 14:38:55
スタックオーバーフロー例外(EXCEPTION_STACK_OVERFLOW)
が発生したとき、例外ハンドリング時に動的にスタックを広げる(再マップする)ことは
可能でしょうか?
というか、可能だった気がするのですが、肝心の方法を忘れてしまいました。
どなたかご存知でしたらご教授願います。

706 :デフォルトの名無しさん:2005/05/22(日) 16:11:06
すいません勘違いしてました。

707 :デフォルトの名無しさん:2005/05/22(日) 19:06:37
リストボックスを一時的に選択できない状態にしたいのですが、
どうすればいいでしょうか?

708 :デフォルトの名無しさん:2005/05/22(日) 19:11:32
EnableWnidow

709 :デフォルトの名無しさん:2005/05/22(日) 19:19:59
>708
ありがd

710 :デフォルトの名無しさん:2005/05/22(日) 22:21:50
SDKでBitmapをBitBltで描画しています。
Bitmapを左にスクロールさせたいのですが、
何か良い方法ないでしょうか?
ワーク用のビットマップを用意して、そちらにコピーして
また戻す、ってので一応できるのですが、
なんか無駄なので。。。

Google等でスクロールAPIを探したのですが、
見つけられませんでした。

(最初VC初心者スレに書いたのですが、こちらの方が適切っぽいので移動してきました)


711 :デフォルトの名無しさん:2005/05/22(日) 22:29:01
画像自体がケツと頭がつながっててループ可なら
BitBlt2回でよくね?

712 :デフォルトの名無しさん:2005/05/22(日) 22:35:28
表示されているイメージならScrollWindowやScrollDCでスクロールすると思うけど。
ScrollDCでスクロールさせて、更新領域だけBitBltでBitmapの範囲を指定して
Bltすればいいんでねえの?


713 :710:2005/05/22(日) 22:37:34
>>711
2回でどうするのかよく分からないのですが、
スクロール後は右の空きスペースに新たな
描画を行います。(ループではないです)

714 :デフォルトの名無しさん:2005/05/22(日) 22:37:57
戻す必要は無いでしょ

715 :デフォルトの名無しさん:2005/05/22(日) 22:43:23
nWidthとnXSrcをずらしていくだけじゃだめのなか?

716 :711:2005/05/22(日) 22:53:08
単に

@AB

AB@

B@A

ってしたいのかとオモタ

717 :710:2005/05/22(日) 22:54:32
>>712
ScrollWindowは何故かうまくいきませんでしたが、
(ダイアログに直接描画してるのがまずい?)
ScrollDCでBitmapをスクロールするとうまくいきました。

ただ、800*20の領域を10msecに1pixel動かしてる
だけなんですが、ちらつき気味です。。。
もう少し調査します。

ありがとう。


718 :デフォルトの名無しさん:2005/05/22(日) 23:00:35
基本的には
・GetDC()よりはWM_PAINTのほうがちらつき(というかティアリング)が少ない
・頻繁に描画を繰りかえす場合はWM_ERASEBKGNDに注意

719 :デフォルトの名無しさん:2005/05/22(日) 23:04:29
ビットマップで埋め尽くすならバックグラウンド描く必要ないしな

720 :デフォルトの名無しさん:2005/05/22(日) 23:08:11
ダイアログだとうまくいかんだろう。
WM_ERASEBKGND 動いてるんじゃない?


721 :710:2005/05/22(日) 23:14:13
case WM_ERASEBKGND:
return TRUE;

入れただけで、スムーズになりました。
問題なしです、助かりました!


722 :デフォルトの名無しさん:2005/05/22(日) 23:42:11
ウィンドウクラスの背景ブラシをNULLにすればいいのに

723 :デフォルトの名無しさん:2005/05/23(月) 00:18:40
べつにどっちでもいい

724 :デフォルトの名無しさん:2005/05/23(月) 02:56:19
指定パスの、実行ファイルのアイコンや、
ファイル・フォルダの関連付けられているアイコンを
「任意のアイコンインデックス」かつ「任意のサイズ」で取得したいのですが、
何か良い方法はありますでしょうか?

16x16 や 32x32 などなら、ExtractIconEx なり SHGetFileInfo などで
いくらでも取得できるようなのですが、
24x24 や 48x48 のアイコンを取得する方法は見つかりませんでした。
もうかれこれ半日程google先生とお付き合いしています… orz

実行ファイルやアイコンファイル・DLLなどのリソースの場合はアイコンインデックスを有効にして、
それ以外の、普通のファイルやフォルダなどは、アイコンインデックスは無効で良いのです。
また、取得するのは HICON でも HIMAGELIST でも構いません。

ぜひ、ご教授ください。m(_ _)m

725 :デフォルトの名無しさん:2005/05/23(月) 04:00:07
TREEVIEWコントロールで選択されているアイテムのlParamが知りたいのですが、
GetSelectionでもらうのはHTREEITEMなのですがlParamを見るにはTV_ITEM
じゃないとだめなんです。
HTREEITEM <=> TV_ITEM
の結びつきってどうやって調べるのでしょうか?

COMMCTRL.hとかMSDN見てたけどなかなか出てこないorz


726 :デフォルトの名無しさん:2005/05/23(月) 04:10:53
>>724
PrivateExtractIcons

>>725
TVM_GETITEM

727 :デフォルトの名無しさん:2005/05/23(月) 04:33:03
IExtractIcon
これの方がいいな。

728 :デフォルトの名無しさん:2005/05/23(月) 04:42:30
>>726
ありがとう。
TVITEMにHTREEITEMをいれて呼ぶのね…

729 :デフォルトの名無しさん:2005/05/23(月) 09:35:35
wininetでwebdavに接続する方法を教えてください

730 :デフォルトの名無しさん:2005/05/23(月) 09:54:00
APIを使って今まで直線や曲線を描画していたのですが、
どうも数が増えてくるともっさりしてきました。機能的にも物足りなく…。

3Dではプリミティブを描画するために、DirectXやOpenGLの様な有名なライブラリがありますが、
2Dでは、直線や曲線を描画するための、これは、というライブラリは無いのでしょうか。
それともWin32APIで十分だから、作る必要が無いのでしょうか。

731 :デフォルトの名無しさん:2005/05/23(月) 10:02:08
>>730
DirectX

732 :730:2005/05/23(月) 10:29:58
>>731
ありがとうございます。しかし欲しいのは2D用ベクタグラフィックライブラリでして。
DirectXがベースな分には構わないのですが、DirectXだけだと、曲線部分を自作しないとで。
要DirectXという2Dフリーソフトはほとんど無いし、やっぱりAPIで十分なんですかね。

733 :デフォルトの名無しさん:2005/05/23(月) 11:05:49
DirectXはOpenGLと違って2Dも
(ついでに音楽や入力系も)
サポートしているだろうが。

734 :デフォルトの名無しさん:2005/05/23(月) 11:24:40
>>730
処理の仕方が悪いに1票。

まさかWM_PAINT毎にGDIで描いてる訳じゃないよな?ないよな?

735 :デフォルトの名無しさん:2005/05/23(月) 11:34:49
ビットマップ用意して、メモリDC使ってそこに書きこんで
WM_PAINTではBitBltしてるだけに決まってるじゃないか・・・たぶん

736 :デフォルトの名無しさん:2005/05/23(月) 11:38:10
CreateEnhMetaFileでhDC用意して、そこに書き込んで、
WM_PAINTではPlayEnhMetaFileしてるに100ペリカ

737 :730:2005/05/23(月) 11:43:47
>>734-735
お付き合いどうもです。ごくごく普通にクリップしながらダブルバッファリングでやってます。
となると、こんなものなのかな…

738 :デフォルトの名無しさん:2005/05/23(月) 12:07:09
733から知ったかぶり臭を感じるのは俺だけか

見事にスルーされているが

739 :デフォルトの名無しさん:2005/05/23(月) 13:11:24
##,###,####って感じで書式を指定して数値を文字列に変換するAPIを教えてください

740 :デフォルトの名無しさん:2005/05/23(月) 13:13:43
>>739
wsprintf

741 :デフォルトの名無しさん:2005/05/23(月) 13:40:47
おいおい

742 :デフォルトの名無しさん:2005/05/23(月) 13:51:25
>>739
APIならFormatMessageだが、
それよりもsprintf使え

743 :デフォルトの名無しさん:2005/05/23(月) 13:53:30
あれ?sprintfでできたっけ?
どうやって記述します?

744 :デフォルトの名無しさん:2005/05/23(月) 14:06:13
wsprintfは普通に使うだろ
知らないのはもぐり

745 :デフォルトの名無しさん:2005/05/23(月) 14:09:59
>>743
そんくらいヘルプ見れや


746 :デフォルトの名無しさん:2005/05/23(月) 14:17:17
いやヘルプみたんだけどよくわからなかった
HEXじゃなくて普通の数値できる?
12,345
みたいなの、

747 :デフォルトの名無しさん:2005/05/23(月) 14:21:19
>>739の書き方が悪い。
ひょっとしてロケール設定反映した桁区切り付き文字列出したいのか?

748 :デフォルトの名無しさん:2005/05/23(月) 14:27:03
>>747
これは失礼しました。
普通の数値(10進数)を3桁のカンマで区切りたいということです
まあwsprintfやsprintfでは出来ないってわかってんだけどね。

749 :デフォルトの名無しさん:2005/05/23(月) 14:32:27
>>748
出来るぞ?

750 :デフォルトの名無しさん:2005/05/23(月) 14:37:55
>>749
まじですか?
ひょっとしてFormatMessageとか使ったりします?
う〜ん、これでも結構いろいろ探したんだけどなあ・・

751 :デフォルトの名無しさん:2005/05/23(月) 21:59:43
ツールバーの背景って、ビットマップとして塗った色にしかならないの?
透過させて、システムカラーが表示されるようにしたいんだが。

752 :デフォルトの名無しさん:2005/05/23(月) 22:42:49
>>748
一旦文字列に変換してから、GetNumberFormat()


753 :デフォルトの名無しさん:2005/05/23(月) 23:03:01
>>751
???

754 :751:2005/05/23(月) 23:29:54
>>753
いや、ユーザーがウィンドウの色を変えたりした場合に、
ツールバーの自作アイコンの背景が、その色にならないので、
どうしたもんかなあ、と。何かやり方がおかしいのかな。

755 :デフォルトの名無しさん:2005/05/23(月) 23:30:57
おかしいと思う

756 :751:2005/05/23(月) 23:47:07
うそっ。例えば、
ttp://www.kumei.ne.jp/c_lang/sdk/sdk_61.htm
の通りやったとしても、
ビットマップの背景は灰色で塗っちゃってるから、
灰色のままにならない?

757 :デフォルトの名無しさん:2005/05/24(火) 00:37:00
たまにそういう格好悪いアプリあるよな

758 :デフォルトの名無しさん:2005/05/24(火) 07:40:30
Windows付属のゲームとかもそうだし。

759 :デフォルトの名無しさん:2005/05/24(火) 09:09:24
LR_LOADMAP3DCOLORS

760 :デフォルトの名無しさん:2005/05/24(火) 11:06:42
ファイルをゴミ箱に移動するAPiを教えてください

761 :デフォルトの名無しさん:2005/05/24(火) 11:13:17
http://pc8.2ch.net/test/read.cgi/tech/1074933908/727-728

762 :デフォルトの名無しさん:2005/05/24(火) 11:16:29
>>760
SHFileOperation

763 :デフォルトの名無しさん:2005/05/24(火) 11:39:36
>>762
鬼あり

764 :デフォルトの名無しさん:2005/05/24(火) 12:02:57
>761が感謝されない件について

765 :デフォルトの名無しさん:2005/05/24(火) 12:12:36
ログ持ってなきゃ見れない罠

766 :デフォルトの名無しさん:2005/05/24(火) 12:22:38
いい気になってdat落ちへを貼るヤツは痛すぎる

767 :デフォルトの名無しさん:2005/05/24(火) 12:38:13
Win2Kpro VC++6.0で開発しています

実行中のスクリーンセーバーを強制停止させるプログラムを書いているのですが

HDESKhScrDesk;
// ScreensaverDesktopを開く
if(!(hScrDesk = OpenDesktop("screen-saver",0,FALSE,DESKTOP_READOBJECTS | DESKTOP_WRITEOBJECTS)))
{
// Error処理
}

の部分でDesktopハンドルが取得できなくて困っています。GetLastError()の戻り値は
ERROR_FILE_NOT_FOUNDが返ってきています。
また、上記のコードのテストを行なう際にスクリーンセーバーを起動させてから数秒後に
上記コードが実行されるようにテストプログラムを作って確認しているのでスクリーン
セーバーが実行されていないということはないと思います……アドバイスをお願いします


768 :デフォルトの名無しさん:2005/05/24(火) 12:38:32
>>751
GetSysColor や GetSysColorBrush 使う
WM_SYSCOLORCHANGE で変更タイミングはわかる

769 :デフォルトの名無しさん:2005/05/24(火) 14:14:45
WinアプリやDLLなどで標準入出力用にコマンドプロンプトを使うにはどうすればいいですか


770 :デフォルトの名無しさん:2005/05/24(火) 14:58:04
SHFileOperationで連続でファイルの削除を行うと2回目以降が必ずエラーになって削除できないんですが

771 :デフォルトの名無しさん:2005/05/24(火) 15:08:41
何エラー?

772 :デフォルトの名無しさん:2005/05/24(火) 15:12:42
GetLastErrorで6が返ってきています

773 :デフォルトの名無しさん:2005/05/24(火) 15:18:56
どうやら2回目以降ではなくて削除されないファイルは1番最初に削除してもエラーで削除できないみたいです
削除できるファイルと出来ないファイルの違いがよくわからないですが、

774 :デフォルトの名無しさん:2005/05/24(火) 15:31:48
>>769
AllocConsole();

775 :デフォルトの名無しさん:2005/05/24(火) 15:36:41
>>769
WinMainから始まるアプリなら、mainの中でWinMainを呼ぶようにすればいい。
AllocConsole()を呼ぶ必要も無く、printf()やstd::coutがそのまま使える。

776 :デフォルトの名無しさん:2005/05/24(火) 15:38:53
>>765
よく読めよこの磐梯が!

777 :デフォルトの名無しさん:2005/05/24(火) 15:39:01
>>769,774
_tmain

>>772-773
GetLastError→FormatMessageをやってみろ
エラーメッセージ見れば多少理由の推測くらいはできよう?

778 :デフォルトの名無しさん:2005/05/24(火) 15:41:28
Winerror.h から該当項目を探すとか、
VC++ならツールのエラーールックアップ(バージョンによるが)で
数字入れてみりゃいい。
6は無効なハンドル

779 :デフォルトの名無しさん:2005/05/24(火) 15:42:52
>>777
いやコードがわかってるから内容もわかってるんだけど、なぜこのエラーが出るかwからんのよ
削除できるファイルとできないファイルの違いがwからん

780 :デフォルトの名無しさん:2005/05/24(火) 15:46:39
そうですか

781 :デフォルトの名無しさん:2005/05/24(火) 15:48:00
意外と読み取り専用になっているだけだったりして。

782 :デフォルトの名無しさん:2005/05/24(火) 15:53:31
素朴な疑問。
SHFileOperation()のエラーはGetLastError()でエラーの種類を取得できるのか?

783 :デフォルトの名無しさん:2005/05/24(火) 16:06:16
>>781
いやなってないよ
>>782
ヘルプにはGetLastErrorでエラー返すって書いてないね

つかファイル名を1文字けずってやってみたら削除できないファイルも削除された
なにこれSHFileOperationのバグかなあ

784 :デフォルトの名無しさん:2005/05/24(火) 16:09:26
どっか別のプロセスがファイルハンドル掴んでいるとか……

785 :デフォルトの名無しさん:2005/05/24(火) 16:20:42
なんか8文字のファイル名はダメみたいですね、これを1文字削除したりaとか追加して9文字にすると何故か削除できるようになります

786 :デフォルトの名無しさん:2005/05/24(火) 16:23:06
SH系はバグが多いと聞く

787 :デフォルトの名無しさん:2005/05/24(火) 16:25:18
どうせファイル名の末尾に\0を2個付けてないとか
そういうバカなミスだろう。
憶測だけど。

788 :デフォルトの名無しさん:2005/05/24(火) 16:26:02
>>785
検討違いだったらゴメン

削除するファイルのパスだけど、ちゃんとNULL2つ付けてる?

789 :788:2005/05/24(火) 16:26:36
ぐああ。りろー(ry

790 :デフォルトの名無しさん:2005/05/24(火) 16:33:17
>>788
つーか、NULLって書くなや。混乱の元だがね。

791 :デフォルトの名無しさん:2005/05/24(火) 16:35:20
MSにそう言ってやれ

792 :デフォルトの名無しさん:2005/05/24(火) 16:38:20
>>791
どっかにそう書いてあるの? 私の見たMSDNには
>Address of a buffer to specify one or more source file names. Multiple names must be null-separated. The list of names must be double null-terminated.
と書いてあるのだが。

793 :デフォルトの名無しさん:2005/05/24(火) 16:40:22
NULL文字と書け

794 :デフォルトの名無しさん:2005/05/24(火) 16:44:02
>>774,775,777
ありがとうございます。

>>775,777
DLLの場合は>>774のような方法ですか?

795 :デフォルトの名無しさん:2005/05/24(火) 16:45:52
>>792
あ?
・NULLで区切られた
・NULLで終わった
って書いてあるじゃねーか

796 :767:2005/05/24(火) 16:48:02
>>767
自己レスです。
あれから調べたところ、OpenDesktop()でscreen-saverDesktopHandleを
取ってくる方法はNT4までしか使えないということが判りました
SystemParametersInfo(SPI_GETSCREENSAVERRUNNING,...)とSetCursorPos()で
とりあえず目的は果たせたので、当面はこれで良いことにします

797 :デフォルトの名無しさん:2005/05/24(火) 17:00:09
>>795
NULLとnullを区別できないなら逝ってくれ。

798 :デフォルトの名無しさん:2005/05/24(火) 17:00:38
>>792
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp
>Each file name must be terminated by a single NULL character.
>An additional NULL character must be appended to the end of
>the final name to indicate the end of pFrom.

799 :792:2005/05/24(火) 17:02:48
なるほど、NULL文字と書いてあるね。

800 :デフォルトの名無しさん:2005/05/24(火) 17:03:20
>>797
(´m`*)ウププ

801 :デフォルトの名無しさん:2005/05/24(火) 17:04:09
>>略
ガッ

802 :デフォルトの名無しさん:2005/05/24(火) 17:08:01
って言うかですね、>>787とかはもうなんていうか、ちゃんと読んで欲しいですね、いやほんとに
レスるのはいいけどまずは国語の勉強してからレスしてくださいね

803 :デフォルトの名無しさん:2005/05/24(火) 17:09:43
>>802


804 :デフォルトの名無しさん:2005/05/24(火) 17:11:39
>>802
>787の何が問題なの?

>>800
>792が引用したのはnull-terminatedなのに>795はNULLで終わったとしているから、
>797は指摘したんでしょ。

805 :デフォルトの名無しさん:2005/05/24(火) 17:19:10
もう全員新でください

806 :デフォルトの名無しさん:2005/05/24(火) 18:08:02
>>804
で、null-terminatedの日本語訳は?

っていうか、日本語版MSDNのAPIとかで、LPCTSTRとかの引数の説明に
はっきりと「NULL で終わる文字列へのポインタを指定します。」とか書いてあるんだけどね・・・

807 :804:2005/05/24(火) 18:11:44
>>806
「nullで終わる」でいいんでないの?
そこに疑問の余地はないと思うのだけど。

808 :デフォルトの名無しさん:2005/05/24(火) 18:13:12
なんかこの展開、最近他のスレでもあったような。

809 :デフォルトの名無しさん:2005/05/24(火) 18:15:26
WM_XBUTTONDOWNイベントでXBUTTON1のダブルクリックの検出方法が
下記の情報を参考にしたのですが
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_xbuttondown.asp
よくわかりません。
教えていただけないでしょうか?


810 :デフォルトの名無しさん:2005/05/24(火) 18:15:56
なんかよくわかんないけど、ガッしときますね

811 :デフォルトの名無しさん:2005/05/24(火) 18:32:15
>>807
それだと、null tarminateじゃないとな


812 :デフォルトの名無しさん:2005/05/24(火) 18:33:18
「NULで終わる」

813 :デフォルトの名無しさん:2005/05/24(火) 18:40:27
>Multiple names must be null-separated.
>The list of names must be double null-terminated.
それぞれの名前は「null-separated」せよ
そのリストは「double null-terminated」せよ
(最後はダブル)

>Each file name must be terminated by a single NULL character.
>An additional NULL character must be appended to the end of
>the final name to indicate the end of pFrom.

各ファイル名は「single NULL character」でターミネートせよ
pFromの終りを示すために「An additional NULL character」を
最後のファイル名に追加せよ
(各ファイルはシングル)

814 :デフォルトの名無しさん:2005/05/24(火) 18:42:47
とりあえず、>>795にNULLとnullを区別できないなら逝ってくれとか偉そうに言ってた>>797が阿呆で終わればええじゃん

815 :デフォルトの名無しさん:2005/05/24(火) 18:44:40
>>814
NULLとnullの違いってなんだね。

816 :デフォルトの名無しさん:2005/05/24(火) 18:46:28
俺に聞くなよ

817 :デフォルトの名無しさん:2005/05/24(火) 18:50:49
大文字と小文字

818 :804:2005/05/24(火) 18:51:01
>>811
null-terminatedの訳として、「nullで終わる」ではいけない?
直訳するなら「nullでターミネート(終端)された」でしょうけどそれは冗長でしょ。
#つーか、反論するならミススペリングしなさんな。

819 :デフォルトの名無しさん:2005/05/24(火) 18:52:24
>>809
WM_XBUTTONDBLCLK じゃなくて?

820 :デフォルトの名無しさん:2005/05/24(火) 19:25:42
>>818
冗長だからといって過去形を現在形にするのはいかがなものか

821 :デフォルトの名無しさん:2005/05/24(火) 19:33:01
過去形じゃなくて受身じゃないか?

822 :デフォルトの名無しさん:2005/05/24(火) 19:34:13
>>820
翻訳の段階で情報が落ちるのは常だ。

823 :デフォルトの名無しさん:2005/05/24(火) 19:38:08
ああすまん、受動態だぁな・・・

824 :デフォルトの名無しさん:2005/05/24(火) 20:16:32
もーどーでもいーよ

825 :デフォルトの名無しさん:2005/05/24(火) 21:19:43
if(StrCmpI("NULL","null")==0)
  MessageBox(0,"NULLとnullは同じです","結果",MB_OK);
else
  MessageBox(0,"NULLとnullは違います","結果",MB_OK);


こうすればNULLとnullは同じだということになるけど?

826 :デフォルトの名無しさん:2005/05/24(火) 21:23:54
強力な馬鹿登場

827 :デフォルトの名無しさん:2005/05/24(火) 21:25:32
刷り込まれてますね

828 :デフォルトの名無しさん:2005/05/24(火) 21:38:38
if(StrCmp("NULL","null")==0)
  MessageBox(0,"NULLとnullは同じです","結果",MB_OK);
else
  MessageBox(0,"NULLとnullは違います","結果",MB_OK);


でもこうすればやっぱりNULLとnullは違う

829 :デフォルトの名無しさん:2005/05/24(火) 21:46:28
MSDN 的には null だったり NULL character だったりするようだが、
賢い漏れらは '\0' を使っておけば面倒な論争もガッも不要。

830 :751:2005/05/24(火) 21:56:05
>>759
できたよ! 本当にありがとう。

831 :デフォルトの名無しさん:2005/05/24(火) 22:02:33
プログラム言語Cとしては「ナル文字」なんだがなぁ

832 :デフォルトの名無しさん:2005/05/24(火) 22:25:47
ここは俺のアナルに免じて

833 :デフォルトの名無しさん:2005/05/24(火) 22:31:10
日本語にしようとする事自体が間違っていると思うんだが。
英語読めない奴がプログラマやるな。

834 :デフォルトの名無しさん:2005/05/24(火) 22:33:39
NULLはドイツ語。

835 :デフォルトの名無しさん:2005/05/24(火) 22:36:22
>>834
そういう意味ではなくて、英語の方のMSDNも読めない輩が(ry

836 :デフォルトの名無しさん:2005/05/24(火) 23:05:54
なんの為の日本語版だよ

837 :デフォルトの名無しさん:2005/05/24(火) 23:15:59
池沼のための

838 :デフォルトの名無しさん:2005/05/24(火) 23:20:16
オレオレ

839 :デフォルトの名無しさん:2005/05/24(火) 23:55:15
ここは何のスレですか?

840 :デフォルトの名無しさん:2005/05/25(水) 00:16:07
NULLとnullの仲間たち

841 :デフォルトの名無しさん:2005/05/25(水) 00:35:12
nilとNULも仲間に入れてやれ

842 :デフォルトの名無しさん:2005/05/25(水) 01:18:17
WNDCLASSEX 構造体にメニューをセットする時に、数値をセットする
方法(MAKEINTRESOURCEを使う)と文字列をセットする方法の二つがある
そうですが、後者の方法がわかりません。どの文字列をセットすれば
いいんですか?

843 :デフォルトの名無しさん:2005/05/25(水) 01:22:35
>>842
リソースのIDに文字列入れた時、その文字列
エディタ上では""でくくられてるからわかる

844 :デフォルトの名無しさん:2005/05/25(水) 01:34:35
>>843
サンクスです。でも、リソースエディタでメニューを選択していろいろ探しても""で囲まれた
文字列が見つかりません。resource.rc をテキスト形式で見ても、"ファイル"とか"編集"とか
の文字列はありますが、他にそれらしい文字列がありません。自分で文字列を割り当てるんで
すか?

845 :デフォルトの名無しさん:2005/05/25(水) 01:35:49
>>844
そうだよ
自分でいれるときは、ID_XXXを消して、"の入力からやってみそ

846 :デフォルトの名無しさん:2005/05/25(水) 01:37:21
このスレ、餓鬼が多いな。

847 :デフォルトの名無しさん:2005/05/25(水) 01:52:40
このすれはLonghornhornが出たらWinFX質問箱にアップグレードしますか?
よくわからないので教えて下さい。

848 :デフォルトの名無しさん:2005/05/25(水) 02:18:33
しないだろうよ。

849 :デフォルトの名無しさん:2005/05/25(水) 02:22:13
>>845
なるほど。できました。ありがとうございます。

>>846
おまいのような?

850 :デフォルトの名無しさん:2005/05/25(水) 04:37:36
〜のハンドルは handle of 〜 ですか ?
それとも handle to 〜 ですか ?

ポインタやリファレンスは to、配列は of ですよね。

pointer to 〜
reference to 〜
array of 〜

851 :デフォルトの名無しさん:2005/05/25(水) 08:14:33
リソースを使わず自前でCreateWindowしてEditBoxを作り、
EditBoxにフォーカスがある状態でタブキーが押されたのを検知したいと思っています。

しかしWM_KEYDOWNにVK_TABが来ませんで…
素のままでも、無駄は承知で試しにサブクラス化しても同様です。
リソースのEditBoxに対しサブクラス化した場合は、ちゃんとVK_TABが取れるのですが…。

何か条件がありましたら教えて頂けないでしょうか。WS_GROUP、WS_TABSTOP指定の有無辺りは試しました。

852 :デフォルトの名無しさん:2005/05/25(水) 09:15:39
GetSysColor(RGB(32, 128, 64))

この記述を見かけたんですけど、
これは何をやっているんでしょうか?

ただのRGB(32, 128, 64) とは違うんですか?

853 :デフォルトの名無しさん:2005/05/25(水) 09:35:18
>>852
それはただの間違いかと

854 :851:2005/05/25(水) 09:38:32
WM_CRETEでEditコントロール作成に必要な事をやっていないのが原因でした。
無事(サブクラス化無しで)取得できました。
WS_GROUP、WS_TABSTOPも無しでOKでした。スレ汚し失礼。

855 :デフォルトの名無しさん:2005/05/25(水) 09:43:51
>>851
普通に来るけどなあ・・・
WM_GETDLGCODE で何かしてる?

856 :855:2005/05/25(水) 09:44:24
遅かったのね・・

857 :851:2005/05/25(水) 09:49:11
>>855-856
すいません、試していただいたようで
ありがとうございます

858 ::2005/05/25(水) 10:48:57
あの、、どなたか鶴亀算を解くプログラムをつくってくれないでしょうか?


859 :デフォルトの名無しさん:2005/05/25(水) 10:56:13
>>858
Win32APIで?
なんか勘違いしてるよ

860 ::2005/05/25(水) 10:59:21
Borland Delphi6、、、、とかいうやつ?

861 :デフォルトの名無しさん:2005/05/25(水) 11:00:28
>>860
それじゃ、Delphiスレ池

862 ::2005/05/25(水) 11:02:03
わかりますた

863 :デフォルトの名無しさん:2005/05/25(水) 11:30:35
Delphiスレの住人には迷惑な話だなあ

864 :デフォルトの名無しさん:2005/05/25(水) 11:49:50
>>863みたいな奴の方が迷惑

865 :デフォルトの名無しさん:2005/05/25(水) 13:45:25
ワロス

866 :デフォルトの名無しさん:2005/05/25(水) 13:57:23
>>850
ハンドルはof
それぞれ言葉の意味合いを考えればわかるだろう?

867 :デフォルトの名無しさん:2005/05/25(水) 16:59:35
ここでよいのかどうか分かりませんが、教えてください。

エラー時に自滅するスレッドを作ってそのスレッドが起動完了したか、エラーかを判断し
3回リトライするプログラムを書きました。

成功判断はイベントで、失敗判断はスレッドの終了で判定させようと思い、
m_pThread->PostThreadMessage(WM_APP_READY, 0, 0);
で初期化実行させた後に
hWait[0] = m_evtInit;
hWait[1] = m_pThread->m_hThread;
switch ( WaitForMultipleObjects(2, hWait, FALSE, INFINITE) ) {
       :
       :
}

としました。

1回だけなら思ったとおりに動くのですが、この処理にリトライ処理を加えようとして、
WAIT_OBJECT_0 + 1の場合はスレッドのオブジェクトをdeleteした上で再度スレッド
を作成し、判定処理を行おうとしたのですが、PostThreadMessageのメッセージが
処理される前にWaitForMultipleObjectsのWAIT_OBJECT_0 + 1になってしまいます。

WaitForMultipleObjectsの使い方、間違ってますか?

868 :867:2005/05/25(水) 17:02:28
実際にはこんなコードです。
  for ( INT retry = 0 ; retry < 3 && rsts != TRUE ; retry ++ ) {
    if ( m_pThread == NULL ) {
      // スレッドをサスペンドモードで作成します
      m_pThread = (CThreadClass*)AfxBeginThread(RUNTIME_CLASS(CThreadClass),0,0,CREATE_SUSPENDED,NULL);
      m_pThread->m_bAutoDelete = FALSE;
      m_pThread->m_pWnd = this;
      m_evtInit = m_pThread->m_evtInit;

      m_pThread->ResumeThread();
    }

    m_pThread->PostThreadMessage(WM_APP_READY, 0, 0);
    hWait[0] = m_evtInit;
    hWait[1] = m_pThread->m_hThread;
    switch ( WaitForMultipleObjects(2, hWait, FALSE, INFINITE) ) {
    case WAIT_OBJECT_0 :
      rsts = TRUE;
      break;
    case WAIT_OBJECT_0 + 1:
      delete m_pThread;
      MessageBox("初期化失敗");
      m_pThread = NULL;
      break;
    }
  }



869 :デフォルトの名無しさん:2005/05/25(水) 20:52:58
ListViewで不明な点があるので質問させて頂きます。
使用環境はVC++ Win32 非MFC。

ListView内のアイテムを選択すると選択アイテム部分がコンボボックスになり
入力またはアイテム選択後に普通のListViewアイテムにもどる。

というような事をしているツール(VSなどでも)をよく見かけますが
これはどのように実現すればよいのでしょうか?
コモンコントロール固有のスタイルをみてみましたがそれらしい物もみつかりませんでした。

870 :デフォルトの名無しさん:2005/05/25(水) 21:18:49
本当のCOMBOBOXをつくっておいて、
クリックのタイミングに合わせて
表示しているのです。

871 :デフォルトの名無しさん:2005/05/25(水) 21:50:44
まず例として。
1 hWnd = FindWindow("Hoge" , NULL);
2 if (hWnd) {
3     GetWindowThreadProcessId (hWnd, &dwPID);
4     hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);
5 }

上記のような例の4行目で、OpenProcessを失敗させるには、どのようにウインドウを作成すれば
よいのでしょうか?

872 :デフォルトの名無しさん:2005/05/25(水) 22:49:55
>>871
Windowを作ったプロセスを作るときのCreateProcessの引数psaProcessでありったけの制限をかけてやればよい。

873 :デフォルトの名無しさん:2005/05/26(木) 01:05:22
>>866
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windowclasses/windowclassreference/windowclassstructures/wndclass.asp

874 :デフォルトの名無しさん:2005/05/26(木) 09:05:36
handle to - がやたらたくさんでてくるなw

875 :デフォルトの名無しさん:2005/05/26(木) 09:33:43
おいおい、また揚げ足取り君か?

876 :デフォルトの名無しさん:2005/05/26(木) 10:22:27
http://www.google.com/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%22handle+to%22+site%3Amsdn.microsoft.com&btnG=Google+%8C%9F%8D%F5&lr=
http://www.google.com/search?hl=ja&ie=Shift_JIS&oe=Shift_JIS&q=%22handle+of%22+site%3Amsdn.microsoft.com&btnG=Google+%8C%9F%8D%F5&lr=

どっちかつうとtoじゃ

877 :デフォルトの名無しさん:2005/05/26(木) 14:38:37
ビットマップ画像をきれいに拡大縮小する方法を教えてください

878 :デフォルトの名無しさん:2005/05/26(木) 14:50:22
>>877
このスレ的には、
SetStretchBltModeでHALFTONEを指定する

879 :デフォルトの名無しさん:2005/05/26(木) 15:26:15
APIの一覧表でComponent VersionがNetwork/LMとなっているものがあるのですが
このLMとは何のことなんでしょうか?
I_BrowserDebugTrace
I_NetLogonControl2
NetAccessCheck
もっといっぱいありますがこのようなAPIが載っています。

880 :デフォルトの名無しさん:2005/05/26(木) 15:27:33
LanManager (=MS Network)じゃないかね

881 :デフォルトの名無しさん:2005/05/26(木) 15:35:24
WM_TIMERってメッセージループを回さなくても飛んでくるのでしょうか?
WM_TIMERがきたときにメッセージボックスを表示させてみたら、
大量のメッセージボックスが表示されてしまったのですが。

882 :デフォルトの名無しさん:2005/05/26(木) 15:58:11
>>881
メッセージが来たときにOSが自動的に呼び出してるから重複呼び出しされる。
別にWM_TIMERに限ったことではない。

883 :デフォルトの名無しさん:2005/05/26(木) 15:58:49
メッセージキュー

884 :デフォルトの名無しさん:2005/05/26(木) 16:29:06
WM_PAINTは1つにまとめられるけどな

885 :879:2005/05/26(木) 16:45:50
>>880
Lan Managerのことなんですね。ようやく理解できました。
ありがとうございます。

886 :デフォルトの名無しさん:2005/05/26(木) 16:50:48
メッセージボックスの内部でも独自のメッセージループが回っているから。

887 :デフォルトの名無しさん:2005/05/26(木) 18:07:46
WM_PAINTって不思議だよね。
SendMessageでは送れない。
InvalidateRectを実行しないと送信されない。
なんでだろう?

888 :デフォルトの名無しさん:2005/05/26(木) 18:10:11
>>886
それは違うだろ。
MessageBoxは内部でDialogBox関数を呼び出してるだけと思われ。

889 :デフォルトの名無しさん:2005/05/26(木) 18:20:29
>>887
表示が一番時間がかかるから、なるべく後回しにして
少ない回数で済まそうという仕組み
今作ったらもうちょっと大雑把になるのかなぁ

890 :デフォルトの名無しさん:2005/05/26(木) 18:27:25
>>888
そのDialogBoxは内部でメッセージループが回ってる

891 :デフォルトの名無しさん:2005/05/26(木) 18:57:07
>889
>今作ったらもうちょっと大雑把になるのかなぁ
Longhornのことかい?

892 :デフォルトの名無しさん:2005/05/26(木) 20:09:07
中国語とかのファイル名ってUNICODEじゃないと扱えないでしゅか?

893 :デフォルトの名無しさん:2005/05/26(木) 20:19:35
中国語コードでも扱えるよ


894 :デフォルトの名無しさん:2005/05/26(木) 20:51:26
>>892 我看他.txt

895 :デフォルトの名無しさん:2005/05/26(木) 20:59:04
Win32で、.xlsファイルを操作する方法を教えてください。
一般的にどのような方法が使われていますか?

896 :デフォルトの名無しさん:2005/05/26(木) 21:34:36
CreateFile

897 :デフォルトの名無しさん:2005/05/26(木) 22:06:43
一般的かどうかは微妙だな>CreateFileにxls

898 :デフォルトの名無しさん:2005/05/26(木) 22:07:59
.xlsファイルはバイナリだろ

899 :デフォルトの名無しさん:2005/05/26(木) 22:08:06
マルチでした

900 :デフォルトの名無しさん:2005/05/26(木) 22:11:27
はわわ

901 :デフォルトの名無しさん:2005/05/26(木) 22:12:49
EXCEL9.OLBとかで検索しる


902 :デフォルトの名無しさん:2005/05/26(木) 22:15:17
Win32なのかなのか

903 :デフォルトの名無しさん:2005/05/26(木) 22:25:03
.xlsのフォーマット仕様書でもあればバイナリレベルで解析できそうだが

904 :デフォルトの名無しさん:2005/05/26(木) 22:52:22
ライブラリがあるじゃん、フリーで

905 :デフォルトの名無しさん:2005/05/26(木) 23:01:45
ライブラリの中の人も大変だな

906 :デフォルトの名無しさん:2005/05/26(木) 23:41:53
Platform SDK と MSDNライブラリの違いを教えてください。

907 :デフォルトの名無しさん:2005/05/26(木) 23:44:42
Platform SDK = 開発ツール

MSDNライブラリ = マニュアル・資料

908 :デフォルトの名無しさん:2005/05/26(木) 23:53:47
SDKはツールとは微妙に違うとおも

909 :デフォルトの名無しさん:2005/05/26(木) 23:58:07
そのまま ソフトウェア開発キット でいいとおもうんだが。

910 :デフォルトの名無しさん:2005/05/26(木) 23:58:26
>>907
ということは Visual C++ == Platform SDK ですか?

911 :デフォルトの名無しさん:2005/05/27(金) 00:06:48
VC++にはPlatform SDK内包されてるな

SDK ツール+ライブラリ+ドキュメント+サンプルコード
じゃないかなあ・・・

912 :デフォルトの名無しさん:2005/05/27(金) 00:09:03
Platform SDK = 開発用ヘッダ、ライブラリ、ソース、開発補助ツール、サンプル
MSDNライブラリ = マニュアル、資料

IDE(開発環境本体)とコンパイラの類は入ってない。


913 :デフォルトの名無しさん:2005/05/27(金) 00:13:46
デバッグのためにメッセージボックスに整数を出力させたいのですが、いい
方法があるでしょうか。

char buf[1024];
wsprintf(buf, "%d", (int)variable);
MessageBox(0, buf, "", MB_OK);

これだといちいち面倒くさくて。。。

914 :デフォルトの名無しさん:2005/05/27(金) 00:16:37
>>913
>>509


915 :デフォルトの名無しさん:2005/05/27(金) 00:17:46
何が面倒なのかわからんと、いい方法が思いつかない

916 :デフォルトの名無しさん:2005/05/27(金) 00:19:00
>>913
いちいち、メッセージボックスが出るのが嫌なら、OutputDebugString
文字列バッファを宣言して、
wsprintfするのがメンドイなら>>509あたりを参考に関数にしる

917 :デフォルトの名無しさん:2005/05/27(金) 00:23:02
>>914
これだともっと長いじゃん。

>>915
主に、タイピングの手間です。



918 :デフォルトの名無しさん:2005/05/27(金) 00:26:14
だから関数化して、ヘッダにでも突っ込んどけば良い話だろうが・・・。


919 :デフォルトの名無しさん:2005/05/27(金) 00:29:28
>>918
いちいちヘッダをインクルードしなくちゃならないし。。。
それに自作ライブラリを管理するのも大変だし。

920 :デフォルトの名無しさん:2005/05/27(金) 00:31:56
VCでも買ってブレークして変数確認するのが手っ取り早い。
これでOKか?

921 :デフォルトの名無しさん:2005/05/27(金) 00:32:26
そんなに面倒なら、プログラム書くのもやめればいいのに・・・。
生産性と保守性を上げる為の小さな自前ライブラリを維持するのくらい、
いちいちコード記述する面倒に比べれば最終的に小さなものになるでしょ。

こういうのって、プログラム組む時にセンスとして現れるよな。
めんどくささを如何にしてプラス方向に転化させるかって。


922 :デフォルトの名無しさん:2005/05/27(金) 00:37:41
>>920
VC++もってます。いちいちブレークポイントを設定してデバッガ
を起動するのも面倒くさいです。それにデバッガは嫌いです。
「なんとかかんとか.dllの中はトレースできない」とかいう
メッセージが出てくるので。

>>921
いや、いい方法がないなら仕方ないです。面倒くさくても我慢します。

923 :デフォルトの名無しさん:2005/05/27(金) 00:39:25
ごめんマジで力の抜けた笑いがでた。


924 :デフォルトの名無しさん:2005/05/27(金) 00:40:26
そんな歯糞にもならないようなコードは毎回書いても大したことないじゃん。

925 :デフォルトの名無しさん:2005/05/27(金) 00:40:38
頭固いって言われるだろ

926 :デフォルトの名無しさん:2005/05/27(金) 01:32:17
>>922
>VC++もってます。いちいちブレークポイントを設定してデバッガ
>を起動するのも面倒くさいです。それにデバッガは嫌いです。
>「なんとかかんとか.dllの中はトレースできない」とかいう
>メッセージが出てくるので。

いちいちメッセージボックスが出てきてOKボタン押すのも面倒くさいです。
特に何度も回るループの中に書いてしまった日には後悔しきりです。

むしろ適当なログファイルを C:\debug.txt に吐かせるとか、
イベントログ(orシステムログ)に経過を出力させる方がスマートですよ。


927 :デフォルトの名無しさん:2005/05/27(金) 01:36:32
ログファイルやイベントログ見るのなんか面倒くさすぎて涙が出ます。

いい加減にしてください!

928 :デフォルトの名無しさん:2005/05/27(金) 01:39:39
VC++でTRACE("%d", variable);

929 :デフォルトの名無しさん:2005/05/27(金) 01:39:51
金を払うのが面倒じゃないなら、漏れが月80万でやってやるよ。


930 :デフォルトの名無しさん:2005/05/27(金) 05:10:22
ファイルに含まれるアイコンの数を取得する方法を教えてください

931 :デフォルトの名無しさん:2005/05/27(金) 11:05:08
オレはデバッグにワトソンを使っているのだが、とうとう win98 でも逆アセを
吐かなくなった。最近の win update はいろいろやってくれる。

932 :デフォルトの名無しさん:2005/05/27(金) 11:19:54
>>930
ExtractIcon の第3引数に-1

933 :デフォルトの名無しさん:2005/05/27(金) 12:09:40
>>927
アフォだなー
syslog は tail -f で見るに決まってる醤

934 :デフォルトの名無しさん:2005/05/27(金) 12:12:03
less に F だけどな、オレは

935 :デフォルトの名無しさん:2005/05/27(金) 14:42:39
Win2k/XPでBSODを意図的に起こす手法があります。
それをプログラム側から行おうとしているのですがうまくいきません。

レジストリの値を書き換えて再起動した後、手動で右のCtrlを押しながら
ScrollLockを2回押すときちんと実行されます。しかし以下のように記述して
実行しても何も起こりません。

-------------------------------------------------
Keybd_event(VK_RCONTROL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_SCROLL, 0, 0, 0);
Keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_RCONTROL, 0, KEYEVENTF_KEYUP, 0);
-------------------------------------------------

キーはきちんと押せているみたいなのですが。。
原因と改善策を希望します。よろしくお願い致します。

936 :デフォルトの名無しさん:2005/05/27(金) 15:36:33
mp3を再生する一番簡単な方法を教えてください。やはりDirectShowでしょうか?

937 :デフォルトの名無しさん:2005/05/27(金) 15:38:28
mp3

938 :デフォルトの名無しさん:2005/05/27(金) 16:11:41
>>935
MSはその機能はドライバがキーを受け取らないと駄目って言ってるから、keybd_eventじゃ無理な気ガス

939 :デフォルトの名無しさん:2005/05/27(金) 16:17:45
>>931
マジ?
俺もDr.ワトソンは重宝してるのに・・・。

まぁDr.ワトソンでログを拾うことすらできない香具師が多くなってきたから、
Dr.ワトソン相当の機能を自前のEXEに持たせてしまってるよ。

940 :デフォルトの名無しさん:2005/05/28(土) 06:22:54
質問です。
ウインドウのメッセージループってどういう風に書くのが確実なんでしょうか?
要求としては、メッセージループの空き時間にOnIdle()という関数を実行したいと考えています。
そこで、理想的な動作として、以下のソースを記述しました。(ホントはネットで拾った。汗
しかし、動作は理想的なのですが、これではウインドウが消えた後もメッセージループを抜けることはありませんでした。
どういう記述をすれば理想的な動作を両立できますか?
int CWindow::MsgLoop(){
    MSG msg;
    int Ret;
    while (1) { // メインループ 
        if (PeekMessage (&msg,m_hWnd,0,0,PM_NOREMOVE)) {
            Ret=GetMessage (&msg,m_hWnd,0,0) ;// メッセージ処理 
            if (Ret == 0 ) break;
            if (Ret == -1 ) break;
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }else{
          OnIdle(); //独自の処理 
        }
    }
    return msg.wParam;
}

941 :デフォルトの名無しさん:2005/05/28(土) 06:46:20
age

942 :デフォルトの名無しさん:2005/05/28(土) 07:04:15
int CWindow::MsgLoop(){
    MSG msg;
    int Ret;
    while (1) { // メインループ 
        if (PeekMessage (&msg,m_hWnd,0,0,PM_REMOVE)) {
            if( msg.message == WM_QUIT )
                break;

            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }else{
          OnIdle(); //独自の処理 
        }
    }
    return msg.wParam;
}

943 :デフォルトの名無しさん:2005/05/28(土) 07:15:29
>>942
レスthx!
早速試してみます。

944 :デフォルトの名無しさん:2005/05/28(土) 07:56:40
すまん、質問だが、
コンボボックスの右矢印をクリックすることで、リスト上のメニューが表示されるが、
そのメニューにサブメニューとかをつけることは出来ますか?
つまり通常のメニューで使われているようなものを表示させることはできますか?

945 :デフォルトの名無しさん:2005/05/28(土) 08:20:30
>if (PeekMessage (&msg,m_hWnd,0,0,PM_NOREMOVE)) {
> Ret=GetMessage (&msg,m_hWnd,0,0) ;// メッセージ処理

なんで m_hWnd のメッセージだけ受けてるんだ?
これが NULL だったら WM_QUIT 受けれるのに…


946 :デフォルトの名無しさん:2005/05/28(土) 08:29:04
>>945
な!そんなカラクリが!?
WM_QUITがこなくて困ってたところでした。
ふぁああああああっく。(TT

レスThx。できました。

947 :942:2005/05/28(土) 08:29:21
あ、やべ、そこ気付いてなかったや・・・
でもまぁ、>>940のじゃWM_QUIT受けても意味無いけどな

ってわけで>>943
↓こっちでやってくれ

int CWindow::MsgLoop(){
    MSG msg;

    while (1) { // メインループ 
        if (PeekMessage (NULL, 0, 0, PM_REMOVE)) {
            if( msg.message == WM_QUIT )
                break;

            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }else{
          OnIdle(); //独自の処理 
        }
    }
    return msg.wParam;
}


948 :デフォルトの名無しさん:2005/05/28(土) 08:43:59
ハードをパーティションではなくスライスに分割したいのですが、
どのAPIを使えばいいですか?


949 :デフォルトの名無しさん:2005/05/28(土) 08:48:15
>>947
レスThx!

余談ですが、
これ(ttp://techtips.belution.com/ja/vc/0009/)を参考にして汎用ウインドウクラスをつくってるんです。
MFCに依存したくないんでこういう形態をとってます。(そもそもMFC使ったことないし。
で回答をいただいた結果、ウインドウ1個はできるようになりました。
あとは複数に対応するだけです。感謝。


950 :デフォルトの名無しさん:2005/05/28(土) 08:56:58
俺もそんなことやろうとしたことはあったけど結局WTLに落ち着いた。

951 :935:2005/05/28(土) 08:58:54
>>938
なるほど!どうもありがとうございます。

952 :デフォルトの名無しさん:2005/05/28(土) 09:21:32
>>949
複数のウィンドウ?
複数ウィンドウ作るならその数だけそのクラスのインスタンスを作るだけだが?


953 :デフォルトの名無しさん:2005/05/28(土) 10:12:29
質問ですが、VisualStdioやTeraPadのように、特定の文字列に色をつけたりすることをエディットボックスでできるのでしょうか?
エディットボックスの全ての文字色を変更するのはわかったのですが、特定の文字列だけ変更したい場合にはどのようにすればいいのでしょうか?
ご教授お願いします

954 :デフォルトの名無しさん:2005/05/28(土) 10:21:33
>>953
エディとボックスにそんな高度なことを求めてはならない。

955 :デフォルトの名無しさん:2005/05/28(土) 11:36:41
リッチなエディに求めるんだ。

956 :デフォルトの名無しさん:2005/05/28(土) 12:08:48
RegisterClipboardFormatで、
自分専用のクリップボードフォーマットの番号をOSから頂いたんですが、
この情報はレジストリに登録されるのでしょうか?
それとも、一時的なもので、再起動してRegisterClipboardFormatすると
再度割り当てが行われるものなのでしょうか?
(極力レジストリは汚したくないもので・・・)



957 :デフォルトの名無しさん:2005/05/28(土) 14:39:16
構造体のサイズを要求する構造体は多くありますが、例えば、
WNDCLASSEX wc;
として、
wc.cbSize = sizeof(WNDCLASSEX);/* 型を指定 */
wc.cbSize = sizeof(wc);/* 変数名を指定 */
の2つは、どちらにしておいたほうがいいのでしょうか。

958 :デフォルトの名無しさん:2005/05/28(土) 14:45:05
wcはwater closetだから
やめといたほうがいいよ

959 :デフォルトの名無しさん:2005/05/28(土) 15:06:19
>>957
どっちでも一緒だが、俺は型名指定して使ってるな。


960 :デフォルトの名無しさん:2005/05/28(土) 15:09:05
一長一短ある。

変数名にしておけば、構造体が拡張されて、もし名前が変わっても大丈夫。
もし型名にしていると、変更し忘れのミスが発生する恐れがある。

型名にしておけば、うっかりポインタをsizeofしてしまうミスを防げる。

961 :デフォルトの名無しさん:2005/05/28(土) 15:23:46
Win32API関数は全部でいくつですか?

962 :デフォルトの名無しさん:2005/05/28(土) 15:24:42
2567個です

963 :デフォルトの名無しさん:2005/05/28(土) 15:29:31
おれも今数えたら2567個だった。
このスレの常識だね。

964 :デフォルトの名無しさん:2005/05/28(土) 15:30:51
>>962
ありがとうございました。

965 :デフォルトの名無しさん:2005/05/28(土) 15:31:10
俺も一応数えてみたら2567個だった。
わりと常識だね

966 :デフォルトの名無しさん:2005/05/28(土) 15:33:54
>>963
ありがとうございました。

967 :デフォルトの名無しさん:2005/05/28(土) 15:34:29
>>965
ありがとうございました。

968 :デフォルトの名無しさん:2005/05/28(土) 15:51:03
俺、MSDN無しでコーディングできるWin32API関数20個行かないな・・・。少な。

969 :デフォルトの名無しさん:2005/05/28(土) 15:52:08
全て覚える必要などない

970 :デフォルトの名無しさん:2005/05/28(土) 15:57:05
CreateWindowExなどExが付く関数がたくさんありますが、これは何の略ですか?

971 :デフォルトの名無しさん:2005/05/28(土) 15:58:05
セックス

972 :デフォルトの名無しさん:2005/05/28(土) 15:58:57
>>970
たぶんExtra
どれもこれも元になったExの付かない関数がある。

973 :デフォルトの名無しさん:2005/05/28(土) 16:00:10
Extendedだと思ってた。。。

974 :デフォルトの名無しさん:2005/05/28(土) 16:00:23
Expectoration

975 :デフォルトの名無しさん:2005/05/28(土) 16:03:11
SEXがあるということはExのないSもあるのか?
SMのSか。

976 :デフォルトの名無しさん:2005/05/28(土) 16:29:19
CreateToolbar() が見あたらないな…CreateToolbarEx() はあるのに。

977 :デフォルトの名無しさん:2005/05/28(土) 16:35:14
そのAPI作ってた時にセックスしてた
Exはその記念

978 :デフォルトの名無しさん:2005/05/28(土) 16:37:03
年中セックスしてたかすっげー長い暗黒時代だったかどっち

979 :デフォルトの名無しさん:2005/05/28(土) 16:37:44
InitCommonControlSex() とかはいかにも怪しいな。

980 :デフォルトの名無しさん:2005/05/28(土) 16:39:23
WNDCLASSEX構造体も怪しいだろ

981 :デフォルトの名無しさん:2005/05/28(土) 16:41:38
顧問コントロールセックス

982 :デフォルトの名無しさん:2005/05/28(土) 16:44:23
リストビューのアイテムを並び替えるにはどうすればよろしいでしょうか?

983 :デフォルトの名無しさん:2005/05/28(土) 16:54:06
外付けのHDDって、GetDriveType()は何を返しますか?
USBのヤシと、IEEE1394のヤシが知りたいです。

984 :デフォルトの名無しさん:2005/05/28(土) 17:01:45
DRIVE_REMOVABLE

985 :デフォルトの名無しさん:2005/05/28(土) 17:16:55
スレ立てるまでもない質問 67 から移動して参りました。

>873 名前:デフォルトの名無しさん[sage] 投稿日:2005/05/28(土) 16:24:05
>VC6で最新でなくていいんですが、新しい目のプラットフォームSDKを使いたいんですけど
>どこかで入手できないものでしょうか?shell32.lib(shguid.obj)でエラーが出るのが致命的なんです。

lib.exeを使ってデバッグ情報を消してやればいいのでしょうか?

986 :デフォルトの名無しさん:2005/05/28(土) 17:32:52
「質問の仕方を学ぶスレ」からはじめよ。

987 :デフォルトの名無しさん:2005/05/28(土) 17:35:25
何をしたらどうなって、どうしたいのか書いてくれないか
SDKなら↓からもってこれないか
http://msdn.microsoft.com/downloads/

988 :デフォルトの名無しさん:2005/05/28(土) 17:38:02
>>972
>>973も言っているがExtendedだと思う
根拠は引数のdwExStyleの説明がextended window styleだから、というくらいだが
Extraじゃ拡張ってより、オプションって感じになっちゃうしなぁ

989 :デフォルトの名無しさん:2005/05/28(土) 17:44:16
すみません、再セットアップして環境が復元できなくなってしまいあせっておりました。

現在、VC6を使うとプラットフォームSDKに含まれる複数のライブラリでリンクエラーが出ます。
>fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
これを解決するには、対応PSDKを導入するか、デバッグ情報を完全に削除するしかないと考えました。

解決手段の候補として下の二つがありましてどちらかの手段を取りたいのですが、

1.2003年の年末あたりのPSDKをどこかから入手する
2.互換性のないデバッグ情報は削除する

1は過去バージョンの入手方法が分かりません。
2はlink.exe dumpbin.exe lib.exeのオプションとMSDNのドキュメント見ましたがデバッグ情報の削除のやり方は分かりませんでした。

どちらかのやり方で解決したいのですが、方法を存知の方はいらっしゃいませんか?
2001年ごろのPSDKのバックアップならあるのですが、これの導入は最終手段にしたいのです。


990 :デフォルトの名無しさん:2005/05/28(土) 18:07:07
>>984 マジっすか。

991 :デフォルトの名無しさん:2005/05/28(土) 18:16:47
コマンドコンソールを解析しようと考え、Spy++ でメッセージのやり取りを
観測しようと試みましたが、
> 指定のウィンドウはスパイできません。Windows は、このウィンドウの
> メッセージ ストリームへアクセスすることを許可しません。
とエラーが表示されてしまいます。

何とかして見る方法はないものでしょうか。

992 :デフォルトの名無しさん:2005/05/28(土) 18:21:44
次スレ
http://pc8.2ch.net/test/read.cgi/tech/1117271829/

993 :デフォルトの名無しさん:2005/05/28(土) 19:39:06
>>990
DRIVE_FIXEDの方が多いよ。

994 :デフォルトの名無しさん:2005/05/28(土) 22:30:04
ume

995 :デフォルトの名無しさん:2005/05/28(土) 22:30:45


996 :デフォルトの名無しさん:2005/05/28(土) 22:34:01
次スレ
http://pc8.2ch.net/test/read.cgi/tech/1057225723/

997 :デフォルトの名無しさん:2005/05/28(土) 22:34:19
あげ

998 :デフォルトの名無しさん:2005/05/28(土) 22:34:55
「……正解! いよいよ次の問題で100万円、という事ですが、自信は?」
「愚問ですね、さっさと1000万持って帰りたいくらいですよ」
「すごい自信だ! ……では問題。『次の漫画のうち、アメリカで実写版の映画が放映されるのはどれ?A、北斗の拳  B、ジョジョの奇妙な冒険C、ドラゴンボール D、魁! 男塾』」
「………っ!」
明らかに動揺を隠せない回答者田中。
「時間はたーっぷりあります。ライフラインも3つ残っている。」
そう話しているが、みのの表情は「さっさと答えろ」と言わんばかりの顔をしている。答えは勿論Cだ、Cなのだが……。
「……ええと、Cです、ね。はい」
「ファイナルアンサー?」
ここでファイナルアンサーと言ってしまえばどんなに気が楽なのか。次の問題に進み、当然私はその問題も楽に答える事が出来るだろう。
が! ここでジョジョが出てきた以上! 触れん訳にはいかんだろうッ!
「…ふ…ぞ…ート……も…ほど…ヒー」
なにやら呟く田中。
「……え!?」
「るえる…ハ…ト つきる…ど…ト」
「え? なんと?」
「震えるぞハート! 燃え尽きる程ヒィート!」
「え? え?」
「答えはC! だが俺はあえてこう言おう! 映画になる期待と希望を込めてBと!」
「ファ……ファイナルアンサー?」
「ファイナルアンサーッ! そしてお前は『残念、正解はCのドラゴンボール』と言うッ!」
「…………………………残念ッ! 正解はCのドランボール! ハッ!」
バー( ´-`)ーン
「アリー・ヴェデルチ!(さよならだ!)」
感涙を流すみの。そして惜しみない拍手と湧く会場。決して語られる事の無いミリオネアがそこにあったという……。

999 :デフォルトの名無しさん:2005/05/28(土) 22:36:13
接着厨は行ってよしモナー(アーアー
しかし裳前らは神だな(ワロタ
藻俺様のようなツーチャン歴が長いDONに歯向かうとどうなるか分かってるんだろうな罠?
初心消防車があんまり接着してると、いい加減ブラクル貼るぞテスト。
直リンも出来ない初心者は家具氏だなと一時間マジスレするぞ(vy
まあツーシャネラはこのくらいのスレが送信できて当たり前だ。
こんなことも出来ない家具氏は回線で首切って寝たら釣るぞ(糞

1000 :61.132.192.61.east.flets.alpha-net.ne.jp:2005/05/28(土) 22:36:39
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援してくださいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

224 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)