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


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

Win32API 質問箱 Build6
1 名前:デフォルトの名無しさん :02/09/21 04:03
スレ立てるまでもない、Win32APIについての質問はこちらへどうぞ。
やさしいお兄さんたちが答えてくれるかも。
でも、最低限Web検索ぐらいはしてね。

過去スレ
Win32API 質問箱 Build5
http://pc3.2ch.net/test/read.cgi/tech/1028580373/
Win32API 質問箱 Build4
http://pc3.2ch.net/test/read.cgi/tech/1023361418/
Win32API 質問箱 Build3
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API【2】
http://pc.2ch.net/tech/kako/1006/10067/1006783012.html
Win32API 質問箱
http://pc.2ch.net/tech/kako/991/991576947.html

参考
MSDN Online
http://www.microsoft.com/japan/msdn/default.asp
猫でもわかるプログラミング
ttp://www.kumei.ne.jp/c_lang/index.html

2 名前:デフォルトの名無しさん :02/09/21 04:18
2ゲットし放題!

3 名前:デフォルトの名無しさん :02/09/21 04:25
前スレの>>968
是非お願いします。

http://210.153.114.238/cgi-bin/upbbs2/imgboard.cgi
ここにUPして頂けますか?

4 名前:デフォルトの名無しさん :02/09/21 04:30
>>3
猫でも〜にもあったが、あれじゃいかんの?

5 名前:デフォルトの名無しさん :02/09/21 04:34
>>前スレ973

それが出来ないから困ってるんですよ
たとえばMSゴシック11ptだと全角の幅=半角*2にならないので、
GetTextExtentPoint32等を含む通常のAPIでは描画結果がずれるのです。

なので、手動で補正もしくはExtTextOutで強制的に幅を指定しないといけないのですが、
自前で調整するには文字が半角か全角かを判別しなければなりません。
で、SJISだけなら問題なかったのですが、UNICODE(UCS2)だと、
すべての文字が2byteで表されるわけで、困っちゃったな、ということです。

プロポーショナルだと楽なんですが、そういうわけにも行かないので。

6 名前:前スレ959 :02/09/21 04:41
取得したいのは論理単位でです。
おなじ12ptでもフォントによってTEXTMETRICのtm.tmHeightは異なるので
上限があるのかなと思ったのですが…

高さの上限は決められていないのでしょうか。
わかる方お願いします。

7 名前:デフォルトの名無しさん :02/09/21 04:41
>>3
http://210.153.114.238/img-box/img20020921043840.zip
うぷした。
パスワードはsplitterね。

ウインドウクラスにControlを継承させてからSetControlする。
それから、HandleMessageに適切なメッセージを渡せば使えるはず。


8 名前:デフォルトの名無しさん :02/09/21 04:43
>>5
Unicode文字をANSIに変換してバイト数を得るのはまずいのか?
でもあんただったらそのくらい分かりそうから、ボツなんだろうな。

9 名前:デフォルトの名無しさん :02/09/21 04:45
>>4
あの方法で、3つや4つに分割できますか?


10 名前:デフォルトの名無しさん :02/09/21 04:46
>>7
どうもありがとうございます
早速DLさせてもらいます

11 名前:デフォルトの名無しさん :02/09/21 04:46
>>6
フォント作成時にサイズを-xとかにしたら?

12 名前:デフォルトの名無しさん :02/09/21 04:48
>>8
UNICODE化の目的は似非I18nなので、
UNICODE->ANSI(SJIS)にマッピング出来ない文字もあるわけでして…

13 名前:デフォルトの名無しさん :02/09/21 06:29
スクロールバーをつまんでで移動したとき
漏れのアプリだとボタンを話すまで再描画されないのだが
他のアプリは バーが動くとすぐ描画されてる気がする

なんか指定しないといかんの?

14 名前:デフォルトの名無しさん :02/09/21 06:36
SetScrollInfoでSIF_TRACKPOSを指定してないとか

15 名前: :02/09/21 06:47
>>5
固定ピッチなら、明らかに半角であると分かっている文字の幅より
広ければ全角とみなして構わないのではないか?

16 名前:デフォルトの名無しさん :02/09/21 08:47
ListViewで、特定の行だけ色を変えたいんですが
どうすればいいでしょうか。
ListView_SetTextColorとかだと全体が色変わっちゃうし。


17 名前:デフォルトの名無しさん :02/09/21 10:05
>>15
なんかしょぼ〜んだけど、以外とそれが正解クサイかも
全角半角の整合が取れなくても、それぞれ半角同士全角同士は整合取れてるはずだから。
サンクス!

18 名前:デフォルトの名無しさん :02/09/21 11:37
>>5
Unicodeの半角全角の表。これ使ってみる?
http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt
説明はこれ。
http://www.unicode.org/unicode/reports/tr11/

19 名前:デフォルトの名無しさん :02/09/21 12:46
>>前976 >>18
どうもです。
しかし、これを見ると文字幅は一意に決定することが出来ないようですね。
emacsのように独自の多言語コードに変換するのがスッキリしているみたいです。
FIXED PITCHという文化とWin(覗くXP)のフォントが憎くなってきました。

20 名前:デフォルトの名無しさん :02/09/21 13:21
>>6
LOGFONTの説明を見れ。フォントマッパは指定されたサイズを越えない
最大のフォントを探すとある。だから、12ptと指定したなら最大のサイズは
12ptなんじゃないの? 論理単位で。

21 名前:ねこま :02/09/21 13:38
CreateFile についてなのですが,以下に
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_createfile.htm
1.ハードディスク x を開くには、lpFileName パラメータで \\.\PHYSICALDRIVEx と指定します
2.フロッピーディスク x や、ハードディスクのパーティション x を開くには、lpFileName パラメータで \\.\x: と指定します
と書かれています.

1.の,「ハードディスク x を開く」
2.の,「ハードディスクのパーティション x を開く」
という違いがわからないのですが,このあたり明るい方教えてください.
ここ読めとかでもいいです.

やってみると,うちでは
\\.\PHYSICALDRIVEx はハードディスクのすべてで失敗し,フロッピードライブである A と B で成功する
\\.\X: ハードディスクのすべてで成功する
となりました.


22 名前:デフォルトの名無しさん :02/09/21 13:51
1.はMBRを含むハードディスク全体
2.はその中の各パーティション
どうして失敗するのかは知らん

23 名前:デフォルトの名無しさん :02/09/21 14:16
>>21
\\.\PHYSICALDRIVE0 なら一台目のハードディスクという意味では


24 名前:デフォルトの名無しさん :02/09/21 14:17
976 :デフォルトの名無しさん 本日のレス :02/09/21 11:21
>>970
Unicodeか・・・ちなみにギリシア文字(アルファとかベータとか)は全角だと思いますか?半角だと思いますか?

25 名前:デフォルトの名無しさん :02/09/21 14:34
>>21
2. の方は日本語訳が間違ってるよ。英語版の方では...

When opening a volume or floppy drive, x, the lpFileName
string should be of the form \\.\x:.

となっていて、パーティションと言う言葉は出てこない。
参照: ttp://msdn.microsoft.com/library/en-us/fileio/base/createfile.asp

ただ日本語訳のほうもその後を読めば、\\.\X はドライブ指定であること
は、普通わかるはず。

失敗する時は、エラーコードぐらい示したら ?
どうせ、Windows 9x でやってるか、Windows NT の一般ユーザー権限で
やっていると言うオチだろうが...。

