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


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

Win32API質問箱 Build15
1 名前:デフォルトの名無しさん :03/11/20 23:51
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
最低限、最新スレくらいは質問する前に検索ぐらいしてください。
過去スレ・参考は>>2-5くらいを参照してください。



2 名前:デフォルトの名無しさん :03/11/20 23:51
- 過去スレ
Build14:http://pc2.2ch.net/test/read.cgi/tech/1065328397/
Build13:http://pc2.2ch.net/test/read.cgi/tech/1059549320/
Build12:http://pc2.2ch.net/tech/kako/1056/10560/1056033645.html
Build11:http://pc2.2ch.net/tech/kako/1052/10526/1052651750.html
Build10:http://pc2.2ch.net/tech/kako/1047/10478/1047819779.html
Build9:http://pc2.2ch.net/tech/kako/1044/10449/1044929160.html
Build8:http://pc2.2ch.net/tech/kako/1040/10409/1040964626.html
Build7:http://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
Build6:http://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
Build5:http://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
Build4:http://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
Build3:http://pc.2ch.net/tech/kako/1017/10170/1017072275.html
Build2:http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Build1:http://pc.2ch.net/tech/kako/991/991576947.html


- MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/index.html
- Platform SDK Update
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Google
http://www.google.com


3 名前:みき(^-^) ◆MIKIDyAWSg :03/11/20 23:53
3げっと

