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


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

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
その都度取得と開放を繰り返すので問題ないと思います。


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