26 名前:デフォルトの名無しさん :02/09/21 14:37
Win32APIの書籍でお勧めなのってありませんか?

27 名前:ねこま :02/09/21 14:39
>>22さん
DISK_GEOMETRY の内容を表示すると,確かにそうですね!なるほど
同じハンドルしか返ってこないし

>>23さん
MSDN より
>\\.\PHYSICALDRIVE2
>ユーザーのコンピュータの 3 番目の物理ドライブのハンドルを取得します。
なのでその通りでした.勘違いしてました.

どうもありがとうございます.

28 名前:デフォルトの名無しさん :02/09/21 14:41
>>26
Windows95 APIバイブル1,2

29 名前:デフォルトの名無しさん :02/09/21 14:42
\\.\X: ハードディスクのすべてで成功する

と書いているのですから,読めばそんなオチではない事
は、普通わかるはずでは?


30 名前:デフォルトの名無しさん :02/09/21 15:22
>>29
> 読めばそんなオチではない事は、普通わかるはずでは?
これは、Windows9x の方か ? 権限の方か ?
確かに Windows9x は、\\.\x もダメみたいだな。ちょっと勘違いしてた
よ。

でも、そんなことぐちゃぐちゃ言ってる暇あったら...
> 失敗する時は、エラーコードぐらい示したら ?
の方をやってみたらどうよ。

31 名前:デフォルトの名無しさん :02/09/21 15:50
Windowの画面全体をメニューバー(マウスでドラッグすると移動できる)
みたいにするにはどうすればいいんでしょうか?

Tcalenderのようなメニューバーはなくて画面表示のみ、
それで、画面をクリックしながら動かせば移動が可能、とやりたいのです。

32 名前:デフォルトの名無しさん :02/09/21 15:57
メニューバー?タイトルバー?

33 名前:31 :02/09/21 16:02
すみません。
タイトルバーのことです。
タイトルバーもメニューもない、内容だけのWindowを作って、
なおかつそれをドラッグで移動させたいのです。

34 名前:デフォルトの名無しさん :02/09/21 16:29
>>33
case WM_NCHITTEST: return HTCAPTION;

35 名前:デフォルトの名無しさん :02/09/21 16:29
WM_NCHITTESTでHTCAPTIONを返す
FAQだな

36 名前:34 :02/09/21 16:32
かぶった

37 名前:デフォルトの名無しさん :02/09/21 16:49
>>16
NM_CUSTOMDRAWを調べよう。

>>33
WM_NCHITTESTに対して常にHTCAPTIONを返すとか。

38 名前:31 :02/09/21 16:50
>>34さん、>>35さん、
できました!
2時間悩んでいたので感激です!!!
どうもありがとうございました。

39 名前:37 :02/09/21 16:50
さらにかぶった。鬱。

40 名前:31 :02/09/21 16:56
>>37さん、ありがとうございます。
FAQだったのですね。検索が甘く失礼しました。

41 名前:デフォルトの名無しさん :02/09/21 18:16
>>11
そのxをどうやって求めるかを知りたいのですが・・・

42 名前:デフォルトの名無しさん :02/09/21 18:38
>>41
xは自分が作りたいフォントのサイズなのだが。

43 名前:デフォルトの名無しさん :02/09/21 18:56
>>42
いやあの、あるサイズのフォントを作りたいのでは無くて、高さを知りたいんです。
例えば12ptの任意のフォントで描画された文字列を矩形で囲むとしたら
その矩形の高さをどう求めたらよいのかということです。
矩形の高さはポイントによって固定したく、
12pt→RECT rc12;
13pt→RECT rc13;
 :
 :
と対応させて矩形を表します。
rc12内へ12ptサイズのフォントを表示させれば、どんなフォントでも上下が
はみ出さずに表示できるようにするには、rc12の高さをどう設定すればよいのでしょうか。 

44 名前:デフォルトの名無しさん :02/09/21 20:12
>>43
ねぇねぇ、もしかしてポイントサイズからドットサイズへ変換する式がわからないとか言う話?

45 名前:デフォルトの名無しさん :02/09/21 20:32
フォントサイズといえば、CreateFontのnHeightパラメータの説明、

0 指定された値をデバイス単位に変換し、それを利用可能な各フォントのセルの高さと比較します。
<0 指定された値をデバイス単位に変換し、その絶対値を利用可能な各フォントの文字の高さと比較します。

これ、思いっきり謎なんだけど、誰か解説出来る人いますか。
昔、本で高さには負数を入れろと書いてあったのを覚えているんだけど、
絶対値で比較されるなら差がないと思うんだけど、どうだんでしょ。

46 名前:デフォルトの名無しさん :02/09/21 20:33
>nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

ちなみに、MSDNの例では負数を入れてますね。

旧スレが上がっているのでage

47 名前:デフォルトの名無しさん :02/09/21 20:42
>>45
正だったらフォントの (* セル *) の高さ。
負だったらフォントの (* 文字 *) の高さ。

文字の高さ (em height としても知られている) とは、文字セルの高さ
から内部レディング (アクセント記号などのためのスペース) の高さを
引いたものです。

48 名前:デフォルトの名無しさん :02/09/21 21:00
>>47
レスどうもです。
文字の大きさを基準にスペースを決定したい場合は負数で、
スペースを基準に文字を収めようとする場合には正の数ということですね。

49 名前:デフォルトの名無しさん :02/09/21 21:42
>>48
ちょっと違う、 Á, Ö みたいにアクセント/ウムラウト等の文字の上につ
く記号のためのスペースを含むかどうか。(もちろん、文字としては含まな
い、セルとしては含まれる。)
ttp://amalfi.dis.unina.it/~carlosan/F3+BD/chap2/default.htm
の真中辺の Fig. 2-3 を参照のこと。

50 名前:デフォルトの名無しさん :02/09/21 21:51
>>49
えっと、混乱してきました。
文字の高さ = otmMacAscent + otmMacDescent
セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap = tmHeight + tmExternalLeading
ですよね?

# 記号のスペースがtmInternalLeadingって事ですよね。
tmHeightにはtmInternalLeadingが含まれますが、
tmHeightを基準にするか(セル)、tmHeight - tmInternalLeading(文字)を基準にするかと言うことでしょうか?

そうだとすると、US ASCIIとかSJISの文字を表示するときはスペースの利用効率で負数を使って、
ウムラウト文字を含むような西欧文字を表示するときには正の数を使う、ってことですか。

51 名前:デフォルトの名無しさん :02/09/21 21:51
最後の2行はなんか違う気がしてきました、
読み捨てて下さい

52 名前:デフォルトの名無しさん :02/09/21 21:56
>>43
君がッ
LOGFONTのヘルプを見るまでッ
僕はッ
LOGFONTのヘルプを見ろと言うのをやめないッ!!

53 名前:デフォルトの名無しさん :02/09/21 22:07
>>50
> セルの高さ = otmMacAscent + otmMacDescent + otmMacLineGap
> = tmHeight + tmExternalLeading
これは、違う。
セルの高さ = 文字の高さ + tmInternalLeading
 = otmMacAscent + otmMacDescent + tmInternalLeading
詳細は、
ttp://www.topposystem.co.jp/DL/Win32API/font/Font09.htm
の下のほうの図を参照のこと。

54 名前:デフォルトの名無しさん :02/09/21 22:21
>>53
馬鹿におつきあい頂きありがとうございました。
それぞれの値が意味する物はわかりましたが、使い分けがさっぱりだったりします。


55 名前:デフォルトの名無しさん :02/09/21 22:37
>>44
矩形の高さは
 MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72)