4 名前:デフォルトの名無しさん :03/11/20 23:57
2⊂(゚ロ゚⊂⌒`つ≡≡≡≡≡≡≡≡≡≡

5 名前:デフォルトの名無しさん :03/11/21 03:20
5げとーん

6 名前:デフォルトの名無しさん :03/11/21 03:25
ListViewのリポートの話です。

コラム数が1つでListView_SortItemsでソートすると、ちゃんとソートしてくれないです。
中途半端にソート処理が中断している感じになります。
複数回繰り返すとだんだん正しくなっていきます。

比較関数は自前のをわたしています。

コラム数が2つ以上だと正常に動きます。
今は幅0のダミーをおいて凌いでいるのですが、何でだかわかります?



7 名前:デフォルトの名無しさん :03/11/21 03:30
LBS_sort
で作ったの?

8 名前:デフォルトの名無しさん :03/11/21 13:01
イベントドブリンって美味しいの?

9 名前:デフォルトの名無しさん :03/11/21 13:25
先輩,質問っす。
1回の WM_PAINT で複数回 ::BeginPaint()〜::EndPaint() やっちゃうと
2回目以降の ::BeginPaint()〜::EndPaint() で何も描画されないっぽいんだけど
これって仕様というか,当たり前すか?
それとも,ちょっと工夫するだけで何回でも ::BeginPaint〜::EndPaint が
できたりするんすか?

10 名前:デフォルトの名無しさん :03/11/21 13:32
>>9
::EndPaint() で更新領域がクリアされるからだと思う。

11 名前:デフォルトの名無しさん :03/11/21 13:39
ttp://black.sakura.ne.jp/~third/system/winapi/win16.html
これあたりを読んでみて。

とりあえず簡単に言うと
・BeginPaintはウィンドウの無効になった部分の描画
・GetDCなどは有効無効関係なしに描画

詳しくは上のURLを読んで見るといいかもね。

12 名前:デフォルトの名無しさん :03/11/21 13:39
>6
途中でGPEが発生して、コントロールが捕まえているとか。

13 名前:6 :03/11/21 14:01
>>12

すみません.
GPEとは何でしょう?初耳です。
情報へのリファレンスでもかまないので教えていただけますか?


14 名前:デフォルトの名無しさん :03/11/21 14:54
>>13
Generic Protection Exception
一般保護例外
英語あってるか自信ない

15 名前:デフォルトの名無しさん :03/11/21 18:36
Generalですな

16 名前:デフォルトの名無しさん :03/11/21 19:10
>>10-11
ありがとうございました。すっきりしましたっす。

17 名前:デフォルトの名無しさん :03/11/21 20:05
DDEについての質問です。
WM_DDE_REQUESTを受け取ったとき、
どうやってTopic名を判断すればよいのでしょうか?
item名しか渡って来ないみたいなので、
返すデータが判断できず困っています。


18 名前:デフォルトの名無しさん :03/11/21 21:12
Winsockを使って常駐型メールチェッカーを作ったんですけど、
時間が経つにつれてだんだんメモリ使用量が増えてしまいます。
メモリリークのチェックルーチンを入れましたがメモリリークはしていないようです。
何が原因か分かる方いたら教えてください。
Win2k+VC6standardです。

19 名前:デフォルトの名無しさん :03/11/21 22:00
それだけで分かるわけ無いだろ

20 名前:18 :03/11/21 22:26
>>19
たしかに。
概要をいうと、ごく普通の非同期Winsockプログラムで、
WSAAsyncSelect()を使ってウインドウにイベント通知させて送受信処理をしています。
3分ごとにPOPサーバーに問い合わせして、その都度WinsockをCloseしています。


21 名前:デフォルトの名無しさん :03/11/22 01:47
ごく普通でないつくりをしているから意図しない動作になっているんだと思うが

22 名前:18 :03/11/22 02:12
なるほど。。。。
くじけそうだよ。

23 名前:デフォルトの名無しさん :03/11/22 03:17
>>22
ソース晒せばいいじゃん

24 名前:デフォルトの名無しさん :03/11/22 03:17
新着メールとか、何かで malloc や calloc をしたなら、絶対に free をしましょう

25 名前:デフォルトの名無しさん :03/11/22 04:25
>>22
Thread抜けるときにAPI使ってない?

26 名前:デフォルトの名無しさん :03/11/22 07:12
リークが心配なら、メールチェック部分を別プロセスにしちまったら?

27 名前:デフォルトの名無しさん :03/11/22 08:10
タスクマネージャのメモリ使用量の列見てうだうだ言ってるだけだろしねや

28 名前:18 :03/11/22 09:38
レスありがとう
>>23 ソースが大きすぎて晒せません。
>>24 mallocはしていませんです。
>>26 別プロセスって別exeにすると言うこと?
>>27 そのとおりです。あと、仮想メモリも見てます。放っておくと仮想メモリも徐々に増えます。

>>25
Threadは使ってないんですけど、なんか引っかかりますね。
WndProcから受信処理を呼び出してAPI呼びまくりだし、
CreateProcessでメールソフト起動したりしてます。

29 名前:デフォルトの名無しさん :03/11/22 11:51
タスクマネージャなどでRunDll32.exeが起動しているとき、
それがどのDLLを起動させたかを見つける方法はないでしょうか?

お願いします。

30 名前:デフォルトの名無しさん :03/11/22 12:19
デバッグカーネルじゃダメかな

31 名前:デフォルトの名無しさん :03/11/22 16:06
>>28
CreateProcessで得られるProcessInfoの中に、プロセスハンドルとスレッドハンドルが返るけど
両方とも破棄してる?
#スレッドハンドルは忘れられがち。
Thread云々を聞いたのは、ThreadやProcessの終了にAPIを使うとデストラクタが呼ばれないから。

32 名前:29 :03/11/22 16:53
デバッグカーネルちょっと調べてみましたが、難しそうなのであきらめます。
ありがとうございました。

33 名前:デフォルトの名無しさん :03/11/22 16:55
ReadProcessMemoryでRunDllの引数を持ち出してくるのはどうか。

34 名前:デフォルトの名無しさん :03/11/22 18:00
>>18 切り分けできてないならサンプル作って漏れるか試してみたら?

35 名前:デフォルトの名無しさん :03/11/22 18:03
リストビューについて質問です。

@リストビューでアイテムを複数選択(このときLVN_ITEMCHANGINGでFALSEを返すようにする)
Aリストビューでアイテムを選択(このときLVN_ITEMCHANGINGでTRUEを返すようにする)
Bリストビューでアイテムを選択(このときLVN_ITEMCHANGINGでFALSEを返すようにする)

とします。
通常であれば、Bの選択で1個をクリックすれば、@で複数選択したのは解除されて、
Bでクリックした1個だけが選択状態になるのですが、@で選択したアイテムの選択状態
が解除されません。何か私が間違っている点があるか、アドバイスをいただけないでしょうか?
質問に不足があれば御指摘願います。

36 名前:デフォルトの名無しさん :03/11/22 18:22
引数を調べるだけなら、
Microsoft Debugging Tools
http://www.microsoft.com/whdc/ddk/debugging/default.mspx
tlist.exe pid

37 名前:デフォルトの名無しさん :03/11/22 20:04
>>35
Aは問題ないってと?

38 名前:29 :03/11/22 20:09
>>36
それでうまくいきそうです。
ありがとうございます。

39 名前:デフォルトの名無しさん :03/11/22 20:26
>>35
LVN_ITEMCHANG捕まえて結局何をしたいのだ? 目的が見えてこない。

>>37
普通、セルを選択できないようにする時にTRUEを返す。

40 名前:35 :03/11/22 20:38
>>39
ある処理をしている間はアイテムの選択状態を変えられないようにしたいのです。
それはうまくいくのですが、その後にBで挙動がおかしくなるのです。
検索していくつかのページを見ても、
「選択できないようにするにはLVN_ITEMCHANGINGを捕まえてTRUEを返す」
という程度のことしか書いていないのでどうすればよいかわからず
質問させていただいた次第です。

41 名前:デフォルトの名無しさん :03/11/22 20:41
ウインドウ作成したあと以外にUpdateWindowは、どおいう場合に使うのか教えてください!

42 名前:デフォルトの名無しさん :03/11/22 20:50
>>41
WM_PAINTが処理されるのを待てないとき

43 名前:デフォルトの名無しさん :03/11/22 21:11
>>40
とりあえず余計なコードを省いてリストビューだけのウインドウで試してみたら?
それで駄目なら作成時のスタイルが変とか?

44 名前:35 :03/11/22 21:13
>>43
そうですね。
再現条件をまず調べてみることにします。

45 名前:41 :03/11/22 21:26
>>42 ありがとう。

46 名前:デフォルトの名無しさん :03/11/23 01:41
ペゾルトのサンプルは冗長

47 名前:デフォルトの名無しさん :03/11/23 18:24

BITMAPINFOにカラーテーブルを設定して
CreateDIBSectionxで 8bppのBMPを作った後に
その戻り値のDIBSectionのハンドルから作成時のカラーテーブルを取得したいのですが、
GetDIBitsではBITMAPINFOHEADERの情報しか教えてくれません。

どなたか、良い方法があれば教えてください。


48 名前:デフォルトの名無しさん :03/11/23 18:30
>>47
GetDIBColorTable, SetDIBColorTableでできるかもしれない。
俺も知りたいので結果報告頼む。

49 名前:47 :03/11/23 18:33
>>48
情報感謝!!調べてみます。

50 名前:デフォルトの名無しさん :03/11/23 18:59
>>48
GetDIBColorTableで目的どおり取得できました。
本当にありがとうございました。

51 名前:デフォルトの名無しさん :03/11/23 23:19
dllからアプリケーションにメッセージ送れます??
インスタンスを引数にできるSendMessageみたいなものがあればいいんですが.

52 名前:デフォルトの名無しさん :03/11/23 23:27
インスタンスって何?
hInstance のこと?

53 名前:デフォルトの名無しさん :03/11/23 23:28
>>51
SendMessage では送りたくないの?

54 名前:デフォルトの名無しさん :03/11/23 23:34
>>52
うん.hInstanceのこと
>>51
SendMessageで送れます?

55 名前:デフォルトの名無しさん :03/11/23 23:44
>>54
インスタンスだと微妙に解らないから名前は適切にお願い…そこが理解できない俺のスキルの低さかもしれんが

SendMessageで遅れる PostMessage のがイイかもしれないけどね。
パラメータとして送りましょう。

56 名前:デフォルトの名無しさん :03/11/23 23:49
>>55
レスありがとうございます.

SendMessageのパラメータとしてどのように与えればよいのですか?
SendMessageはHINSTANCE型を引数としてもってないようですが..

57 名前:デフォルトの名無しさん :03/11/23 23:54
>>56
SendMessage (HWND, MSG, WPARAM, LPARAM(HINSTANCE));
とでもしたら?
俺もきちんと本を読んで作ってるわけじゃないけど、もう少ししっかり本を読んだら?
本に書いてないかもしれないけどソースから学べることだよ

58 名前:デフォルトの名無しさん :03/11/23 23:57
>>57
それは意味が違うと思う。

>>56
SendMessage(hInstance, msg, wparam, lparam);
としたいんでは?
で、SendMessageがHINSTANCE型を受け付けないって悩んでんじゃない?

59 名前:デフォルトの名無しさん :03/11/23 23:58
>>57
ご親切にありがとうございます.
Webはたくさん見てきたんですが,解決できるサイトがなかなかなくて..
もっと勉強します!

60 名前:58 :03/11/23 23:59
あ、それでいいのか。
スマソ。

61 名前:デフォルトの名無しさん :03/11/24 00:00
>>58
そのようにしたいんですけど,わからなくて..

62 名前:デフォルトの名無しさん :03/11/24 00:00
>>59
俺もwebで頑張ってたけど本を買ったほうがすごい知識が入る。
MicrosoftPressって言うオレンジ色の本をすすめる(分厚くてやってられんけどな

63 名前:デフォルトの名無しさん :03/11/24 00:02
>>58
そういうことか、やっぱり履き違えてたね。。。

hInstance はウィンドウに送られるわけじゃなくて hInstance はプログラム(exeファイル)を指すって事でいいのかなぁ。
リソースを読む時とかの引数になるし

64 名前:デフォルトの名無しさん :03/11/24 00:04
>>63
hInstanceをexeファイルの意味使いました!
ご存知ですか?

65 名前:デフォルトの名無しさん :03/11/24 00:06
>>64
よくわからない日本語なのでなんともいえません

66 名前:デフォルトの名無しさん :03/11/24 00:06
>>62
SDKでプログラム組むのに良い本って少ないんですよねぇ.



67 名前:デフォルトの名無しさん :03/11/24 00:08
>>65
すんません.
hInstanceをexeファイルの意味で使いました.
dllからexeへメッセージを送る方法をご存知ですか?
よろしくお願いします.

68 名前:デフォルトの名無しさん :03/11/24 00:08
>>61
あれ、やっぱそうだったの。
hInsetanceからhWndを求めることってできんのかな。
GetNextWindowで見つけていくしかないかも。

69 名前:デフォルトの名無しさん :03/11/24 00:10
PostThreadMessage(GetCurrentThreadId(), ...
ではどうか

70 名前:デフォルトの名無しさん :03/11/24 00:10
hInstanceから

PostThreadMessage()のスレッドIDとか、
PostMessage()のHWND

をどうやって得るか、って話でしょ?どっちも簡単にできるけどな。

71 名前:デフォルトの名無しさん :03/11/24 00:11
ん〜・・・
クラス名を探してくプログラムならあるって聞いた事があるから
リソースにクラス名を保管しておけばいいんじゃないかな?

72 名前:デフォルトの名無しさん :03/11/24 00:11
>>70
できるんかいw

73 名前:デフォルトの名無しさん :03/11/24 00:11
>>70
できんの?

74 名前:デフォルトの名無しさん :03/11/24 00:15
>>70,71
たくさんのレスありがとうございます.
PostThreadMessage関数で試してみます!!


75 名前:デフォルトの名無しさん :03/11/24 00:16
まあ、素直にアプリケーションから教えてもらえと

76 名前:デフォルトの名無しさん :03/11/24 00:19
キーーーー

77 名前:デフォルトの名無しさん :03/11/24 00:25
>>70
GetWindowInstanceの逆ってことだよな?

  Instance
    |
    +WindowA
    |
    +WindowB

こーゆー場合はどっちのハンドル?

78 名前:デフォルトの名無しさん :03/11/24 00:26
なぜインスタンスから?
結局メッセージを送るのにHWNDで送るんでしょ?

79 名前:デフォルトの名無しさん :03/11/24 00:30
>>78
スレ欲嫁

80 名前:デフォルトの名無しさん :03/11/24 00:34
>>79
ここらで少しまとめようぜ。
そのほうがわかりやすいし

81 名前:デフォルトの名無しさん :03/11/24 00:55
やっぱり>>70は書き逃げだったのか…

82 名前:デフォルトの名無しさん :03/11/24 00:55
>>80
とりあえず、(私が読んだ限りでの)ここまでのまとめ。
--
問題
dllからあるHINSTANCEのプロセスのウインドウにメッセージを送りつけたい

前提
1.何らかの方法でHINSTANCEがわかっている

不明
1.そのプロセスにウインドウが(0個または)2個以上ある時の処理(>>77)
2.送り先はそのDLLを使うEXE/DLL? それとも他のEXE? (>>75?)

解決へのヒント
1.PostThreadMessage (>>69)
2.GetNextWindow(>>68)

83 名前:デフォルトの名無しさん :03/11/24 01:04
51の書き主です.

送り先はそのDLLを使うEXEです.
そのEXEのhInstanceはdllに伝わっています.
dllでマウスイベントをフックし処理し終わると同時に,EXE側のある関数を実行させたいのです.
つまりフック処理が終わる時点でEXE側にメッセージを送ることができればと思って質問しました.
しかし,なかなかうまいこといかないんですね.

84 名前:デフォルトの名無しさん :03/11/24 01:13
>>83
んじゃやっぱ>>75だね。

85 名前:デフォルトの名無しさん :03/11/24 01:18
>>84
75:アプリケーションに教えてもらう?どういう意味すか?

86 名前:デフォルトの名無しさん :03/11/24 01:18
>>84
だな。

>>83
念の為付け加えておくと、そのHINSTANCEはDllMainの引数じゃあないよね?
DllMainのHINSTANCEはDLLのインスタンスで、EXEのインスタンスではないので。

なお、>>75のようにEXEからHWNDなり関数ポインタなりThreadID/Handleなりを
もらうならHINSTANCEは不要。

87 名前:デフォルトの名無しさん :03/11/24 01:24
自作アプリとDLLの連携ならSet関数作って渡してやればいいし、

自作のアプリ以外をフックしてるなら
EnumWindowsでウインドウ列挙して探すとか色々。



88 名前:デフォルトの名無しさん :03/11/24 01:27
>>85
DLLに、アプリからhWndを教える関数を設けるとか。

89 名前:デフォルトの名無しさん :03/11/24 01:29
>>86
はい,
#pragma data_seg
内で変数を共有させて,EXE側のHINSTANCEをdllにわたしています.
関数ポインタを使う手もあるんですね.思いつきませんでした.やってみます.
ご丁寧にありがとうございます.

90 名前:デフォルトの名無しさん :03/11/24 10:44
プロセスIDやスレッドIDならいざ知らず、
他のプロセスのHINSTANCEやHMODULEを取れたとしても、
別のプロセスからは使い道がないような気がするのだが。(既出?)


91 名前:デフォルトの名無しさん :03/11/24 11:46
メニューバーのメニューって
個別に大きさ変更したりできるもんですか?


92 名前:70 :03/11/24 12:17
あー、よく寝た

93 名前:本物の70 :03/11/24 12:19
あー、よく寝た

94 名前:デフォルトの名無しさん :03/11/24 14:05
>>83
>そのEXEのhInstanceはdllに伝わっています.
どうやって伝えたの?

95 名前:デフォルトの名無しさん :03/11/24 14:16
Win32のEXEのhInstanceは実際問題、定数。

96 名前:デフォルトの名無しさん :03/11/24 14:16
>>91
"オーナードロー"で検索。
ビットマップを貼り付けたりいろいろできる。


97 名前:デフォルトの名無しさん :03/11/24 14:43
>>94
5個前のレスくらい嫁よ

98 名前:デフォルトの名無しさん :03/11/24 17:33
>>97
「何らかの方法で」以上のことは答えてないと思うんだが。
どんな方法であるにせよそのルートでHWND渡せばいいんじゃネーノ

99 名前:デフォルトの名無しさん :03/11/24 19:36
>>98
>「何らかの方法で」以上のことは答えてないと思うんだが。
>>#pragma data_seg
>>内で変数を共有させて,EXE側のHINSTANCEをdllにわたしています.

ニホンゴヨメマセンカ?

100 名前:デフォルトの名無しさん :03/11/24 19:38
つーか、EXEのHINSTANCEなんぞもらってナニしようと思ったんだか。

101 名前:91 :03/11/24 19:56
>>96
ビットマップの貼り付けはわかったんですが
画像の貼り付け無しにそのまま
項目サイズの拡大縮小はできないんでしょうか?

MacOSXのDockのように
カーソルが近づくと徐々に拡大され
離れると徐々に縮小されるといったことは
オーナードローで可能なんですか?

オーナードローで検索しても
見つかるのは画像の貼り付けばかりなんですが
無理なんでしょうか

102 名前:デフォルトの名無しさん :03/11/24 20:09
>>89
>#pragma data_seg
>内で変数を共有させて,EXE側のHINSTANCEをdllにわたしています.
で、何でHWNDを渡さないんだ?
HINSTANCE渡すメリットって何?

103 名前:デフォルトの名無しさん :03/11/24 20:22
で、オーナードローの手続きちゃんと理解できた?
SDKならWM_MEASUREITEM、MFCでもMeasureItem()でサイズ変更できるのは直ぐ見つかる。


104 名前:デフォルトの名無しさん :03/11/24 21:16
>>95
んなこたぁない
配置アドレスが変われば中身も当然変わる

105 名前:デフォルトの名無しさん :03/11/24 21:18

 教えて君ですまないです。他のスレから来ました。 
あのーPrintScreenキーを押してデスクトップ画面を取得できますよね。
それが共有メモリ内に入るのはわかっているのですが、できれば格納さ
れているメモリアドレスを知りたいのです。どうすればいいのでしょうか?
WinAPIで解決できるのか、それともポインタで解決できるのか 
皆様教えてください。



106 名前:105 :03/11/24 21:22
開発環境を書き忘れてました。Win2k+VC++6.0です。

107 名前:デフォルトの名無しさん :03/11/24 21:27
>>105
クリップボード内に何が入っているか調べる方法≒
クリップボード内の何かを取得する方法

向こうのスレでヒント貰ったのにわかってないのか?
#それ以前にAPIの何たるかがわかってないならまずそれを勉強しろ。

108 名前:デフォルトの名無しさん :03/11/24 21:28
>>105
共有メモリというより、クリップボードに入るんじゃないか?
ChangeClipboardChain,CloseClipboard,CountClipboardFormats,EmptyClipboard
EnumClipboardFormats,GetClipboardData,GetClipboardFormatName,GetClipboardOwner
GetClipboardViewer,GetOpenClipboardWindow,GetPriorityClipboardFormat
IsClipboardFormatAvailable,OpenClipboard,RegisterClipboardFormat
SetClipboardData,SetClipboardViewer



109 名前:デフォルトの名無しさん :03/11/24 21:29
>>108ってなんて親切なんだよ。漏れにもやさしくしてくれ

110 名前:105 :03/11/24 21:29
 >>107
勉強しなおしてきます。

111 名前:デフォルトの名無しさん :03/11/24 21:31
>>105-106
このスレ的には、

ChangeClipboardChain, CloseClipboard, CountClipboardFormats,
EmptyClipboard, EnumClipboardFormats, GetClipboardData,
GetClipboardFormatName, GetClipboardOwner, GetClipboardViewer,
GetOpenClipboardWindow, GetPriorityClipboardFormat,
IsClipboardFormatAvailable, OpenClipboard, RegisterClipboardFormat,
SetClipboardData, SetClipboardViewer

あたりかな。

つーか、MSDN 見ればわかると思うけど。

112 名前:デフォルトの名無しさん :03/11/24 21:32
>>111
あや ? さき越されちまったよ。

113 名前:デフォルトの名無しさん :03/11/24 21:33
>>それともポインタで解決できるのか 
ポインタ理解してないの?
だとしたら、Cで実用的なプログラムか書けないし、API使うのは無理だよ。



114 名前:デフォルトの名無しさん :03/11/24 21:56
>>104
実際問題exeの配置アドレスが変わることなんてあるの?
最近は.reloc削り落としたexeも多いくらいなのに

115 名前:105 :03/11/24 21:58
>>108.111さま
 ご親切にありがとうございます。授業ではLinuxでの勉強しかしたことが無かったので
Windowsプログラムは初でございます。
 WindowsのプログラムはWinAPIの塊と聞いていたのでどうにかなるかな?と思っていま
したが、甘かったですね。回線切って吊ってきます。

116 名前:デフォルトの名無しさん :03/11/24 23:49
リソースエディタでエディットコントロールをCStringとかでコントロール変数登録すれば
それ使ってそのまま中のデータをやりとり出来るのかと思ったら、そういうわけじゃないんですね
というか、エディットコントロールと全く無関係のただの変数に見えるんですが…
(読んでもいつも""だし文字列代入しても反映されるわけじゃないし)
あれって一体何なんでしょう。単なるラベル?

CEdit型のコントロール変数で登録した奴はそのまんまSetWindowTextとか使って
直接いじくれるからわかりやすいんですけど

117 名前:デフォルトの名無しさん :03/11/24 23:57
PSDK最新版入れたんだけど

/******************************************************************************\
* This is a part of the Microsoft Source Code Samples.
* Copyright 1993 - 2000 Microsoft Corporation.
* All rights reserved.
* This source code is only intended as a supplement to
* Microsoft Development Tools and/or WinHelp documentation.
* See these sources for detailed information regarding the
* Microsoft samples programs.
\******************************************************************************/

#include <stdio.h>

main()

{
#ifdef JAPAN
printf ("Win32、これは事件だ!");
#else
printf ("Win32, it's happenin'!");
#endif

return(0);
}
こんなサンプルがあるんだな、日本人をおちょくってるのか。

118 名前:デフォルトの名無しさん :03/11/25 00:08
>>117
なんかむかつくソースだな。。。
もっと日本語わかってる奴が書け

119 名前:デフォルトの名無しさん :03/11/25 00:10
>>116
「DDE」でMSDNを検索してよく読め。
値型のDDEは自動的には反映されないのだ。

120 名前:デフォルトの名無しさん :03/11/25 00:31
>>116 MFCソースのdlgdata.cpp眺めれば分かると思う
>>117 何のサンプルプログラム?(w
>>119 DDXぢゃ?

121 名前:デフォルトの名無しさん :03/11/25 00:34
なるほど、使う前にUpdateData()で更新してやらないといけないわけですね
やっぱり勝手に反映してくれるほど甘いもんではなかったようで…(当たり前か)
どうもありがとうございました。だいぶ混乱してたので助かりました

122 名前:デフォルトの名無しさん :03/11/25 09:02
あるトップレベルウィンドウをオーナーとするトップレベルウィンドウのHWNDを全部取得するにはどうすればいいですか?

123 名前:デフォルトの名無しさん :03/11/25 09:11
>>122 再帰

124 名前:デフォルトの名無しさん :03/11/25 09:26
>>122
EnumWindowsを使って自分で振り分け

125 名前:ビットマップ :03/11/25 09:27
教えていただきたいことがあります。 どうかよろしくお願いいたします。
500x500のサイズのウインドウを作成し、ファイルから700x700のサイズの画像を読み込み、縮小して
一旦、メモリ上に置きたいのですが、どのようにすればよいのでしょうか。
かなりいろいろ いじっているうちに、訳が分からなくなり、混乱状態です。どうか、お力をお貸し下さい。

HDChdc, memDC;
PAINTSTRUCTps;
HBITMAPhBit;//メモリへ読み込んだ画像を識別するためのハンドルを保存
HINSTANCE hInstance = (HINSTANCE)GetWindowLong(hwndBase1, GWL_HINSTANCE);
hdc = GetDC(hwnd);
memDC = CreateCompatibleDC(hdc);
hBit = (HBITMAP)LoadImage(hInstance, "test.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
SelectObject(memDC, hBit);

hdc=BeginPaint(hwnd, &ps);
StretchBlt(hdc, 0, 0, 500, 500, memDC, 0, 0, 700, 700, SRCCOPY);  //ウインドウに 画像を縮小して表示
EndPaint(hwndBase1, &ps);


126 名前:デフォルトの名無しさん :03/11/25 10:06
>>125は重複じゃなくて紹介できたんね?

127 名前:91 :03/11/25 10:18
>>103
なるほど
ありがとうございます

128 名前:ビットマップ 125です :03/11/25 12:29
>>126

はい。
pc2.2ch.net/test/read.cgi/tech/1068950713/ で質問しましたが、こちらで聞くのがワタシも適していると思いました。

ファイルから700x700のサイズの画像を読み込み、画像を500x500のサイズに縮小してメモリ上に置きたいのですが、
どうかよろしくお願いいたします。


129 名前:デフォルトの名無しさん :03/11/25 14:28
>>128
CreateCompatibleBitmapで500x 500のビットマップ作って
そいつにStretchBlt

130 名前:ビットマップ 125です :03/11/25 15:08
>>129
ありがとうございます。
CreateCompatibleBitmap ですね。ちょっと試してみますね。

131 名前:デフォルトの名無しさん :03/11/25 16:28
Windowsでネットゲームを作っています。
不正が行われないようにプログラムの改造等を防がないといけないのですが、
ReadProcessMemoryとか、WriteProcessMemoryを使われると、
どうしても解析されてしまいます。
他のプロセスから自分のプロセスに対してこれらのAPIが呼ばれた事を検知したり、
使えなくする方法はないものでしょうか?


132 名前:デフォルトの名無しさん :03/11/25 16:42
>>131
諦めれ。

133 名前:デフォルトの名無しさん :03/11/25 16:48
そりゃあれだ、OSから作れってこった

134 名前:デフォルトの名無しさん :03/11/25 16:49
>>131
設計を見なおしてメモリ書き換えても不正できないようにする。
キャラクターのステータス、アイテム、スキル使用はすべてサーバ側で行い、
クライアントは表示、入力のみを処理する。

例)
C: アイテム使用要求
S: サーバ側のキャラデータを見て使用可否を判定して使用処理。結果をクライアントに送信
C: 結果を受け取って結果を表示


135 名前:デフォルトの名無しさん :03/11/25 16:54
>>134
サーバー立てたくないです。

136 名前:デフォルトの名無しさん :03/11/25 17:09
1/100秒ごとにメモリ上のデータを暗号化するとか。

137 名前:デフォルトの名無しさん :03/11/25 17:11
CRCでも付けとけ。

138 名前:デフォルトの名無しさん :03/11/25 17:26
>>135
そんな規模のものなら改造されても大丈夫だろヽ(´ー`)ノ