で計算したのですがArial Blackなどの一部のフォントだと下が切れてしまうんです。
フォントは
 lf.lfHeight = -MulDiv(m_nFontSize, pDC->GetDeviceCaps(LOGPIXELSY), 72);
で高さを指定しています。

lf.lfHeightに入れる値を正数にすれば矩形内には収まりますが、
それだとワードパッドで表示した同じポイントのフォントより明らかに小さく描画されてしまいます。

というわけでこの方法ではうまくいかないものだと思い、ここで質問させていただきました。


56 名前:デフォルトの名無しさん :02/09/21 22:47
それはつまりワードパッドと同じ大きさのフォントにすると下が切れるってことだろ
ここで聞いて解決するような問題なのか?

57 名前:デフォルトの名無しさん :02/09/21 22:56
AGEテオキマス

58 名前:デフォルトの名無しさん :02/09/21 23:08
クソスレageんなヴォケ

59 名前:デフォルトの名無しさん :02/09/21 23:17
>>56
ワードパッド(に限らずIEや他のペイントソフトなど)と同じポイントを指定してるので
できれば同じ大きさで描画されて欲しいです。

60 名前:デフォルトの名無しさん :02/09/22 01:58
スライダーコントロールの色を指定したいのですが、やり方がわかりません。
システム色ではなく、赤とか青とかいろいろな色で作りたいのです。
ご存知の方、教えてください。

よろしくお願いします。


61 名前:デフォルトの名無しさん :02/09/22 04:15
Win95以降に使えるようになったコモンコントロールの
リファレンスみたいなのが載ってる本はないでしょうか?

MSDNはその部分日本語化されてないし、
ネットで探しても、ごく一部分だけの解説とかしか
見つからないのです。

62 名前:デフォルトの名無しさん :02/09/22 04:31
検索しても見つからんなら大人しく英語版読むのが吉。
あと具体的にどのコントロールのことを知りたいのか書けば
知ってる奴が教えてくれると思う。

63 名前:デフォルトの名無しさん :02/09/22 04:53
>>59
で、切れてもいいのか?
お前が何をやりたいのかさっぱりわからんのだが。

64 名前:61 :02/09/22 04:54
たしかに、具体的にやりたいことがあってそのやり方が分からない
という時なら、それで事足ります。

でも、たまに暇な時に何となく説明を読んでたら
「おお、このコントロールにはこんな機能があったのか!」
みたいな便利機能発見して嬉しくなることができないなぁと。


65 名前:デフォルトの名無しさん :02/09/22 04:58
>>61
MFCのドキュメント。
SDKとの対応がだいたい想像付く。その逆も。

66 名前:61 :02/09/22 05:18
>>65
成程!
それは盲点でした。
ありがとうございます。

67 名前:デフォルトの名無しさん :02/09/22 05:20
>>64
なんとなく読むだけの暇があるんなら最初から英語版に目を通せや・・

68 名前:デフォルトの名無しさん :02/09/22 05:48
>>7
うまく出来ました!
とても参考になりました。
ありがとう。

69 名前:デフォルトの名無しさん :02/09/22 13:27
>>63
切れないように。矩形内に収まるように。と書いてあるが。

70 名前:デフォルトの名無しさん :02/09/22 17:16
自作でエディットコントロール見たいな奴を作ろうと思ったんですが、
WM_CHARを取ろうと思っても親にSendMessageしてもらわないとできません。
標準のエディットコントロールでは、そんなことせずにできるんですが、
どうやったらいいのでしょうか。
RegistClassあたりでそういうのがあるんでしょうか。

71 名前:デフォルトの名無しさん :02/09/22 17:51
>>70
サブクラス化すればいいだけじゃないの?

72 名前:70 :02/09/22 17:56
>>71
サブクラス化とは何でしょうか?

73 名前:70 :02/09/22 18:28
>>72
そこまでバカではない。
>>71
エディットコントロールをですか?
それじゃ意味が無いような。

74 名前:デフォルトの名無しさん :02/09/22 18:35
意味無いならやめろ。

75 名前:デフォルトの名無しさん :02/09/22 20:22
>>70
ダイアログに置いてあるなら WM_GETDLGCODE をヘルプで見てみるとよいよ
自作のウィンドウクラスの中に置いてあるなら何もしないでも来るはず


76 名前:70 :02/09/22 21:09
ありがとう御座います。見てみますね。

77 名前:デフォルトの名無しさん :02/09/22 21:28
>>70
WM_GETDLGCODEあたりの問題ですか?

78 名前:77 :02/09/22 21:28
げふぉ。

79 名前:デフォルトの名無しさん :02/09/23 02:17
>>69
そしたらワードパッドと大きさが違ってくるんだろ。
ようするに要求が矛盾してるんだよ。
奴がやりたいことを整理して出直してくるまで放置だな。

80 名前:デフォルトの名無しさん :02/09/23 02:31
>>79
やりたいこと。
・固定高の矩形内におさめる
・表示はワードパッドやIEで表示したものと同じ大きさで
これだけです。
この条件で「(矩形の高さの)上限は求められますか?」ということと、
「可能ならその方法を教えてください」というのが元の質問の意味です。

81 名前:デフォルトの名無しさん :02/09/23 03:56
固定高にワードパッドやIEと同じ大きさというが、
固定高の高さによって表示が切れるのは当然だと思うが

82 名前:デフォルトの名無しさん :02/09/23 04:17
上限があるかって質問なんだから「ありません。」で終わるやんか。
何をぐだぐだ言っとんねん。

83 名前:デフォルトの名無しさん :02/09/23 05:30
まあ、アレだ。
その部分のソースを出せば解決するんじゃないのか?

84 名前:デフォルトの名無しさん :02/09/24 03:07
http://www.forest.impress.co.jp/article/2002/09/20/goostick.html
こういうツールバーってどうやって作るの?
どこかに資料ありませんかぁ?

85 名前:デフォルトの名無しさん :02/09/24 04:07
理論的には、unicodeの1〜10万いくつまでGetTextExtent32Wを
発行すればできるんでないか。まあ、表示文字列に対して
GetTextExtを発行した方が速いけどナ

86 名前:デフォルトの名無しさん :02/09/24 10:05
何言ってるんだ?

87 名前:デフォルトの名無しさん :02/09/24 20:33
ちょっと聞きたいのですが。
C言語でプログラムを書いたんですが、バックグラウンドで
動かす(MS-DOSプロンプトウインドウを出さないで動かす)には、どんなAPI
を使えばよいのでしょうか?
ご教授いただきたいですが^^

88 名前:デフォルトの名無しさん :02/09/24 20:34
mainをやめてWinMainで作ればコンソール出なくなるよ

89 名前:デフォルトの名無しさん :02/09/24 22:09
>>85
カーニングがあるからすべての2文字の組み合わせで
やらなければいけない≒事実上不可能

90 名前:デフォルトの名無しさん :02/09/24 23:11
どこかにIMEで再変換するサンプルコードがありますでしょうか?
RECONVERTSTRING 構造体を「どーにか使う」というところまで辿りついたのですが、
まったく使用例が見つからず、肝心の「どう使うのか」が分からず行き詰まってしまいました。
どなたか、お助けいただけますでしょうか。

91 名前:デフォルトの名無しさん :02/09/25 00:16
ウィンドウアプリケーションから
標準出力(coutとか)に文字列とか吐き出すと
どう処理されるんですか?