139 名前:デフォルトの名無しさん :03/11/25 18:41
VRAMに保存しておけ。
デバッガはAPIで検出できるからこっちは問題ない。

140 名前:デフォルトの名無しさん :03/11/25 20:09
有料のネトゲですらチートされるってのに・・・・。

>>131
もしできたらNCとかに教えてやんなw。

141 名前:デフォルトの名無しさん :03/11/25 20:38
>>139
VRAMだと画面モード切り替え時等に消えかねない

142 名前:ビットマップ 125、130です :03/11/25 22:20
>>129
本当にどうもありがとうございました。おかげでうまくいきました。ものすごく助かりました。
正直なところ MSDNで検索してもなかなか ”CreateCompatibleBitmap” を使えばいい、
って分からないですよね。今回はヒントを頂いたおかげで分かったのですが。
逆に、よく ご存じでしたよね。googlで”CreateCompatibleBitmap”検索してもちょっとしか
ヒットしませんし・・・。やはり、熟練、経験がモノを言うんですね。
さて、プログラムの続きをしよっと。

143 名前:デフォルトの名無しさん :03/11/25 23:12
リソースにある文字列の長さをLoadStringする前に取得する方法はないでしょうか?


144 名前:デフォルトの名無しさん :03/11/25 23:15
キーボードについて詳しく解説してるページないですか?
メッセージ中のextended keyとかscan codeとかの使用用途を知りたいのですが