92 名前:デフォルトの名無しさん :02/09/25 00:18
Win2Kですが、非同期シリアル通信で、
SetCommMask( ,0)で
別スレッドでの受信待ちのWaitCommEventをキャンセルしているのですが、
処理が戻るまでに数秒〜数十秒かかってしまいます。
なにか、心当たりある方いらっしゃいますでしょうか?

93 名前:素人ですが。 :02/09/25 00:30
教えて君ですみません。

過去にVBA(Access97)で組んだGetSaveFileNameの記述なんですが、Windows 2000になってから
動かなくなりました。
OPENFILENAME構造体が拡張されてサイズが変わったらしいこと、拡張された部分まではわかったんですが、
構造体の拡張部分をVBでどのように宣言したらいいのかわかりません。
つーのも、pvReservedがvoid*らしいのですが、VBにはどうやら該当するデータ型が見当たらないのです。
(試しにVariantで宣言したらダメでした。)
うまく動かないのは、ここの宣言が間違っているからと睨んでいます。
TypeからEnd Typeまでの記述はどうすればいいのでしょうか??

94 名前:デフォルトの名無しさん :02/09/25 00:35
>>91
標準出力に相当するハンドルが標準では存在しないため、
未オープンファイルへ書いた場合と同様にEBADFとなる。

95 名前:デフォルトの名無しさん :02/09/25 00:45
>>93
lStructSizeの値が76に設定されていれば、古い定義のままで動くはずだ。
どうしても新しいのが使いたければLongで宣言しておけ。

96 名前:デフォルトの名無しさん :02/09/25 00:51
>>84
ttp://www.codeproject.com/useritems/toolband.asp

97 名前:デフォルトの名無しさん :02/09/25 02:16
>94
了解しました
ありがとー

98 名前:デフォルトの名無しさん :02/09/25 02:32
>89
カーニングは高さを変化さすのか?初耳だが。

99 名前:デフォルトの名無しさん :02/09/25 08:40
>>92
その別スレッドの処理がものすごいことになってるのでは?

100 名前:デフォルトの名無しさん :02/09/25 10:21
ソケット通信なんですが、
Java側で

 ObjectOutputStream oout = new ObjectOutputStream(socket.getOutputStream());
 PrintWriter out = new PrintWriter(new OutputStreamWriter(oout, "SJIS"));
 out.println("hogehoge");
 out.flush();

と送って来て、それを recv しているんですが、
文字化けしてしまいます。

unicode変換とかが必要なんでしょうか?


101 名前:デフォルトの名無しさん :02/09/25 10:25
マルチポスト
http://pc3.2ch.net/test/read.cgi/tech/1016065855/893


102 名前:デフォルトの名無しさん :02/09/25 12:05
>>100
とりあえず、受信側でデータがSJISできてるか確認してみれば?
(スレ違いだと思うけど)

103 名前:質問はここでも受け付けてるよ :02/09/25 12:58
【マルチ】ぼるじょあ(・3・)のマルチ質問箱【大好き】
http://pc.2ch.net/test/read.cgi/pcqa/1032847313/l50

104 名前:デフォルトの名無しさん :02/09/25 16:41
教えて君ですみませんが

アプリケーションから(「に」ではありません)エクスプローラ,デスクトップ
orETCにドラッグ・アンド・ドロップしてファイルコピーをしたいのですが・・・
SimpDNDサンプルだとコピー先のファイル名がスクラップになってしまいます
どうしたらいいのでしょうか?
参考のURLがありましたら教えてください

105 名前:デフォルトの名無しさん :02/09/25 21:42
ageます
だれかおながいします

106 名前:93 :02/09/25 21:49
>>95
ありがとうございます。
今日さらに突っ込んで調べてみたら、確かにlStructSizeは拡張前76、拡張後88でした。
でも76じゃ、CommDlgErrorExの値が構造体サイズ不正だったんです。
おっしゃる通りlongで定義(←他でヒント見つけました)したら、構造体サイズエラーは回避できました。
が、今度は初期化失敗のエラーが。
原因がわかりそうになかったら、また質問させて下さい。

107 名前:93 :02/09/25 22:24
× CommDlgErrorEx
○ CommDlgExtendedError

108 名前:92 :02/09/25 23:35
>99
単に受信待ちしてて、受信後にメッセージ送るだけです。
通信せずに終わると比較的早く、何度か通信してからだと大抵遅くなります。



109 名前:デフォルトの名無しさん :02/09/25 23:50
>>104
DoDragDrop()に渡すIDataObjectで、CF_HDROPフォーマット
に対応しろ。DROPFILES構造体あたりを調べてみろ。
あとは必要に応じてCF_IDLISTにも対応(コピーだけなら不要)。
コピーだけなら CF_FILECONTENTSというのもあるが
これはあまりおすすめできんぞ、ボケナス。

110 名前:デフォルトの名無しさん :02/09/26 00:12
>>109
ありがたうごじゃいます
やってきます

111 名前:デフォルトの名無しさん :02/09/26 02:19
104ではないですが。

DragFinish() って内部では何をやっているんでしょうか?
GlobalFree()? GlobalUnLock()?

112 名前:111 :02/09/26 02:41
自己レス。GlogalFlags() で調べたら GlobalFree() のようでした。ども。

113 名前:デフォルトの名無しさん :02/09/26 10:19
windowsのコンソールアプリでパイプ使いたいんですけど
どうすればいいんですか?

114 名前:113 :02/09/26 10:21
あ、これだけじゃわかりませんね。
アプリからコプロセスを起動して、その標準出力を取りこみたいのです。

115 名前:113 :02/09/26 10:24
あ、popenってwindowsにもあるみたいですね。
お騒がせしました。

116 名前:113 :02/09/26 11:34
でもMSDNのpopenのサンプルがフリーズしてうまく動かない。
これはどうしたことか。


117 名前:デフォルトの名無しさん :02/09/26 11:41
PerlやPHPをやってるとWindowsプログラムをやりたくなくなる・・
一度甘い汁を吸うと駄目ですね・・

118 名前:デフォルトの名無しさん :02/09/26 11:58
>>92
漏れはそんなことにならなかったから、イマイチ分からない。
ここからサンプルを落として、ttyというサンプルを読むといいかも
http://download.microsoft.com/download/vstudio60pro/Utility/6.0/W98NT42KMeXP/EN-US/vs6samples.exe

119 名前:デフォルトの名無しさん :02/09/26 12:31
ログファイルに書き込むときに、排他的に開くと起動中にログファイルが読めなくなるので
FILE_SHARE_READで開こうかと思うんですが、これって書き込み中に他のアプリが
ログファイルを読み込んだりしてもファイルが壊れたりはしないですよね?

120 名前:デフォルトの名無しさん :02/09/26 12:52
>>119
壊れないとは思うけど、LockFileを使うとイイ!

121 名前:デフォルトの名無しさん :02/09/26 13:42
疲れたので寝ます。。。。。。。。。。

122 名前:デフォルトの名無しさん :02/09/26 14:17
>>113-116
GetStdHandle(STD_INPUT_HANDLE)はどうよ

123 名前:122 :02/09/26 14:20
よく読んだら、外してる

124 名前:SevenTH ◆BI2EKkq. :02/09/26 15:27
>>116
Win98 と NTでは、パイブの挙動が違う。

125 名前:113 :02/09/26 19:01
>>124
今Win98SE上で作ってます。
NTだとうまく機能するのかもしれませんね。
実際、さっき試したら自分で作ったEXEの標準出力は取りこめたので。
DIRとかのcommand.comのシェル関数を使うと駄目っぽいです。

126 名前:デフォルトの名無しさん :02/09/26 19:06
このスレッドで良いのかわかりませんが、質問させてください。
AccessのMDB形式のデータベースをC言語でのWin32SDKとかから
VBの様にSQL発行したりしてアクセスしたいんですが、方法は
あるでしょうか。(このためだけにVB使うのは気が引けるので)
ExcelみたいにCOM経由ででもできればいいんですが。

127 名前:デフォルトの名無しさん :02/09/26 19:12
IMEの入力モードについてなのですが...
ローマ字入力/かな入力の切換え関数を教えて下さい。

Win2K+VC6+MS-IME2000です。

...出来れば、入力モードの取得関数もお願いします。m(_ _)m

128 名前:デフォルトの名無しさん :02/09/26 19:20
まさか、popen("dir",...)な口ではなかろうな、、、

129 名前:デフォルトの名無しさん :02/09/26 19:23
>126
ADOをCOM経由で叩いたり、DAO使ったり、ODBC叩いたり
すればいいとは思うけど。

130 名前:デフォルトの名無しさん :02/09/26 20:45
>>127
ImmSetConversionStatus とかかなぁ

131 名前:127 :02/09/26 21:22
レスどーもです。

>ImmSetConversionStatus とかかなぁ
↑は半角/全角とかの入力モードの変更関数です。

知りたいのはIME2000プロパティ上の
「入力設定」-「ローマ字入力/かな入力」の変更方法と取得方法なんです...

よろしくお願いします。m(_ _)m

132 名前:93 :02/09/26 21:28
解決したので、一応ご報告しときます。
全然違う所で引っかかってたようです、すみません。

Win95で開発当時、OPENFILENAME構造体を次のように定義していたのですが…
  Type
   …
   lpstrFilter As String
   …
  End Type
2000では、こうするとまともになりました。
  Type
   …
   lpstrFilter As Long
   …
  End Type
95でも、これで大丈夫みたいです。

ここはVBではStringにするようになってたはずだと思うんですが、なぜLongに変える必要があったんでしょうか?
結果オーライでは今一つ不安なので、どなたか理由を教えて下さいです。

133 名前:訂正@93 :02/09/26 21:30
>>132は間違い、
lpstrCustomFilter As String
 ↓
lpstrCustomFilter As Long
です。

134 名前:デフォルトの名無しさん :02/09/26 21:54
lpstrCustomFilterに自分で値をセットしない限りは、
どっちでもまったく同じ。

135 名前:134 :02/09/26 21:57
つまり、このメンバを使わないのなら という意味ね。

136 名前:126 :02/09/26 22:14
ODBCが簡単そうなので、これでいってみます
ありがとうございました。

137 名前:デフォルトの名無しさん :02/09/26 22:48
>>131
それって、カナロック?

138 名前:名無しさん@Emacs :02/09/26 23:11
>>90
レスがつかないようなので。
HPは、なくなっているようだけど
ImeReconvでぐぐってみそ。

139 名前:93 :02/09/26 23:35
>>134
いかにも、lpstrCustomFilterに0だのNullだの入れるとおかしくなったけど、無視したらまともでした。
でも、なんでLongだと問題が解決したのか知りたいです。

140 名前:134 :02/09/27 00:11
>>139
Long型の初期値(宣言後に何も入れてない状態)は 0。
これにコード内で明示的に0を入れても元の値のまま。

String型の初期値はvbNullString。(他の言語で言えばNULLポインタ)
これをAPIに渡すのと、Long型の 0を渡すのはまったく同じ。
しかしコード内で "" を入れてしまうと、この値は変化し、
長さゼロの文字列へのポインタとなる。
明示的に初期化したいのであれば vbNullString を入れろ。

API呼び出し以外の場面では、(普通は)両者の違いを意識する必要はない。

141 名前:デフォルトの名無しさん :02/09/27 07:01
>>94
ナラネーヨ
なにげに存在してるぞ。コンソールに反映されないだけで

142 名前:127 :02/09/27 09:27
>>137
レスどーもです。
そです。「Alt+ローマ字」キーで切替えるトコです。

入力モード/変換モードは変更出来るんですが、
ローマ字入力/かな入力の切替えが出来なくて...

よろしくお願いしますm(_ _)m

143 名前:デフォルトの名無しさん :02/09/27 10:00
>>141
バッファリングって知ってる?

144 名前:デフォルトの名無しさん :02/09/27 10:18
>>143
関係ないよ
コンソールが存在してないんだから

145 名前:デフォルトの名無しさん :02/09/27 10:55
質問させていただきます。
マルチスレッドを勉強しているのですが、
クリティカルセクションとミューテクスの違いがわからなくて困っています。

両方、フラグがOFF(他のスレッドで排他処理を行っていない)状態になるまで
待機するものと思うのですが、なにか使い分けはあるでしょうか。

146 名前:デフォルトの名無しさん :02/09/27 10:58
Mutexはプロセスを超える

147 名前:デフォルトの名無しさん :02/09/27 11:04
>>142
keybd_eventじゃダメなの?

148 名前:デフォルトの名無しさん :02/09/27 11:18
>>143-144
コンソールアプリでなくてもリダイレクトすると
ちゃんと標準出力の内容をファイルに落とせる。
つまりコンソールがないから見えないだけで
標準出力はちゃんと存在するんだな。

149 名前:127 :02/09/27 11:19
>>147
キーボードイベントでも変更出来るんですけど、
ON/OFFの状態が判らないと、必要が無いのにイベントを投げちゃいそうで...


150 名前:127 :02/09/27 11:49
モードがローマ字入力の時に「Alt+ローマ字」のイベントを投げたら、
モードはかな入力になりますよね?
それだと、困るんですよ...色々と

諦めるって訳にも逝かないし...脳味噌から煙が...

151 名前:デフォルトの名無しさん :02/09/27 11:55
今さら??
というような問題で悩んでおります。
MessageBox("テスト",NULLL,MB_YESNO|MB_ICONQUESTION);
見てのとおりのメッセージボックスなのですが、
MB OKなら「ポン♪」って音がなりますよね?
↑のコードじゃならなくて困ってます。
直前にMessageBeep入れてもできるとは思いますが、
どうも根本的な解決じゃないような。。
ご指導よろしくおねがいします。

152 名前: :02/09/27 11:56
>>148
すまんが、確認したOSは?

153 名前:デフォルトの名無しさん :02/09/27 12:31
>>151
キミの環境ではサウンドのプロパティのメッセージ(問い合わせ)が
設定されてないだけだと思ふ。

154 名前:デフォルトの名無しさん :02/09/27 12:45
>>152
98と2000とXP
9xだと常駐ソフトの絡みか何かでファイルに落ちないことは
あるけどそういうときはコンソールアプリも落ちない(リダイレ
クトしてるのにコンソールに吐かれる)から単なるバグだと思う。
あと処理系によってはGUIアプリのとき標準出力の準備を
省略することがあるかも(>>148を確認したのはVC++ 6.0)

155 名前: :02/09/27 12:48
>>154
変だね。当然、標準出力をわざわざ作ってはないよな?

156 名前:154 :02/09/27 12:55
GUIアプリのprintfデバッグによく使ってる手なんで
幻を見てるって事はないはずなんだけど…

157 名前:154 :02/09/27 12:57
>>155
スタートアップコードが標準出力を作ってるかもしれないけど
プログラム内で明示的に作ったりはしてないです