145 名前:デフォルトの名無しさん :03/11/25 23:20
exeファイルのパス名からメインウインドウのハンドルを取得するには
どうしたらいいですか?
ウインドウハンドルからProcessハンドルを取得する方法はあちこちで見つかるのですが。。。
すべてのウインドウを列挙してProcessハンドル経由で
exeファイルのパスを調べることはできそうですが、もっとスマートなやり方があれば
教えてほしいです。
よろしくお願いします。

146 名前:デフォルトの名無しさん :03/11/25 23:27
>>142
いや、探し方が悪いんだと思うぞ。
私はたまたま今日、仕事で初めて画像をはっつける羽目になったんだが、
CDCのクラスメンバ眺めてたらCreateCompatibleBitmap()が使えることに気づいたぞ。
#で、ビットマップオブジェクトの解放することに気づくまでの一時間、メモリリークで苦しんだが(爆笑

147 名前:デフォルトの名無しさん :03/11/25 23:29
>>145
ない。

アプリケーションが必ずウインドウを持っているとは限らないし
ウインドウを持っていてもどれがメインか一意に決定できない。

148 名前:デフォルトの名無しさん :03/11/25 23:51
くらっくのやりかたおしえて
りーど/らいとぷろせすめもりとかつかうんですか?やりかたおしえて
あとたーげっとをふぁいるめいでしていしたいのでそのつもりでおねがいします
しぁぇうけにゅのこがさすとぶへくとりづしあおきゃで?
たこでもわかるようにめいかいにおねがいします