158 名前:147 :02/09/27 13:11
>>149
GetKeyStateで取得すれば?

159 名前: :02/09/27 13:13
>>157
は、リダイレクトを指定しないとき、ハンドルが存在するか確認はしてないわけだな?

リダイレクトすると、自動作成されるってのが結論なのかねぇ。

160 名前:デフォルトの名無しさん :02/09/27 13:55
>>159
DOS窓から実行させればリダイレクトしなくても表示されますが?

161 名前:127 :02/09/27 14:26
>>158
以下のよーな感じですよね?GetKeyState関数の使い方は
引っ掛かりませんでしたけど...ね

if(GetKeyState(VK_KANA) & 0x0001){
  // かな_ON
}else{
  // かな_OFF
}
指定してる仮想キーを間違えてるのかなぁ...

162 名前:デフォルトの名無しさん :02/09/27 14:28
160age

163 名前:デフォルトの名無しさん :02/09/27 14:48
LoadLibraryでDLLをマップしようとすると、NT系ではOKですが、
9x系ではGetLastError「このアプリケーションの実行に必要なライブラリ ファイル
のうちの 1 つが見つかりません。」と返してきます。

MSDNには、
「DllMainがWin32 関数の Unicode 版を呼び出そうとした場合も、LoadLibrary は失敗します。」
とあるので、これが気になっているのですが・・・。

DLLはCOMサーバで、unicodeプログラムになっています。


164 名前:デフォルトの名無しさん :02/09/27 15:01
>>160
表示されないぞ

165 名前:デフォルトの名無しさん :02/09/27 15:16
>>163
何のDLL使おうとしてるんだか知らんが、そのDLLがリンクしてるDLLがNT系固有なんじゃないか?
Dependency Walkerでも見ろ。

166 名前:147 :02/09/27 15:21
>>161
合ってるよ。
それで取得できるはずだけど。

167 名前:147 :02/09/27 15:56
>>161
あ、IME2000固有のカナモード切換のこと?
だったら多分無理だよ。
(ごめん、キーボードのカナロックかと思った)

以前にMSのサポート技術情報ページで、
IME97かIME98あたりからAPIでの変更が不可能に
なったというのを読んだことがある。

168 名前:127 :02/09/27 16:45
>>167
むぅ...「Alt+ローマ字」で切替えるヤシは
APIで変更が出来ないのか...

(゚д゚)マズーだな...こりゃ...
さて、どーしよ

169 名前:93 :02/09/27 19:48
>>140
ありがとうございます。
Stringで宣言していた時は、Chr(0)だのvbNullCharだので初期化してたのですが、
あちこちコードをいじり倒したので、今となってはよくわからなくなってしまいました。
今後の参考にさせて頂きます。

170 名前:名無し@沢村 :02/09/27 21:04
皆様方、ボタンなのですが、ボタンは子ウインドウなのでマウスでクリックしたとき、そのウインドウのハンドルを取得したいのですが、どうすればできますか?
いろいろなボタンをクリックしたときに、そのボタンに応じたハンドルを取得できますか?


171 名前:デフォルトの名無しさん :02/09/27 21:19
>>170
GetDlgItem

172 名前:デフォルトの名無しさん :02/09/27 21:38
>>168
keybd_event で何か入力させてみて、何が入力されたか調べる・・・とかいう最終手段もなきにしもあらず

173 名前:名無し@沢村 :02/09/27 22:11
コントロール(ボタン)上で、マウスボタンが押されたときと離されたときで、違う処理をさせたい場合は?

174 名前:デフォルトの名無しさん :02/09/27 22:12
>>173
サブクラス化したほうが早いんじゃない?

175 名前:名無し@沢村 :02/09/27 23:15
>>174
サンキュー、サブクラス化したらなったよ。
でもCallWindowProcをしたら1番目の引数がlong (__stdcall *)(void *,unsigned int,unsigned int,long)' から 'int (__stdcall *)(void)' に変換できません。(新しい機能 ; ヘルプを参照)とエラーが出たよ。
本に書いてあるようにしたのにどうして?
どうやって解決するの?

176 名前:92 :02/09/28 00:51
>118
ありがとうございました。
サンプルを参考にWaitCommEventの最後の引数をNULLにしたら直りました。
理由は不明ですが・・


177 名前:デフォルトの名無しさん :02/09/28 00:55
>>176
CallWindowProcのヘルプ嫁

STRICTを定義するのはデフォルトと思ってたがなあ・・・

178 名前:177 :02/09/28 00:56
しもうた176じゃなくて175だ

179 名前:デフォルトの名無しさん :02/09/28 01:13
K&R本によるとfgetcは内部でgetcを使って一文字ずつ読んでいるようですが、
Win32APIには一行ずつを読むAPIは無いので同じような関数を作るとすれば、
ReadFileで一文字ずつ読み込んでいくのが妥当ですよね?
それとも他に便利なAPIありますか?

180 名前:sage :02/09/28 01:18
同じような関数を作るくらいなら、fgets使ったほうがいいんじゃない?

181 名前:デフォルトの名無しさん :02/09/28 01:24
>138
ありがとうございます。参考にします。


182 名前:デフォルトの名無しさん :02/09/28 01:24
>>179
おいおい、ReadFileで1文字ずつ読んだら
めちゃくちゃ時間かかると思うよ。
何のためにストリームがあると思ってんの?

183 名前:デフォルトの名無しさん :02/09/28 01:25
fgetsだと行末がバッファからはみ出てたら、やばくね?

184 名前:デフォルトの名無しさん :02/09/28 01:43
>>183
やばいね。

>>182
ReadFileってバッファリングしなかったっけ?

185 名前:デフォルトの名無しさん :02/09/28 01:49
ReadFileで一気にバッファに読み込んでそのバッファで1行処理
やって処理がバッファの終わりまで来たらまた読み込んでじゃ駄目なの?

186 名前:デフォルトの名無しさん :02/09/28 01:52
メモリマップしてが――っと読んでイケ。

187 名前:デフォルトの名無しさん :02/09/28 02:22
この話題って、定期的に出ますな。で、いっつも
 1文字ずつ読むんですか?→バッファに少しずつまとめて読め→メモリマップ使え
の流れ。

188 名前:デフォルトの名無しさん :02/09/28 02:29
>>187
で実際メモリマップ最強ってことでええの?

189 名前:デフォルトの名無しさん :02/09/28 03:25
>>188
だめ。少なくとも、windowsではローレベルI/O汁
windowsのメモリマップは直接マッピングしてくれずに勝手にキャッシュするから。

190 名前:デフォルトの名無しさん :02/09/28 03:27
ではこの質問がきたら
「バッファに少しずつまとめて読め」
ということね。FAQ認定

191 名前:デフォルトの名無しさん :02/09/28 04:11
>>189
キャッシュされるとなにがまずい?
少なくともNT系ではマップした方が速いのだが。

192 名前:デフォルトの名無しさん :02/09/28 04:16
よくでる質問の割に定石って無いわけ?

193 名前:デフォルトの名無しさん :02/09/28 04:26
>>191
ディスク>キャッシュ>マップされたメモリ となる。
キャッシュの分オーバーヘッドが掛かり、遅くなる。

194 名前:デフォルトの名無しさん :02/09/28 04:38
>>159
まともな知識のある奴は一人もいないのかね。
ウィンドウズアプリでは標準出力のハンドルが割り当てられない。
GetFileType(GetStdHandle(STD_OUTPUT_HANDLE))してGetLastError()
を取ると、ERROR_INVAID_HANDLEが返ってくることからも分かる。
ランタイムのstdoutやcoutは存在するため、一見出力できるように思えるが、
バッファがフラッシュされたタイミングでエラーになる。
ただしリダイレクトされている場合は別だ。親プロセスが標準出力に
正しいハンドルを割り当てた状態をリダイレクトと呼ぶのだから、
出力できるのがあたりまえだ。

195 名前: :02/09/28 06:58
>>194
半日かけて、よく調べた。感動した。

196 名前:151 :02/09/28 08:31
>153
さんの言う通りでした。
いつの間に設定がなくなったんでしょう。
XPでは始めは設定されてないのかな。
とにかく無事解決しました。
ありがとうございました。

197 名前:デフォルトの名無しさん :02/09/28 14:10
>>193
PAGE_NOCACHEしても?

198 名前:デフォルトの名無しさん :02/09/28 14:21
>>194
試してみたらちゃんとハンドルが返ってきましたが?
もちろんリダイレクトなんかしてませんが?

と思ってたらようやく原因が分かった。
エントリをmainにしていて/subsystem:windows /entry:mainCRTStartupで
リンクするとコンソール用のスタートアップが走るせいか標準出力の
ハンドルが準備される。
エントリをWinMainにしたら0(INVALID_HANDLE_VALUEじゃない。MSDNの嘘つき)
が返ってきてGetLastError()もERROR_INVALID_HANDLEになりますた。

199 名前:デフォルトの名無しさん :02/09/28 14:30
って今テストしたら0(FILE_TYPE_UNKNOWN)が返ってきた。何か勘違いしてたらしい。

200 名前:デフォルトの名無しさん :02/09/28 14:58
じゃ結局、AllocConsole()を使え。という結論でよろしいか。

201 名前:デフォルトの名無しさん :02/09/28 15:01
既に起動済みの他アプリ(自作ではない)のボタン等のコントロールを非表示にする
ことは可能でしょうか?

202 名前:デフォルトの名無しさん :02/09/28 16:53
FindWindowとかWindowFromPointとかでどうにかハンドルを手に入れれば
あとはなんとでも

203 名前:デフォルトの名無しさん :02/09/28 23:45
スタートボタンとウィンドウズキーを使用不可にするジョークソフト
作りたいんですが検索キーワードを教えて下さい
プラットフォームSDKが英語で嫌になりました

204 名前:デフォルトの名無しさん :02/09/28 23:47
まず英語勉強しろ

205 名前:デフォルトの名無しさん :02/09/28 23:48
>>203
マウスメッセージとキーメッセージをフックしたら?

206 名前:デフォルトの名無しさん :02/09/28 23:52
>>205
NC(非クライアント)関係をやれば出来ますか?


207 名前:デフォルトの名無しさん :02/09/29 01:16
EM_SETSELで指定できる値の上限を知りたいのですが、
私の環境(Win98SE)では0x7FFFまでのようなのですが、
NT系ではどうなんでしょうか?

208 名前:201 :02/09/29 03:01
>>202
FindWindowでハンドルを得て、CaptionやIconの変更は出来たのですが,,
申し訳ありませんが、もう少しご助言いただけませんでしょうか?

209 名前:デフォルトの名無しさん :02/09/29 03:06
>>208
FindWindowで得られるのは親ウィンドウのハンドル。
そのハンドルを元にGetDlgItemやFindWindowExや
GetWindow等を使って、対象のコントロールの
ウィンドウハンドルを取得。
そしてそれをShowWindowかSetWindowPosで非表示にする。

210 名前:名無し@沢村 :02/09/29 12:20
皆様方、私はボタンが押されたときと、離されたときで違う処理をしたいと思ってここで聞いたら、
サブクラス化したらいいと教わったので、サブクラス化したところ、ちょっとうまういったんです^^;
違う処理についてはちょっとうまういったんですが、ボタンが押されたときも離されたときもじっとして動かない(見た目が)のです。
またボタンの上のフォントも作ったフォントではなく、普通のフォントが表示されるのですが、どうしたらいい?

211 名前:デフォルトの名無しさん :02/09/29 12:25
>>210
意味がワカラン

ボタンを持つ主体は自分なのか他人なのか、
フック内でどんな処理を行っているのか
フォントを作った後にどうしているのか

これくらい書け

212 名前:201 :02/09/29 18:54
>>209
試行錯誤しながらやってみたのですがうまくいきません。
具体的にはMSOffice上のボタンを非表示にしたいのですが、もう少し
ご助言いただけないでしょうか。

現在
HWND thehwnd = FindWindow( "XLMAIN", NULL );
thehwnd = FindWindowEx( thehwnd, NULL, "Button", "ヘルプ(&H)" );

とやっていますが、thehwndにはNULLが入ってしまいます。

213 名前:209 :02/09/29 19:02
>>212
その前に、そのコントロールは間違いなくウィンドウなの?

Office系では単に親ウィンドウ内にコントロールの絵を
描画しているだけのことが多いよ。
具体的にはExcelのどの部分のボタンですか?

214 名前:201 :02/09/29 19:37
>>209
プレビュー画面の各ボタンです。

215 名前:デフォルトの名無しさん :02/09/29 19:58
教えてほしいっす。
ウインドウズプログラムではスレッドごとにカーネルとユーザーモードの
スタックを持っていますが、これはスレッドごとにメモリ上に実際に確保される
スタックの位置が違うと解釈していいのでしょうか?

216 名前:209 :02/09/29 20:19
>>214
Excel2000で確認してみたところ、
子ウィンドウの子ウィンドウ(孫)だから

HWND thehwnd = FindWindow( "XLMAIN", NULL );
thehwnd = FindWindowEx( thehwnd, NULL, "EXCELC", "" );
thehwnd = FindWindowEx( thehwnd, NULL, "Button", "ヘルプ(&H)" );
のような感じで取得できると思う。

217 名前:デフォルトの名無しさん :02/09/29 20:43
>>215
> ウインドウズプログラムではスレッドごとにカーネルとユーザーモードの
> スタックを持っていますが、

こっちの真偽は、よく知らんが...

> これはスレッドごとにメモリ上に実際に確保される
> スタックの位置が違うと解釈していいのでしょうか?

これは、正しい。

218 名前:201 :02/09/29 20:45
>>209
ありがとうございました!期待通りの操作ができました。
わかりやすい説明に確認までしていただきまして感謝しています。

あと、図々しいかと思いますが、もうひとつ。
EXCEL2000で確認とありましたが、それはどのように調べるものな
のでしょうか?

219 名前:209 :02/09/29 22:07
>>218
Excel2000の印刷プレビューの画面を確認したという意味です。
俺はVC++に付属している SPY++というツールで確認しました。
ただ、EnumChildWindows等を使えばツールがなくても
比較的簡単に調べられます。

220 名前:名無し@沢村 :02/09/29 22:11
皆様方、私はボタンが押されたときと、離されたときで違う処理をしたいと思ってここで聞いたら、
サブクラス化したらいいと教わったので、サブクラス化したところ、ちょっとうまういったんです^^;
違う処理についてはちょっとうまういったんですが、ボタンが押されたときも離されたときもじっとして動かない(見た目が)のです。
またボタンの上のフォントも作ったフォントではなく、デフォルトのフォントが表示されるのですが、どうしたらいい?
フック内ではボタンが押されたときと、離されたときで違う処理だけ行なっています。
フォントはメインウインドウ内でつくった後なにもしていません。