149 名前:デフォルトの名無しさん :03/11/25 23:52
>>145
WM_DESTROYに対してPostQuitMessageを実行するウインドウか否か
どうやって調べる? ウインドウプロシージャを逆汗するか
LoadModuleもどきのスパイ関数を自作するかしかないだろ?


150 名前:デフォルトの名無しさん :03/11/25 23:59
>>148
> クラックのやり方教えて
> リード/ライトプロセスメモリとか使うんですか?やり方教えて
> あとターゲットをふあいるめいで指定したいのでそのつもりでお願いします
> しあぇ浮け乳の焦がさすとぶへくとりづし青きゃで?
> タコでもわかるように明快にお願いします

IME2000 の再変換でもそれなりに読めるようになるんだな。
3〜4行目はサパーリわからんが。

151 名前:145 :03/11/26 00:51
>>147
起動していない、もしくは取得できるウインドウがなければ
ウインドウハンドル取得結果はNULLになると思います。
また、メインウインドウじゃなくてトップレベルウインドウでもいいです。

>>149
よくわかっていないのですが、
特にウインドウに対してメッセージなど送ったりはしないつもりです。


152 名前:デフォルトの名無しさん :03/11/26 00:54
>>151
トップレベルウインドウもひとつではない

153 名前:デフォルトの名無しさん :03/11/26 01:05
WM_SYSKEYDOWNでALT+F4は無効にできるのですが
ALT+SPACEが無効にできません。
何か方法はないでしょうか

154 名前:デフォルトの名無しさん :03/11/26 01:25
>>153
キーボードフック


155 名前:デフォルトの名無しさん :03/11/26 02:24
>>145
もう答えは出ていると思うが、もし一発で探せる方法があるとして、仮にそのEXEを10000回起動したとする。
どうやって10000個のハンドルを返す?
ちょっと考えれば納得できると思うが...

156 名前:デフォルトの名無しさん :03/11/26 06:40
>>152
>>155
うーむ、無理みたいですね。
あきらめました!

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


157 名前:デフォルトの名無しさん :03/11/26 10:17
>>131
クライアント上で実行されている限り、クラックできないプログラムは無い。
理想は全ての処理をサーバ側で処理することだけど、その場合でも必ずしも
専用サーバを立てる必要はないよ。
ホストのプレイヤーに負担させればいいだけ。

まぁ、こんなこと聞く時点ですでにある程度できあがっていて、いまさら
設計変更なんてできないと思うが。

158 名前:デフォルトの名無しさん :03/11/26 18:30
最終的には何をやってもダメだけど、分かりにくくする方法はいくらでもあるだろうから、
その方向で考えた方が現実的。

159 名前:デフォルトの名無しさん :03/11/26 18:45
>>158
◆??? -> #???
の任務を命ずる
これで理想の取が一発変換だシメシメ

160 名前:デフォルトの名無しさん :03/11/26 21:03
MSに明日はあるだろうか。
http://www.zdnet.co.jp/enterprise/0311/19/epn11.html

巨大化した組織の宿命?
 心無き人が増え、能ある人を追い出す。そして形骸化。

MSよ、原点に戻れ!
従来のOSとWin32APIを見直し、その練磨と機能拡張に専念しろ。
そして、WinFXではなく、Win64APIとして堅牢なベースを創れ。

現状のシェアに浮かれてMFCだのWinFXだのとMS自作のクラスを
ユーザーに強要していると早晩、見捨てられるぞ! それらは
ユーザーの仕事だ、あれもこれも抱き合わせるのではなく、まず、
自らの足元を固めろ。

以上、心からMSの将来を思う者より、愛を込めて。


161 名前:デフォルトの名無しさん :03/11/26 21:09
どこがWin32APIの質問なのよ。

162 名前:デフォルトの名無しさん :03/11/26 21:16
ごめん!
【WinFX】次世代Windows Longhornを語るスレ
への間違いでした。

なかったことにして下さい。ペコペコ。



163 名前:デフォルトの名無しさん :03/11/26 21:23
WinFXの話でもねーじゃん。死んだ方がいいんじゃないの。

164 名前:デフォルトの名無しさん :03/11/26 23:45
>>163
おまえ、うぜー



165 名前:デフォルトの名無しさん :03/11/26 23:51
ウザイやつはシカト、これ常識

166 名前:デフォルトの名無しさん :03/11/26 23:51
ワラタ