221 名前:デフォルトの名無しさん :02/09/29 22:26
>フォントはメインウインドウ内でつくった後なにもしていません。
オモロイ

222 名前:215 :02/09/29 22:50
>>217
わかったっす。ありがとー

223 名前:名無し@沢村 :02/09/30 00:06
皆様方、大変初歩的な質問で申し訳ないのですが、
コンボボックスをつくったのですよ。
そしてfor(i=0;i<100;i++)
SendMessage(hwnd,CB_ADDSTRING,2,(LPARAM)szbuffer[i]);
としたのですがコンボボックス内に何も字が表示されないのですよ。
本に書いてあるとおりにしたのに、どうしてでしょう?
どう考えてもわかりません…


224 名前:デフォルトの名無しさん :02/09/30 00:37
>>223
wParamの2って何?
とりあえずダイアログエディタで、コンボボックスの矢印の部分をクリックして、
出てきた枠を下にぐ――――んと広げてみれ。

225 名前:名無し@沢村 :02/09/30 01:30
>>224
ヌヒよ、ダイアログじゃねーよ、ヌヒよ。

226 名前:名無し@沢村 :02/09/30 01:35
皆様方、コンボボックスですが、解決しました。
コンボボックスをつくるとき高さを充分にとってやればよかったのね…。
でも矢印をクリックしないと字が出てこないのですが…。
つまり一番上のスペースに字が最初から出ていないのですが…。
よくソフトなんかでは一番上のスペースに字もが最初から字が出ていますが、あれはどうするの?

227 名前:デフォルトの名無しさん :02/09/30 02:22
>>226
CB_SETCURSEL


228 名前:デフォルトの名無しさん :02/09/30 16:47
Windows のマクロで 9x 系か NT 系かを判定する方法ってありませんかね?
具体的には、プリプロセッサーの処理の時点で NT 系だけに存在する関数を
#ifdef で条件コンパイルしたいんです。
関数でなら GetVersionEx() というものを使えばいいらしいんですが、
これだと条件コンパイルできませんし。よろしくお願いします。

229 名前:デフォルトの名無しさん :02/09/30 17:01
>>228
もう一度頭の中を整理したほうがいいぞ

230 名前:デフォルトの名無しさん :02/09/30 17:16
>228
コンパイルしている環境のOSと、
動かすべき環境のOSは違うかもしれないんだが。

231 名前:228 :02/09/30 17:43
>229-230
あっ、そういえば……ありがとうございました。
解決できたので吊ってきます。

232 名前:名無し@沢村 :02/10/01 01:06
>>227
ありがとうございました。
CB_SETCURSELとしたところ、初めから字がコンボボックスに出ました!!
それからもうひとつ質問ですが、コンボボックスをつくるとき高さをだんだん低くしてやってみたのですが、
いくら低くしてもこれ以上低くならないというのが何かあるみたいなのです…。
よくソフトなんかでは、もっと低くてカッコいいコンボボックスを見かけるのですが、
よく見かけるソフト並みにコンボボックスの高さを低くするにはどうしたらいいの?
またそんな方法があるの?

233 名前:デフォルトの名無しさん :02/10/01 02:38
自アプリに限らない登録済みホトッキー一覧を取得するにはどうすればよいのでしょう?

234 名前:デフォルトの名無しさん :02/10/01 03:02
>>233
 const int id = 123;
 bool used[8][256];
 for (int mod = 0; mod < 8; mod++){
  for (int vk = 0; vk < 256; vk++){
   used[mod][vk] = !::RegisterHotKey(hWnd, id, mod, vk);
   ::UnregisterHotKey(hWnd, id);
  }
 }

235 名前:デフォルトの名無しさん :02/10/01 03:31
現在webブラウザを作っています。
レンダリング結果を自然にするため、
文字のカーニングを行いたいのですが、
フォントから情報を取得する方法が分かりません。

参考になるサイトなど教えて下さい

236 名前:デフォルトの名無しさん :02/10/01 20:09
GetKerningPair っつう API があるけど?

237 名前:デフォルトの名無しさん :02/10/01 20:27
MFCでダイアログベースのHTTPクライアントを作っています。
InternetReadFileで読み込んでいるのですが、読み込み中は
ダイアログの何処をクリックしても反応がありません。
他に良い方法は無いでしょうか・・・

238 名前:名無し@沢村 :02/10/01 20:44
皆様方、コンボボックスの高さの件ですが、誰にも聞かずに解決しましたヨ!!
CB_SETITEMHEIGHTとすれば良かったのね!!
あと皆様方、コンボボックスにたくさんデータを入れたのですが、
データの一番下までスクロールすると、データの一番下の字のもっと下の部分に空白ができるのですが、この空白のなくす方法はないものでしょうか?
良くソフトなんかでは、データの一番下の字までで終わりになっていてカッコいいので、あんなふうにしたいのですが…?

239 名前:デフォルトの名無しさん :02/10/01 21:08
>>238
CBS_NOINTEGRALHEIGHTを外すのだ外すのだ外すのだ

240 名前:デフォルトの名無しさん :02/10/01 22:25
>>237
INTERNET_FLAG_ASYNCで開け。
またはスレッドを作る。

241 名前:デフォルトの名無しさん :02/10/01 22:48
>>240
async・・というと非同期ですか。
ちょいとやってみます、thx!

242 名前:名無し@沢村 :02/10/01 22:54
皆様方、私は我ながらすごいこと発見いたしましたので、皆様方にお教えいたします。
それは{mciSendStringなんですが、{mciSendStringでopenとやってplayとやると、
演奏が終わったあと再びボタンを押しても演奏されないんです。
しかし停止ボタンで演奏途中で停止した場合は、もう一度演奏ボタンを押しても演奏されるんですね…^^;
私はこの事実に注目して演奏がひとりでに終わったあと再びボタンを押しても演奏されるようにする大発見をしたんです!!
それは皆様方、まず、{mciSendStringでcloseとやったあとopenとやってplayとやるといいんですよ!!
何故なら停止ボタンはmciSendStringのcloseから成り立っているからなんですねっ!
ちょっと邪道のような気もしますが何も問題は発生しないのでいいと思うんですが…。
皆様方はどう思われます?
いつも教わってばかりなので、たまには私が教えたのですが、いかがでしたでしょうか?

243 名前:デフォルトの名無しさん :02/10/01 22:57
>>242
ここに書き散らすよりも、ホームページにTipsとして書いたほうが
後の人のためだと思う。

244 名前:デフォルトの名無しさん :02/10/01 23:13
>>243
いや、どう見てもネタだろ・・・

245 名前:デフォルトの名無しさん :02/10/01 23:18
>>244
うるせえ黙れオナニーならホムペでやってろ
とやんわりと言ってるのだと思われ

246 名前:デフォルトの名無しさん :02/10/01 23:23
>>242
一つだけ言わせてもらえれば、馴れ合いたいだけなら
どっか他所でやってくれ。

247 名前:デフォルトの名無しさん :02/10/02 04:06
Tips かよ?

248 名前:デフォルトの名無しさん :02/10/02 14:35
アプリケーションモーダルなダイアログを自前で作りたいんですが
親ウィンドウを設定したあと子ウィンドウが閉じられるまで
親ウィンドウにフォーカスを移さなくするにはどうすればいいんですか
EnableWindow()ではなんか違うよう気がするんですが…


249 名前:デフォルトの名無しさん :02/10/02 14:39
何が違うんだよ。EnableWindow()でいいんだよ。

250 名前:デフォルトの名無しさん :02/10/02 14:47
違う気がする…


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