167 名前:画像拡大 :03/11/27 01:12
画像を画面の中心から徐々に拡大して画面いっぱいになるようにしたいのですが、
for ( x =ScreenWidth/2 ; x >= 0 ; x--){
  y = (計算式)
  MoveWindow ( hwnd, x, y , MWidth, MHeight, TRUE) ;
  hdcMmem = BeginPaint ( hwnd, &ps);
  StretchBlt ( hdcMmem, 0, 0, MWidth, MHeight, MmemDC, 0, 0, 1000, 500, SRCCOPY) ;
  EndPaint(hwnd, &ps);

このプログラムで実行すると、拡大している最中、チラついてしまい、見苦しい感じがします。
チラつかないようにする方法は何かないでしょうか。

168 名前:デフォルトの名無しさん :03/11/27 01:17
MoveWindowは止めなはれ。
BeginPaintも、GetDCあたりにしなはれ。

169 名前:画像拡大 :03/11/27 01:22
んを〜 早いレスありがとうございます。
そうですか、GetDCですか。早速試してみます。
コメントありがとざいます。

170 名前:デフォルトの名無しさん :03/11/27 01:29
あとWM_ERASEBKGNDを潰すのも基本な。

171 名前:画像拡大 :03/11/27 01:53
あ、あのー。 MoveWindow を使わない方法ってどのようなモノでしょうか。
どうかよろしくお願い致します。

WM_ERASEBKGND も試してみますね。ありがとうございます。

172 名前:デフォルトの名無しさん :03/11/27 01:55
たとえばスクリーン画面(GetDC(0))に描画して、
MoveWindowは最後に回すとか

173 名前:画像拡大 :03/11/27 02:03
そういうことですか! ものすがい勘違いしてました。
ありがとうございます。

174 名前:画像拡大 :03/11/27 02:14
>>172
結構いけてます。 本当にありがとうございました。

175 名前:デフォルトの名無しさん :03/11/27 03:19
InvalidateRect(hwnd, NULL, TRUE);
UpdateWindow(hwnd);

ってやってるんだけど、再描画してくれるときと、してくれないときがあります。
どうしてでしょう?

プログレスバーを操作しています。


176 名前:デフォルトの名無しさん :03/11/27 03:27
メッセージポンプ回してる?
SendMessageさえ受け付けられない状態だとUpdateWindowも効かないよ

177 名前:175 :03/11/27 03:37
>>176
thxです。
OKです。


178 名前:デフォルトの名無しさん :03/11/27 13:30
>167のループ

ウィドウサイズ変更(再描画無し)
画像拡大
再描画(Invalidate* | Update*)

でもだめですか?
スクリーンだと他と競合するかもしんないし
あんま使わない方が安定した動作を提供できると思うんだけど
解決済みだったら流してください

179 名前:デフォルトの名無しさん :03/11/27 14:21
つーか、うちの環境の場合StretchBlt自体の負荷で死ぬな。


180 名前:デフォルトの名無しさん :03/11/27 17:42
Win32APIの関数のローカルのオンラインヘルプがほしいのですが
VC++ .NETを買えば手に入りますか?

181 名前:デフォルトの名無しさん :03/11/27 17:51
msdnですね?
付いてくると思います。
詳しくはマイクロソフト本社のMicro$oft Visual Studio などを参照してください

182 名前:デフォルトの名無しさん :03/11/27 19:01
>>181
どもどもサンクス
今フリーの環境でやってるんだが、
あとあとオンラインヘルプがほしくなりそうだったので買おうかどうか迷っていましたが
買う気がかなり高まりました。


183 名前:デフォルトの名無しさん :03/11/27 19:14
>>182
買ってください


ところでフリーって言葉ってどうおもう?
フリーソフトとかなら通じるんだけどフリーという微妙な言葉
”無料で”って意味でもっと良い言葉無い?
free…自由なという意味合いが強い気がする

184 名前:デフォルトの名無しさん :03/11/27 19:17
SuperFree = 超自由

185 名前:デフォルトの名無しさん :03/11/27 19:24
"超" っていうな〜………
。・゚・(ノД`)・゚・。

186 名前:182 :03/11/27 19:40
>>183
自分はフリーソフトって意味で言いましたよ
Borland C++ Compilerを使ってますぜ

187 名前:デフォルトの名無しさん :03/11/27 19:51
MSのplatformsdkアップデートからドキュメントだけ落とせたかも
これならローカルでも参照できるぞ

188 名前:デフォルトの名無しさん :03/11/27 20:00
>>187
それは日本語ですか?
>>2のリンク先が英語だったのであきらめていたのですが
英語なら素直にお金出して買いますんで

189 名前:デフォルトの名無しさん :03/11/27 20:33
>>188
ドキュメントとCのヘッダ、VC用インポートライブラリ、開発用各種ユーティリティツールとドキュメント参照用のDocumentExplorer7.0が含まれる。
当然全英文だが日本語版MSDNは一部だけしか翻訳されてないような気も‥‥


どーでもいいが、あれくらいの英語読めないようだとどの道つらいと思うんだが‥‥



190 名前:デフォルトの名無しさん :03/11/27 20:35
>>188
そういや PlatfomSDK があったね。忘れてたw
日本語なかったっけ?…

191 名前:デフォルトの名無しさん :03/11/27 21:00
>>180
欲しいのは日本語ヘルプなの?
なら、VC++ .NET買っても、ほとどんどは英語だよ。
日本語は一部。(しかも、間違ってたりもする)

192 名前:デフォルトの名無しさん :03/11/27 21:53
>>191
そうだねぇ
while( GetMessage(&msg, NULL, 0, 0) )
って文も間違えてるしね

193 名前:デフォルトの名無しさん :03/11/27 21:58
>>191
これ見て思ったこと。
マイクロソフトの日本法人も怠慢だよな。

194 名前:デフォルトの名無しさん :03/11/27 22:15
>>192
何がおかしいの?

195 名前:188 :03/11/27 22:26
>>189
>>191
VC++ .NETでも英語ですか・・・
じゃあきらめて英語をがんばりまする

196 名前:デフォルトの名無しさん :03/11/27 22:31
ちなみに俺のソースコードは全部
while (GetMessage(&msg, NULL, 0, 0) < 0)
となっている、
GetMessageの戻り値は
・正常    1
・終了    0
・エラー −1

197 名前:デフォルトの名無しさん :03/11/27 22:31
>>196
間違えたし
while (GetMessage(&msg, NULL, 0, 0) > 0)
これでよしっと

198 名前:デフォルトの名無しさん :03/11/27 23:56
SetWindowsHookExのWH_KEYBOARD_LLを使いたいのですが、
MSDNによると、フックプロシージャは
HKEY_CURRENT_USER\Control Panel\Desktop の LowLevelHooksTimeout
よりも短い時間で処理するよう求めています。

ところが、自分の環境(Windows2000 SP4)のレジストリにそんな値はありません。
存在する人はミリ秒くらいになっているのでしょうか。


199 名前:デフォルトの名無しさん :03/11/28 00:26
僕の使ってるキーボードにPower Sleep Wakeってのがあります。
これらが押されても何も処理させないようにするにはどのようにすればよいでしょうか?
僕は>198さんではないのですが、SetWindowsHookExのWH_KEYBOARD_LLで
キーを拾ってるのですが、どうあがいてもPowerでシャットダウンしてしまいます。
キーコードは0x5Eかなと思ったのですが駄目です。
メッセージボックスで表示させようとしたりデバッガで止めようとしても
シャットダウンしてしまいどうにもならない状況です。
>198さんへ
僕のwindows2000マシンにもその値はなかったです。

200 名前:デフォルトの名無しさん :03/11/28 00:34
>>199
ユーザランドでは無理かと。


201 名前:デフォルトの名無しさん :03/11/28 00:37
>>199
スキャンコードがわかれば、これでいけるかも。
http://www.microsoft.com/whdc/hwdev/tech/input/w2kscan-map.mspx

202 名前:デフォルトの名無しさん :03/11/28 00:39
今後 winny が使えなくなるので、違うものを作ってくれる人はいますか?

203 名前:デフォルトの名無しさん :03/11/28 00:48
GetMessage()って、無効な引数を指定したとき以外にも戻り値が-1になることがあるの?
もしなければ、msgが確実にMSG構造体である限り、
 while (GetMessage(&msg, NULL, 0, 0))
でいいような気がするんだけど…だめかな?

204 名前:デフォルトの名無しさん :03/11/28 01:01
ウチのMSDNではGetMessageにそう言うコードは避けてくれと日本語で書いてある。

>GetMessage 関数は、エラーが発生すると -1 を返します。したがって、次のようなコードは避けてください。

>while (GetMessage( lpMsg, hWnd, 0, 0)) ...

>このように書くと、GetMessage 関数がエラーを返した場合も、ループが繰り返されてしまいます。


205 名前:デフォルトの名無しさん :03/11/28 01:06
>200さん>201さんありがとうございます。
やはり無理なのかなぁとも思いつつネット探してたら以下のようなソフトを見つけました。
Power キーブロッカー
ttp://www.vector.co.jp/soft/winnt/util/se235290.html
スリープキャンセル
ttp://hp.vector.co.jp/authors/VA018127/soft/pgsleepc.html
もしかすると、>201さんがおっしゃるように起動中はレジストリを変えてやってるのでしょうか…?
ソースも公開されてれば・・・。作者さんにメールしてみようか・・・でも無理でしょうね。
ちょっと保留にしておきます。ありがとうございました。

206 名前:画像拡大 :03/11/28 01:41
>>178-179
どうもありがとうございます。返事が遅くなってすみません。
今のところ、スクリーン上での競合はないと思っていますが、言われてみると確かにあり得る話ですよね。
今後の参考にさせていただきます。

207 名前:描画・計算中 :03/11/28 02:13
アドバイスをお願いしたいことがあります。

POPUPウインドウ(タイトルや最小化・最大化・終了ボタンのないやつ)に計算しながらグラフを描画していく
プログラムについてです。
終了ボタンがないため、POPUPウインドウ上で右クリックするとプログラムが終了するようにしています。
描画が終わってから右クリックすると終了してくれますが、描画中に右クリックしても描画が終わるまで
終了処理がされません。

描画中に右クリックして、即終了させたいのですが、何かよい方法はありませんでしょうか。

208 名前:デフォルトの名無しさん :03/11/28 02:34
>>204
それは、GetMessage()の呼び方が
 GetMessage(&msg, NULL, 0, 0)
ではなく、
 GetMessage(lpMsg, hWnd, 0, 0)
だからじゃないのかな?
例えば、GetMessage()の第2引数がhWndになっていると、hWndが
無効なハンドルだった場合に、エラーになって-1が返る可能性が確かにある。
でも、最初の呼び方では、実際にはエラーになる可能性ってないような気が…。

209 名前:デフォルトの名無しさん :03/11/28 02:52
>>207
グラフ描画中にメッセージを処理する。
スレッドを使う。
グラフ描画処理をメッセージ使って分割する。

210 名前:描画・計算中 :03/11/28 03:06
>>209
ありがとうございます。
えー、で、その、恐縮なのですが。。。。
メッセージ処理するウインドウプロシージャに強制的に定期的に処理させに行く
(呼び出す)方法を。。。。お願いします。

211 名前:デフォルトの名無しさん :03/11/28 03:11
タイマーで描画するんじゃダメなん?

212 名前:描画・計算中 :03/11/28 03:17
ワタシは 頭が固いのでどうも柔軟に考えられません。理解が及ばないところはお許し下さい。
タイマーで何かを処理したくても描画・計算中は完全にタイマーのメッセージもキーボードやマウスのメッセージも
受け取ってくれないんです。

213 名前:描画・計算中 :03/11/28 03:25
えー、ちなみに 計算は

for ( float x= ・・・・・) {
for ( float y= ・・・・・) {

     <計算式 が延々と続く>
}
     <ウインドウに 1ピクセル表示>
}

グラフが完成するのに 20秒くらい。。。。
ちなみに PentiumIII 1.26GHzのPCです。

214 名前:デフォルトの名無しさん :03/11/28 04:29
スレッドを作成して、そこで描画や計算処理させたら?
それか、ループ内にPeekmessage置いて応答させるとか。 詳しくは知らんが・・

215 名前:デフォルトの名無しさん :03/11/28 08:47
SetWindowTextみたいなAPIにもUNICODE版とかあるんですよね?
UTF8を設定出来ますか?

216 名前:デフォルトの名無しさん :03/11/28 09:58
現在の言語ロケールを取る方法教えて下さい。

217 名前:デフォルトの名無しさん :03/11/28 10:15
>>216
Get(User|System)DefaultLCID

218 名前:デフォルトの名無しさん :03/11/28 12:17
>>215
ほとんどのAPIにはUnicode版があって
#define UNICODEすると自動的に呼ばれる。
でもUTF-16なのでUTF-8は変換してから渡す

219 名前:デフォルトの名無しさん :03/11/28 12:24
文字列がUNICODE固定なら
SetWindowTextW
としてもいい

220 名前:デフォルトの名無しさん :03/11/28 12:57
>>218
UTF-16 じゃなくて、UCS-2 じゃなかったっけ?

221 名前:デフォルトの名無しさん :03/11/28 13:23
いちおう、W系APIはサロゲートペアをサポートしているみたいだよ。
だから、UTF-16で正解のはず。

http://www.microsoft.com/globaldev/DrIntl/columns/018/default.mspx
>Windows XP has some support for surrogate code points
>For example, CompareString recognizes such characters and
>will sort them according to the default order mentioned earlier

222 名前:デフォルトの名無しさん :03/11/28 16:36
メニュー項目のEnabledをコード中から操作したいんですが、どうしたらいいですか?

223 名前:デフォルトの名無しさん :03/11/28 16:51
>>222
そうやって検索したら?
何でも人に聞くのはイクナイ('A`)

つまり MENUITEMINFO構造体 を使わずにってことでしょ?
結局俺も知らないわけだが参考に
http://black.sakura.ne.jp/~third/system/winapi/win77.html
こういうものぐらいは提示できる

がんばれよ

224 名前:デフォルトの名無しさん :03/11/28 16:51
GetMenuItemInfoで出来る。




225 名前:デフォルトの名無しさん :03/11/28 16:51
>>223
文おかしいじゃん・・・
「そうやって検索したら?」→「今質問したように検索したら?」です

226 名前:デフォルトの名無しさん :03/11/28 16:53
GetじゃなくてSetでした。

227 名前:デフォルトの名無しさん :03/11/28 17:09
検索したけどなかったので質問です。
あるIDのメニューアイテムが存在するかをID値で知るには
どうすればよいですか?

228 名前:デフォルトの名無しさん :03/11/28 17:11
>>227
最初の質問とちがくない?

Enabledかどうかはメッセージを送って確認するんじゃないかなぁ?・・・
メニューアイテムがあるかどうかは一つずつ確認するしか?

上はMENUITEMINFO を使うことをお勧めする

229 名前:222 :03/11/28 17:18
>>223,>>224
わざわざありがとうございました。
SetMenuItemInfoなのかなと思ったんですが、パラメータを見た感じなにか違うような気がしてました。
構造体を調べたらできることがわかりました。

>>227は私じゃないです。

230 名前:デフォルトの名無しさん :03/11/28 17:22
>>229
おつかれ〜、ってまだ完成してない?
無理せずがんばれよ〜

>>227
失礼しますた
検索する文字列とメニューアイテムの名前が一致するID値を取得したいって事?

231 名前:デフォルトの名無しさん :03/11/28 17:44
パラパラ質問する前にMSDNのMenu関連を通読しろ

232 名前:デフォルトの名無しさん :03/11/28 17:49
>>231
お前が質問してきたときもそういわれたいか?
マズ自分で調べるてから聞くのは当たり前。

調べ方解らない場合はどうすりゃいいんだ?

233 名前:    :03/11/28 18:02
質問の仕方が気に食わないなら無視しとけばイイだけだろ?

234 名前:描画・計算中 :03/11/28 18:04
>>207 210 212 213 です。

なんとか解決できました。 Getmessage で処理できるんですね。
そういう使い方を初めて知りました。 でも、みなさんのおかげで
ちょっとづつ 賢くなっていきます。ホント。

235 名前:デフォルトの名無しさん :03/11/28 18:04
>>233
そそ、自分の嫌なものは目を閉じて

たとえば>>233が気に食わなかったら>>233を無視
俺が気に食わなかったら俺を無視汁!

236 名前:222 :03/11/28 18:05
>>230
出来ないと思ったら、DrawMenuBarを忘れてました。
詳しく調べたらEnableMenuItemという便利なものがありました。

>>231
このスレの住人にはいい人が多いのでつい・・

237 名前:デフォルトの名無しさん :03/11/28 18:05
>>234
おめでとうよ!
俺は何をしてるのか全く理解できなかったからROMってたけど出来てよかったじゃん。
俺も負けずに頑張るぞー

238 名前:デフォルトの名無しさん :03/11/28 18:06
>>236
基本的にいい人は少ない。
時々でてくるだけ、その他は自分で何とかしろとかちゃんと調べろとか文句いうやつら

239 名前:くりあ :03/11/28 22:14
win32で画面をクリアするにはどうすればいいのですか?
教えてください

240 名前:デフォルトの名無しさん :03/11/28 22:32
>>239
あなたのクリアの定義を教えてください。

241 名前:デフォルトの名無しさん :03/11/28 23:00
>>239
cls();

242 名前:デフォルトの名無しさん :03/11/28 23:08
>>240
お前馬鹿じゃネーノ?

243 名前:デフォルトの名無しさん :03/11/28 23:08
>>239
モニタの電源を切れ。

244 名前:デフォルトの名無しさん :03/11/28 23:26
>>240
http://www.cg-online.jp/clear/

245 名前:デフォルトの名無しさん :03/11/28 23:41
Win32のラスボスを倒せばいいんじゃね?

246 名前:デフォルトの名無しさん :03/11/28 23:44
>>245
ラスボスはやっぱ札束ゲイシか?

247 名前:デフォルトの名無しさん :03/11/28 23:45
なかなか初心者にはあのボスは手ごわいぞ。
まず起動可能なFDを作成し、FDから立ち上げ、プロンプトから
forma・・・・
これ以上はネタバレだからやめとくか。

248 名前:デフォルトの名無しさん :03/11/28 23:46
>>239
画面の定義も教えてください。

249 名前:デフォルトの名無しさん :03/11/28 23:50
インプットダイアログみたいなのってコモンダイアログで用意されてないんだっけ?
イメージとしては1行のテキストを入力できればよいんだけど。

250 名前:デフォルトの名無しさん :03/11/29 00:08
無いよ。


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