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


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

Win32API質問箱 Build50
1 名前:デフォルトの名無しさん :2007/02/17(土) 23:10:48
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

2 名前:2 :2007/02/17(土) 23:13:16
自己解決しました。
>>1にカチンときたので教えません。
バーカ!

3 名前:デフォルトの名無しさん :2007/02/17(土) 23:13:49
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/

4 名前:デフォルトの名無しさん :2007/02/17(土) 23:14:18
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html

5 名前:デフォルトの名無しさん :2007/02/17(土) 23:14:49
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/ja/
- MSDN 2 ライブラリ
http://msdn2.microsoft.com/ja-jp/library/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Google
http://www.google.com/
- MSDN ライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=373930CB-A3D7-4EA5-B421-DD6818DC7C41
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

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

-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
http://www.2chsearch.info/index.php?b=tech
http://makimo.to/cgi-bin/search/search.cgi?q=Win32API&andor=AND&sf=2&view=table&D=tech

6 名前:デフォルトの名無しさん :2007/02/17(土) 23:15:19
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
http://msdn.microsoft.com/library/
http://msdn2.microsoft.com/en-us/library/

おまけ;Windows SDK for Windows Vista RC1の文書。
http://windowssdk.msdn.microsoft.com/en-us/library/

MSDN ライブラリ 2006年8月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=6671F8DA-B0CB-41DE-AD93-798FC71D344D&displaylang=ja


windowssdk.msdn.microsoft.comは、もうmsdn2へ転送されるようになっている。

7 名前:デフォルトの名無しさん :2007/02/17(土) 23:27:21
これも追加しようよ。

Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en

8 名前:デフォルトの名無しさん :2007/02/18(日) 00:44:35
リストボックスにアイテム挿入してるんだけど
一番左のカラムにしか文字列が挿入されないんですが。

ちゃんとiSubItemの値を変えてるのに何でだろうと2時間ぐらい悩んでてもう限界です。
何か心当たりがある事があれば教えてください。

9 名前:デフォルトの名無しさん :2007/02/18(日) 00:50:22
妹「お兄ちゃんって落ち込んだ時どうする?」
俺「んー、別に何も。寝るかな」
妹「ふーん・・」
俺「どうした?何かあったか?」
俺「ううん、ちょっとね」
俺「何だよ水くさいな、言ってみろよ」
俺「う、うんとさ・・・」
俺「おう」
俺「お兄ちゃん、この間一緒に歩いてた人、彼女?」
俺「・・・は?」
俺「前学校の近くで話してたじゃん」
俺「ああ・・・あいつか。なわけないだろ、ただのクラスメートだよ」
俺「ほんと?」
俺「嘘言ってどうすんだよ」
俺「そっか」
俺「てかそんな話はいいんだよ。落ち込んでたんじゃなかったのか?」
俺「ううん、それならいいんだ!えへへ」
俺「おかしな奴だな」
俺「ふふ♪お兄ちゃんに彼女なんてできるわけないよね、よく考えたら。」
俺「こらこら、失礼だぞ」


10 名前:デフォルトの名無しさん :2007/02/18(日) 00:52:47
>>9
ちょ、途中から自作自演w

11 名前:デフォルトの名無しさん :2007/02/18(日) 00:55:25
ここまで点プレ

12 名前:デフォルトの名無しさん :2007/02/18(日) 01:26:12
俺「お・に・い・ちゃん!」
俺「なんだ勝手に部屋に入っちゃだめだろ」
俺「えへへ…」
俺「あたし…知ってるんだよ…おにいちゃんのベットの下に…」
妹「あんた何やってるん?」




13 名前:8 :2007/02/18(日) 01:28:21
item.mask = LVIF_TEXT;
item.pszText = TEXT("aa");
item.iItem = 0;
item.iSubItem = 0;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("bb");
item.iItem = 0;
item.iSubItem = 1;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("cc");
item.iItem = 0;
item.iSubItem = 2;
ListView_InsertItem(List, &item);
item.mask = LVIF_TEXT;
item.pszText = TEXT("dd");
item.iItem = 0;
item.iSubItem = 3;
ListView_InsertItem(List, &item);


これで何で一番最初のカラムにしか文字がはいらないんだsdlgkj;あfwぇk;うぇふぃじこあ;sdlふぁうぇ

14 名前:デフォルトの名無しさん :2007/02/18(日) 01:32:20
わっふるわっふる

15 名前:デフォルトの名無しさん :2007/02/18(日) 01:37:10
>>13
iSubItem=1 以降は ListView_SetItem()

16 名前:デフォルトの名無しさん :2007/02/18(日) 01:46:22
>>13
もしかして、LVCOLUMNってのか?

わっふるわっふる

17 名前:8 :2007/02/18(日) 01:54:09
>>15
ちょっと試してみます。

>>16
LVCOLUMNですが何か特別な問題でもあるんでしょうか?

18 名前:8 :2007/02/18(日) 01:59:46
できました。ありがとうございます

19 名前:デフォルトの名無しさん :2007/02/18(日) 04:32:54
仕事でもなく寝ずにSDK書いてる俺ってもうダメかな?

20 名前:19 :2007/02/18(日) 04:33:49
もうすぐ日が昇ってくるぜ

21 名前:19 :2007/02/18(日) 04:36:18
反応が無いからなのか何故だかわからないが目の前のディスプレイが歪んできた

22 名前:19 :2007/02/18(日) 04:37:08
やっぱ誰もいないべな

23 名前:19 :2007/02/18(日) 04:40:32
もう疲れたし、オ○ニーでもして寝るか

24 名前:19 :2007/02/18(日) 04:45:52
仲間がいたぜwwwwwwww

25 名前:デフォルトの名無しさん :2007/02/18(日) 04:55:28
SDKで書いてるなら、がんがれ
SDKを書いてるなら、もっとがんがれ

26 名前:19 :2007/02/18(日) 04:58:24
息抜きに続き考えたぜwwwwwww

俺「あっ・・・いや、学校での・・・・演劇の・・・練習をちょっと・・。」
妹「はっ?私もあんたと同じ学校だけどうちの学校に演劇部なんてないでしょ?」
俺「いやだかr」
妹「あんたさー。妄想するのは勝手だけど私をネタにするのはやめてくれる?(笑)」
妹「この・・・邪気眼が!!!!!!!!!!」
バタンッ・・・


俺「やれやれ、もう少しで俺の手が暴れだす所だったぜw」



















俺「・・・・・・アッー!!!」


27 名前:19 :2007/02/18(日) 05:01:30
>>26
この人頭大丈夫? もう寝ろって。

28 名前:19 :2007/02/18(日) 05:04:53
すんませんwwwwwwwww
もう寝れない時間まで起きてしまいました
今日仕事で今寝ると絶対遅刻しちゃってそりゃもう大変な事になってしまいます

29 名前:19 :2007/02/18(日) 05:10:44
それじゃ、もう寝るです。おやすみなさい。

30 名前:19 :2007/02/18(日) 06:05:37
おはようおまえら

31 名前:デフォルトの名無しさん :2007/02/18(日) 07:37:38
Win32API始めたばかりです。
下の三つのファイルにわけてメインのウインドウの
メニュー画面で選択したら時計画面が起動するように
したいのですがどうすればよいのでしょうか?


http://sa-wiki.com/upload/src/up0106.txt

32 名前:デフォルトの名無しさん :2007/02/18(日) 08:05:24
>>31日本語でおk

33 名前:19 :2007/02/18(日) 08:30:22
あ、プリキュア見なきゃ

34 名前:19 :2007/02/18(日) 08:33:42
おお、いかんいかん忘れるところだったdd

35 名前:デフォルトの名無しさん :2007/02/18(日) 09:58:00
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて、派遣やってるバカのことw

前の会社を裏切り、結局派遣先からも騙されてる。
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉

自分でも騙され裏切れられることは薄々わかったるから派遣問題の話が出るとウッキー!って逆ギレw


36 名前:19 :2007/02/18(日) 10:09:54
何人いるんだよwwwwwwwwww

37 名前:デフォルトの名無しさん :2007/02/18(日) 14:13:27
CTRL+ALT+DELをプログラムからPCに送る方法ありませんか?
keybd_eventやVNCがやってる方法では期待する動作になりませんでした。
単にタスクマネージャーを出したいわけではなく、割り込みを発生させたいのです。


38 名前:デフォルトの名無しさん :2007/02/18(日) 14:16:37
その質問どこかで見た

39 名前:デフォルトの名無しさん :2007/02/18(日) 14:28:15
>>38
前スレの最期の方の質問。

お  ま  え  ら  カ  チ  ン  と  来  る  な  よ  !

40 名前:31 :2007/02/18(日) 16:04:04
たびたび申し訳ない。
WINXPでWIN32プログラムの質問です。
下のコードでメニュー画面からアナログ時計画面を
出した後、アナログ時計画面を閉じて再度メニュー画面から
アナログ時計画面を選択しても無反応です。
何回でも表示することができるようにしたいのですが
どなたかご教授いただけんだろうか。

http://sa-wiki.com/upload/src/up0107.txt




41 名前:デフォルトの名無しさん :2007/02/18(日) 16:10:19
sageろ低脳

42 名前:デフォルトの名無しさん :2007/02/18(日) 16:18:02
>>40
アナログ時計画面を閉じた時点で、アナログ時計画面が破棄されている。

メニュー選択時に作成するようにするとか、
アナログ時計画面のWM_CLOSEで、ShowWindowで隠すだけにして、DestoroyWindowしない。

43 名前:31 :2007/02/18(日) 16:50:47
>>42
解決しました、どうもありがとう!!!


44 名前:デフォルトの名無しさん :2007/02/18(日) 20:15:10
>37
割り込みを発生させたい、の意味が分からん。

45 名前:デフォルトの名無しさん :2007/02/18(日) 21:26:24
システムがヒィヒィ言ってるときでも速やかに応答させたいんじゃないの

46 名前:デフォルトの名無しさん :2007/02/18(日) 21:29:41
今、彼女をヒィヒィ言わせてますが何か?

47 名前:46 :2007/02/18(日) 21:38:10
昨日、仕事から帰ってきた姉に、オナニー見られて大爆笑された。
その後、部屋に真っ赤になって閉じこもってたら、 姉から携帯にメールがあって、
「あたしも毎日やってるんだから気にするな!ファイト!!」 って書いてあった。



48 名前:デフォルトの名無しさん :2007/02/18(日) 21:49:12
素朴な疑問なんだけどCTRL+ALT+DELとかALT+TABってシステムコールなん?

49 名前:デフォルトの名無しさん :2007/02/18(日) 21:56:59
SAS。winlogonが最優先で奪取するキーの組み合わせ。

50 名前:デフォルトの名無しさん :2007/02/18(日) 22:00:12
仮想空間アドレスがどの物理メモリに割り当てられているか知る術がありますか。

51 名前:デフォルトの名無しさん :2007/02/18(日) 22:05:49
>>47
ワッフルワッフル


52 名前:デフォルトの名無しさん :2007/02/18(日) 22:06:30
>>50
マルチ
http://pc10.2ch.net/test/read.cgi/tech/1063453024/444

53 名前:デフォルトの名無しさん :2007/02/18(日) 22:16:46
Win32APIのレベルでは、「知ってどうするの?」だなー。

54 名前:デフォルトの名無しさん :2007/02/18(日) 22:25:44
>>49
サンクス
つまりwinlogonにTerminateProcessするとunknown hard errorになる代わりに
CTRL+ALT+DELを横取りされなくなるんですね

55 名前:デフォルトの名無しさん :2007/02/18(日) 22:54:36
確かに横取りは出来なくなると思うが、それはOSが落ちる事を意味するのでは?
一度試してみれ。


56 名前:デフォルトの名無しさん :2007/02/18(日) 22:58:06
マジレスされちゃったので答えとくと当然青画面になるよ

57 名前:デフォルトの名無しさん :2007/02/18(日) 23:38:08
BSODってドライバ以外から作り出せるのかね

58 名前:デフォルトの名無しさん :2007/02/19(月) 00:13:44

GetFontUnicodeRanges( dc , NULL )が返す値について教えて下さい

cRangesの値が4でWCRANGEの0〜3が下記のような値が得られました。

ranges[0].wcLow = 0x0000
ranges[0].cGlyphs = 0x0081
ranges[1].wcLow = 0xf8f0
ranges[1].cGlyphs = 0x0004
ranges[2].wcLow = 0xff61
ranges[2].cGlyphs = 0x003f
ranges[3].wcLow = 0xffff
ranges[3].cGlyphs = 0x0001

平仮名の'あ'(0x3042)は、得られたWCRANGEのいづれにも
含まれないのでTextOutでの表示はできないと思っていた
のですが、問題なく'あ'が表示できます。

現在選択中フォントのUNICODE文字有無は、GetFontUnicodeRanges()では
できないのでしょうか?

環境は、Windows2000+VC6+SP6です。

59 名前:デフォルトの名無しさん :2007/02/19(月) 00:27:23
自分でペイントで作ったマウスカーソルを使いたいのですが
調べてもよく方法がわかりませんでした
よろしければ教えてください

60 名前:19 :2007/02/19(月) 00:29:33
>>59
まずはリソースエディタについて調べろ。

61 名前:デフォルトの名無しさん :2007/02/19(月) 02:02:42
>58
フォントリンクがあるからねぇ。

62 名前:567 :2007/02/19(月) 06:28:56
おまいら久しぶり

63 名前:デフォルトの名無しさん :2007/02/19(月) 09:17:51
>61

そうなると任意のunicode文字が表示可能かを判断する方法は
フォントリンクまでたどらないと判別できないという事ですね?

なんか単純な方法は、ないかなぁ・・・


64 名前:デフォルトの名無しさん :2007/02/19(月) 09:40:49
DrawText で DT_CALCRECT 矩形サイズなり LastError なりで判定できないもんかな?

65 名前:デフォルトの名無しさん :2007/02/19(月) 12:40:27
>>63
要点が見えないんだが・・・
もう少し詳しく説明してくれね?

何をしたいのか、命題はいかに?

66 名前:デフォルトの名無しさん :2007/02/19(月) 12:55:05
>>65

やりたい事は、「表示しようとしているunicode文字が
現在のフォントで表示できるか判断したい」です。

表示しようとしているunicode文字が現在フォントに
グリフが無ければ代替文字(×マークとか?記号とか)にして
存在すればそのまま表示したいのです。

67 名前:デフォルトの名無しさん :2007/02/19(月) 13:45:00
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?

68 名前:デフォルトの名無しさん :2007/02/19(月) 14:41:21
ドライブレターを割り当てていないパーティションがあって、
そのパーティションにアクセスしたい(そのパーティションの情報を取得したい)
どうすればできますか?

無理なら無理矢理空いているドライブレターを割り当ててそこから情報を取得
すればいいと思うけど、割り当てをプログラム上からできるのかしら・・・?


69 名前:デフォルトの名無しさん :2007/02/19(月) 14:58:57
FindFirstVolume、FindNextVolume でみつかる?

70 名前:デフォルトの名無しさん :2007/02/19(月) 16:04:49
>>69
ボリューム名は取得できました。
そこからはどうすればいいでしょうか?
QueryDosDeviceでデバイスを取得して、そのデバイスをCreateFileで開いてハンドルを
取得してDeviceIoControlで情報取得しょうか?


71 名前:デフォルトの名無しさん :2007/02/19(月) 16:35:47
TransparentBltやAlphaBlendはWindowsMeでは機能しないんですか?

72 名前:デフォルトの名無しさん :2007/02/19(月) 17:09:36
たしかにMSDNライブラリを見るとWindows 2000からと書いてあるね。

73 名前:デフォルトの名無しさん :2007/02/19(月) 18:17:27
Windows98/SEでTransparentBltを使うとすごい勢いでGDIハンドルが増加していくんだよな
Meでは使い物になるんだろうか

74 名前:デフォルトの名無しさん :2007/02/19(月) 18:33:25
>>70
それでいけると思う。
末尾の \ は消さないとCreateFile()で失敗するかも。
あとOSによって差が大きかった気がする。

75 名前:デフォルトの名無しさん :2007/02/19(月) 19:36:37
>>72
英語版を読むと、98/MEもいけそうだよね

76 名前:デフォルトの名無しさん :2007/02/19(月) 20:24:19
コードが配置されてる先頭のアドレスが知りたいのですがうまくできせん

CONTEXT c = {0};
c.ContextFlags = CONTEXT_CONTROL;
GetThreadContext(hThread, &c);

LDT_ENTRY ldt = {0};
GetThreadSelectorEntry(hThread, c.SegCs, &ldt);

77 名前:デフォルトの名無しさん :2007/02/19(月) 20:39:29
そのアドレス、って何アドレスだ? 物理か?セグメント相対か?

78 名前:デフォルトの名無しさん :2007/02/19(月) 21:13:26
質問です。
親ウインドウから子ウインドウを起動させて、子ウインドウを終了させると
親ウインドウがアクティブウインドウになってくれず他のウインドウの
下に隠れてしまいます。親ウインドウがアクティブになる方法を
教えてちょんまげ。

79 名前:デフォルトの名無しさん :2007/02/19(月) 21:19:27
ちょんまげにキレた。子ウィンドウ終了時にShowWindowじゃダメなのか。


80 名前:デフォルトの名無しさん :2007/02/19(月) 21:49:29
>>76
PEヘッダに書いてあるベースアドレス+セクションの仮想アドレスで求まる。
コードサイズも同じ場所の仮想サイズから特定できる。
exeが読めない状況でもPEヘッダ自身はベースアドレスにロードされてる。
ほとんどの場合は上記の方法で判るが、意地の悪いプログラムだと
デバッガを化かすコードが入ってたりするので、実際のコードの開始
アドレスはプログラム毎に任意と考えるべき。
信用して良いのはGetThreadContextで得たEip以降のコード。

81 名前:デフォルトの名無しさん :2007/02/19(月) 22:00:13
ウィンドウを終了、tぽいう表現に違和感を感じる今日この頃。

82 名前:デフォルトの名無しさん :2007/02/19(月) 22:01:03
書き忘れてたけどベースアドレスはGetModuleHandleで判るからね。

83 名前:デフォルトの名無しさん :2007/02/19(月) 22:19:06
>>78
Owned Windowは、WS_POPUPにすべし

84 名前:デフォルトの名無しさん :2007/02/19(月) 22:37:14
“普通”の、例えばMFCを中心に使っている初級Windowsプログラマが見て
「そこまでトリッキーなことはしていなさそう」と感じる程度の
アプリケーションを開発する上で、
>>80みたいな知識が必要になることってどれくらいあるんですか?
1.他プロセスにアタッチするようなアプリケーションはかなり特殊な
  存在であって、「普通の」アプリ開発者とは接点がない
2.普段は使わない知識だが、時々必要になることがあるので
  こうして質問する人がやって来る
3.実はWindowsでプログラムを書く上では割と基本的な知識

85 名前:デフォルトの名無しさん :2007/02/19(月) 22:39:44
他のアプリケーションに介入して弄り回したいときとかは、場合によっては
必要になることもあるかもしれない。詳しく知っててモノ書いてる連中は
だいたいMVP持ってたりするな。

86 名前:デフォルトの名無しさん :2007/02/19(月) 22:41:35
俺は1だと思うが、2だと言う意見の人がそれなりにいてもおかしくないとは思う。
それに実際必要かどうかはともかく80くらいは豆知識として知っていておいて損はない。

87 名前:デフォルトの名無しさん :2007/02/19(月) 22:49:21
勘違いでなければ多分こんなの?

DWORD dwDummy;
IMAGE_DOS_HEADER dos;
IMAGE_NT_HEADERS nt;
if ( ::ReadFile(hFile, &dos, sizeof(IMAGE_DOS_HEADER), &dwDummy, NULL) // DOSセクション分読む
  && dos.e_magic == IMAGE_DOS_SIGNATURE  // DOSですか?
  && ::SetFilePointer(hFile, dos.e_lfanew, NULL, FILE_BEGIN)          // dos.e_lfanew==エントリーポイント
  && ::ReadFile(hFile, &nt, sizeof(IMAGE_NT_HEADERS), &dwDummy, NULL) // PEセクション分読む
  && nt.Signature == IMAGE_NT_SIGNATURE )      // PEですか?
{
  entryPoint = nt.OptionalHeader.ImageBase + nt.OptionalHeader.AddressOfEntryPoint;
}

俺はそれよりGetThreadSelectorEntryの使い道が全く判らない

88 名前:デフォルトの名無しさん :2007/02/19(月) 22:49:34
1であり2である

89 名前:デフォルトの名無しさん :2007/02/19(月) 22:50:23
>>84
2かな。他プロセスに干渉するアプリは確かに特殊な部類ではあるけど
必要に迫られて使うことって結構あると思うし。
WindowsプログラミングするならAdvanced Windowsは持っといて損は無いと思うよ。
全部理解するのに余裕で2ヶ月とかかかるけど。学生ならそのうちにやっとくのも良し。


90 名前:デフォルトの名無しさん :2007/02/19(月) 22:52:39
>>85-86
他プロセスへのAPIフックぐらいなら出来るのですが、
それがどうしても必要になるといった状況にはなかなか出会ったことがなくて、
しかしこのスレにはかなりの頻度で他プロセスが絡む質問が出てくるので
疑問に思って質問させていただきました。
何にせよ、知っていて損はしないので、ぼちぼち覚えていこうと思います。
ありがとうございました。

91 名前:デフォルトの名無しさん :2007/02/19(月) 22:53:37
>>75
ただしWin98のAlphaBlendはバグ持ちなので実質的に使えない。
(WinMeでは修正されてる)
>>87
WOW32とかOS/2サブシステムとかで必要だったものをついでにWin32にも
開放してみたという感じかと

92 名前:デフォルトの名無しさん :2007/02/19(月) 22:54:05
自分以外の指定したウインドウが更新されたかどうかと、その更新された
領域を知りたいと思っています。SetWindowsHookEx()を使ってWM_PAINTを
フックしているのですが、監視対象の子ウインドウが更新されたかどうか
まではわからないようです。この場合、子ウインドウも全てフックして
やるしかないのでしょうか?

93 名前:デフォルトの名無しさん :2007/02/19(月) 22:55:03
つーかAlphaBlendなんて自前でやるもんだろ
フルスクラッチ(ryでも買って読めば誰でもできるし

94 名前:デフォルトの名無しさん :2007/02/19(月) 22:57:41
>>89
"Advanced Windows"、興味は前々から持っていたのですが
いかんせん自腹で買うのには少々高くて二の足を踏んでいました。
これを機に検討してみます。。

95 名前:デフォルトの名無しさん :2007/02/19(月) 22:59:36
昔VIPのプログラムやろうぜスレにSSE2使った
アルファブレンドのソースがあってたまげたの思い出した。

96 名前:デフォルトの名無しさん :2007/02/19(月) 23:07:24
>>93
kwsk

97 名前:デフォルトの名無しさん :2007/02/19(月) 23:12:39
>>91
そういう理屈なのかー
なんかPEB拾うとかいう用途はあるみたいだけどNtQueryでできるし

98 名前:デフォルトの名無しさん :2007/02/20(火) 00:24:30
俺「なー姉貴。ReadFileEx関数の、最後の引数なんだよ?」
姉「あぁそれね・・・完了ルーチンのポインタなんよ」
俺「へ?」
姉「読込処理が終わった時に呼ばれる、完了ルーチンのポ・・・・ぽ」
(急に小声)
俺「?」
姉「終わったときに呼ばれる関数のポインタ!!。変なこと聞かないデ!!」
(なぜかプリプリ怒ってる)

99 名前:デフォルトの名無しさん :2007/02/20(火) 00:37:06
やあ義弟

100 名前:デフォルトの名無しさん :2007/02/20(火) 00:43:05
くだらねーwww

101 名前:デフォルトの名無しさん :2007/02/20(火) 00:52:17
チンポイン

102 名前:デフォルトの名無しさん :2007/02/20(火) 01:33:00
日本にWin32について語れる姉弟が何組いるのか

103 名前:デフォルトの名無しさん :2007/02/20(火) 04:02:11
わっふるわっふる

104 名前:デフォルトの名無しさん :2007/02/20(火) 04:05:01
アルファブレンドって、何かうまそうじゃね?
秋葉でカフェオレとかをアルファブレンドコーヒーに名前変えたら売れね?

105 名前:デフォルトの名無しさん :2007/02/20(火) 04:55:37
ここにアルファー

106 名前:78 :2007/02/20(火) 06:43:35
>>79 >>83
レスありがとお。試してみます!!

107 名前:デフォルトの名無しさん :2007/02/20(火) 07:26:33
>>96
フルスクラッチによるグラフィックスプログラミング入門
秀和システム発行

108 名前:デフォルトの名無しさん :2007/02/20(火) 07:35:39
>>107
thx

109 名前:デフォルトの名無しさん :2007/02/20(火) 09:23:18
3つのSTATICの子ウインドウを作ってサブクラス化し、ひとつのプロシージャで
処理をしたいと思っています。
どのウインドから飛んできたのかを知りたいのですが、どのパラメータを見たら
それがわかるのでしょうか?

質問の仕方がわかりづらければ申し訳ありません。
解ればお教えください。

110 名前:デフォルトの名無しさん :2007/02/20(火) 09:39:07
HWNDが違うんじゃないの?

111 名前:デフォルトの名無しさん :2007/02/20(火) 09:51:04
HWNDで判断するしかないのでしょうか?

CreateWindow時の子ウィンドウIDを取得する方法がないでしょうか?
という質問の仕方に気づかず余計な回答をさせてしまって申し訳ありません。

今もGoogleで調べているのですが、ちょっと難しくてなかなか回答に
たどり着くことができていません。

112 名前:デフォルトの名無しさん :2007/02/20(火) 10:01:04
あなたの日本語がわかりません。

113 名前:デフォルトの名無しさん :2007/02/20(火) 10:05:09
>>111
質問読まず書き子
メニューのリソースIDで判別できるんじゃね?

114 名前:デフォルトの名無しさん :2007/02/20(火) 10:12:22
>>111
GetWindowLong(hWnd, GWL_ID)

115 名前:デフォルトの名無しさん :2007/02/20(火) 10:13:31
>>113
質問の仕方がわるくて本当に申し訳ありません。
それです。
それを取得する方法を探しています。
勉強をはじめたばかりで回答になかなかたどり着けなくて・・・。

116 名前:デフォルトの名無しさん :2007/02/20(火) 10:15:36
>>111
いまいち、何を言いたいのか見えてこないが

たぶん、GetWindowLongでGWL_ID

117 名前:デフォルトの名無しさん :2007/02/20(火) 10:16:38
>>114
ありがとうございました。

118 名前:デフォルトの名無しさん :2007/02/20(火) 10:22:39
>>116
サンプルを作って試してみました。
その方法を探していました。
回答ありがとうございました。

119 名前:デフォルトの名無しさん :2007/02/20(火) 12:37:31
ウインドウの上からマウスが外れたときに検地するにはどうしたら良いでしょうか?

120 名前:デフォルトの名無しさん :2007/02/20(火) 12:40:40
>>119
日本語が不自由だとなにかと不便だよね。
日本での生活は辛いかも知れないけど、母国のことを思い出してがんばってね。

121 名前:デフォルトの名無しさん :2007/02/20(火) 12:41:23
>>119
>検地
歴史書を紐解くといいと思います。

122 名前:デフォルトの名無しさん :2007/02/20(火) 12:58:46
TrackMouseEventが使いにくいからといってフックしたり常時監視したりするアホ

123 名前:デフォルトの名無しさん :2007/02/20(火) 13:34:22
ウィンドウに乗っているコントロールに対して
透過でフェードアウトを実装する事は可能でしょうか?

AnimateWindow
SetLayeredWindowAttributes

あたりで可能でしょうか?
見た感じでは、Window限定のような気がするのですが・・・。

124 名前:デフォルトの名無しさん :2007/02/20(火) 16:43:37
GDIで透過色付きで且つ半透明なものを描画しようと思うんですが、
ワーキングメモリとしてのビットマップは静的にある程度の大きさを持つものを予め用意しておくか、
描画用の、AlphaBlend等のAPIをラップした関数を呼び出すたびにその関数のスコープ内部で済ませるか迷っているんですが、
前者の場合は始終無視できない程度のメモリが占有される事が、
後者の場合は関数呼び出しのたびのオーバーヘッドの事が心配で一向に開発が進みません。
普通はどうするんでしょうか。

125 名前:デフォルトの名無しさん :2007/02/20(火) 16:56:01
まず以下のことを明確にせよ。
無視できない程度のメモリは何メガなのか?
無視できる程度のメモリは何メガなのか?


126 名前:デフォルトの名無しさん :2007/02/20(火) 17:05:02
>>124
普通はそれぞれどの程度の問題になるのか数値化して検討する。

いや、寧ろこんなところで聞かない。

127 名前:デフォルトの名無しさん :2007/02/20(火) 17:05:36
静的に確保するとすれば、512KB以上は無視できない。
関数のオーバーヘッドは、1KB以上であれば無視できない。

128 名前:デフォルトの名無しさん :2007/02/20(火) 17:14:47
ばーか

129 名前:デフォルトの名無しさん :2007/02/20(火) 17:28:33
そろそろカチンときそうです。

130 名前:デフォルトの名無しさん :2007/02/20(火) 17:34:52
>>124
その描画関数がどんなタイミングでどの程度呼ばれることになるのか?
とかも考えましょう。アプリケーション自体の寿命に対して局所的かつ連続して呼ばれる
なら初期化関数、描画関数、終了関数に分けて以下のようにするとか。
初期化関数()
 描画関数()
 ...
 描画関数()
終了関数()

131 名前:デフォルトの名無しさん :2007/02/20(火) 17:45:38
親ウインドウに子ウインドウは貼り付けて、子ウインドウだけを
半透明にさせることって出来ますか?
ウインドウ全体を半透明にするのは簡単に出来たのですが、
子ウインドウだけってのは無理でした。
自分のソースが間違っているのか、そもそも無理なのか
解らないので知っていたら教えてください。

132 名前:デフォルトの名無しさん :2007/02/20(火) 17:53:13
みんな!
あたしの為の、カチンとならないで!!

133 名前:デフォルトの名無しさん :2007/02/20(火) 18:14:10
VistaでCSIDL_PROFILE の仮想フォルダ のCSIDLってないですか?

134 名前:デフォルトの名無しさん :2007/02/20(火) 18:23:59
Win32APIの32とはなにですか?しりたいのです。

135 名前:デフォルトの名無しさん :2007/02/20(火) 18:26:47
16の倍で、64のちょうど半分です

136 名前:デフォルトの名無しさん :2007/02/20(火) 18:29:26
丁度指が足りなくなる数

137 名前:デフォルトの名無しさん :2007/02/20(火) 18:31:48
ゲイツ「えと、なんとなく…」

138 名前:デフォルトの名無しさん :2007/02/20(火) 18:33:30
√1024

美しいと思わないかね?

139 名前:デフォルトの名無しさん :2007/02/20(火) 18:36:01
Win32は32ビットCPUを対象として開発されたものだから32ビットの32。
当然Win16もあった。

x64やIteniumのはWin64かと思いきゃ、
Win32 for 64-bit Windowsという呼称が一部で見受けられる。
(無論WOW64のことではない)

140 名前:デフォルトの名無しさん :2007/02/20(火) 18:44:42
ゲイツ「そうだったんだー、へー」

141 名前:デフォルトの名無しさん :2007/02/20(火) 18:51:18
質問箱って書いてありますが、ここ、箱じゃないですよね。
なのに何で箱なんですか?
タイトル名からうそをついているようではとてもじゃないけどうその答えを
返されそうで質問できません。

142 名前:デフォルトの名無しさん :2007/02/20(火) 18:54:26
日本語でおk

143 名前:デフォルトの名無しさん :2007/02/20(火) 18:54:46
おまえさんは箱の定義を勘違いしてるんだろう。

144 名前:デフォルトの名無しさん :2007/02/20(火) 18:56:50
ネタにマジレスってカッコイイよね

145 名前:デフォルトの名無しさん :2007/02/20(火) 18:57:50
pc10 (banana313) も↓こんな感じでしょ。 箱詰めぎっちりだわさ
ttp://www.maido3.com/server/phototour/6.html

146 名前:デフォルトの名無しさん :2007/02/20(火) 19:31:48
質問できないといいつつ、質問してるのはお約束だな。

147 名前:デフォルトの名無しさん :2007/02/20(火) 20:11:50
>>141
君はこのスレは箱ではないと思っているから、ここは箱ではないんだ。
ここが箱でない以上それは尤もな考え方であって、つまりここは箱ではないんだ。
しかし、よくよく考え直してみてくれ。ここが箱であったっていいじゃないか。
そういうわけで、仮にこのスレが箱だとしてみると、君の考え方は間違っていることになる。
それは即ちここが箱であるということに他ならず、仮定は正しかったということになるんだ。

148 名前:78 :2007/02/20(火) 20:31:23
何度もすんまそん。
子ウインドウのテキストエディタを終了させた後、親ウインドウが
アクティブにならず他のウインドウの下に隠れてしまって悩んでいます。
親ウインドウアクティブにて戻るにはどうすればよいのでしょうか。

http://sa-wiki.com/upload/src/up0110.txt

149 名前:133 :2007/02/20(火) 20:59:20
自己解決しました。
FOLDERID_UsersFilesですね。

しかし糞スレだな

150 名前:デフォルトの名無しさん :2007/02/20(火) 21:05:37
はこ 【箱/▼函/▼筥/▼匣/▼筐】

(5)厠(かわや)に置いて大便を受けるもの。しのはこ。また、大便。
「―すべからず/宇治拾遺 5」

151 名前:デフォルトの名無しさん :2007/02/20(火) 21:59:57
>>141
そうか

152 名前:デフォルトの名無しさん :2007/02/20(火) 22:19:51
キャスト以外の方法で、
整数を受け取って席轍に変換されたvoid*を返すようなAPIってありますか?

153 名前:デフォルトの名無しさん :2007/02/20(火) 22:20:54
席轍→適切のミスです 

154 名前:デフォルトの名無しさん :2007/02/20(火) 22:22:39
意味不明

155 名前:デフォルトの名無しさん :2007/02/20(火) 22:24:46
そもそも整数はデータ表現の問題で、キャストはコンパイラと言語仕様の問題、
それがAPIと何の関係があるんだ?

156 名前:19 :2007/02/20(火) 22:25:35
>>152
つ union

157 名前:デフォルトの名無しさん :2007/02/20(火) 22:29:07
うん、つっこまれて気づいた ごめんなさい

158 名前:デフォルトの名無しさん :2007/02/20(火) 22:43:05
>>152
つ TlsGetValue

159 名前:デフォルトの名無しさん :2007/02/20(火) 23:52:34
>>121
日本語が不自由な奴に秀吉見せたらファビョるぞ

160 名前:デフォルトの名無しさん :2007/02/21(水) 03:41:03
サウンド機能についてです。
色々なメディアプレイヤーを使っていると
勝手に音量の位置が変わってしまいます。
これを固定とかしようと思うのですが
どうすればいいですか?

既存ソフトだと細かい事ができないので
自分で何とかしたい訳ですが・・・


161 名前:デフォルトの名無しさん :2007/02/21(水) 03:53:33
>>160
mixerOpen

162 名前:デフォルトの名無しさん :2007/02/21(水) 07:41:42
ミキサー勝手に弄るアプリは死んで良いと思う今日この頃。

163 名前:デフォルトの名無しさん :2007/02/21(水) 08:14:42
>>162
RealOneとかどうにかしてよw

164 名前:デフォルトの名無しさん :2007/02/21(水) 08:40:10
>>160
VISTAに移行しるw

165 名前:デフォルトの名無しさん :2007/02/21(水) 13:16:58
サブクラス化したSTATICでTrackMouseEventでウインドウからマウスが外れたことを
知りたいと思うのですが、プロシージャのどの部分でTrackMouseEventを
設定すればよいのか、またメッセージのWM_MOUSELEAVEをどこで受け取ればよいのか
が解りません。

サブクラス化が良く理解できていないのは解りますが、理解の助けになる、
もしくはマウスが外れたことを知る方法の参考になるサイトなどがありましたら
教えてください。

166 名前:デフォルトの名無しさん :2007/02/21(水) 13:44:41
サブクラス化
http://wisdom.sakura.ne.jp/system/winapi/win32/win64.html

ここを参考にSTATICのサブクラス化を学んでいます。
サブクラス化したプロシージャでマウスの左ボタンを押したことを
GetKeyState(VK_LBUTTON)にて検知していますが、switch (msg)で
case WM_LBUTTONDOWN:を使って検知することはできませんでした。
WM_LBUTTONDOWNなどのメッセージを受け取るにはどうするのでしょうか?

WM_MOUSEMOVEなどのメッセージを受け取りたいと考えていますが、
何から理解していけば良いのか途方にくれています。
ご助言をお願いします。

167 名前:デフォルトの名無しさん :2007/02/21(水) 19:21:36
たぶんSTATICでメッセージ受けるのはサブクラス化以前で説明済みなんだろうな

168 名前:デフォルトの名無しさん :2007/02/21(水) 20:02:19
>>76とか>>80とかを見て実験してみようと思って
IMAGE_DOS_HEADER dos = {0};
ReadProcessMemory(proc, (LPCVOID)base, &dos, sizeof(dos), &bytes);
if(sizeof(dos) != bytes || dos.e_magic != IMAGE_DOS_SIGNATURE)
 return false;

bytes = 0;
IMAGE_NT_HEADERS pe = {0};
ReadProcessMemory(proc, (LPCVOID)(base + dos.e_lfanew), &pe, sizeof(pe), &bytes);
if(sizeof(pe) != bytes || pe.Signature != IMAGE_NT_SIGNATURE)
 return false;

ULONG64 start = pe.OptionalHeader.ImageBase+pe.OptionalHeader.BaseOfCode;
ULONG64 end = start+pe.OptionalHeader.SizeOfCode;
std::cout << (void*)start << " -> " << (void*)end << std::endl;
とコードを書いて実行したら0x00401000 -> 0x0048e000と表示されたのだが0x0048e000以降も関数が配置されてるorz. なにか勘違いしちゃってますか?
ちなみにターゲットはVC7.1で作った、いたって標準的なHelloWorldです

169 名前:デフォルトの名無しさん :2007/02/21(水) 21:22:09
>>168
アドレスの計算の仕方はそれで合ってる。
ただしそのサイズはアラインメントされたサイズなので、
仮想メモリにマップ後の実際のコードサイズの値は、
セクション毎のVirtualSizeを見ないとわからんよ。
普通のコードセクション(.text)なら
SizeOfCode == SizeOfRawData >= VirtualSizeだから、
大よそが判れば良いなら>>168の方法でもいいけど、
SizeOfRawData < VirtualSizeもありうる。

>以降も関数が配置されてる
これはどういう方法で確認してる?
実際の所コンパイルオプション見ないとわからんけど、
インポートアドレステーブルだったり他のセクションが
混ざってるとかじゃないかね。
OptionalHeaderだけじゃなくてその後のセクションの
情報も見て位置を把握しないと判りづらいと思うよ。

170 名前:168 :2007/02/21(水) 22:29:37
>>169 ありがとうございます
IMAGE_SECTION_HEADERから得られた情報でいけそうです

IMAGE_SECTION_HEADER::Nameによると名前にtextが含まれるセクションが2つありました (.textbssと.text
startに.textbssのIMAGE_SECTION_HEADER::VirtualAddress+base
endに.textのIMAGE_SECTION_HEADER::VirtualAddress+IMAGE_SECTION_HEADER::.Misc.VirtualSize+base
としたところ列挙された関数をすべて含むことが確認できました
関数列挙にはSymNextを使いました

しかしSizeOfCodeは信用ならんとして関数が配置されてるアドレス範囲をしらべるには
IMAGE_SECTION_HEADER::Nameに"text"が含まれるかどうかみたいな判定をしてごにょごにょみたいな方法しかないのかな。。。

171 名前:デフォルトの名無しさん :2007/02/21(水) 22:33:02
printf風にデバッガに出力するコードを考えたんだが
これだと小数を出力できない。。。
小数もOKにしたいのだけどどうしたらいいですか?

void DebugPrintf(LPSTR lpszFormat, ...)
{
LPSTR *lplpParam;
static char szTextBuff[128];
lplpParam = ((LPSTR *)&lpszFormat) + 1;
wvsprintf(szTextBuff, lpszFormat, (LPSTR)lplpParam);

OutputDebugString(szTextBuff);
}

172 名前:デフォルトの名無しさん :2007/02/21(水) 22:36:07
APIのは対応してないと明示されてるので、諦めてCRTのvswprintfを使う。

173 名前:デフォルトの名無しさん :2007/02/21(水) 22:37:20
>>171
っ stdarg.h
っ va_start
っ va_end

174 名前:デフォルトの名無しさん :2007/02/21(水) 22:37:39
すでにAPI関係ないな

175 名前:デフォルトの名無しさん :2007/02/22(木) 01:24:11
>>172

vsprintfにするだけでよかったのか
アリガトン

switch文で
%fの場合、
%sの場合、
とかめんどいことして対処してたorz

176 名前:デフォルトの名無しさん :2007/02/22(木) 11:45:38
ウィンドウをTOPMOSTに変更し、サイズをデスクトップと同じにするとフルスクリーンの表示ができます
ですがフルスクリーンに切り替わった時、タスクバーの表示が消えるのが一拍遅れます

実際メディアプレイヤーなんかだとフルスクリーンは瞬時に切り替わりますし、ちょっと気になります
APIの呼び出し順とかに問題があるんでしょうか
切替は同一関数内で以下のような呼び出しで行っています

CRect rect;
GetDesktopWindow()->GetWindowRect(rect);
SetWindowLong(m_hWnd, GWL_STYLE, WS_POPUP|WS_VISIBLE);
SetWindowPos(&CWnd::wndTop, 0, 0, rect.Width(), rect.Height(), SWP_SHOWWINDOW);

ちなみにソースはMFCです


177 名前:デフォルトの名無しさん :2007/02/22(木) 12:45:27
メディアプレイヤーのフルスクリーンは DirectX のフルスクリーンモードではないかと…

178 名前:デフォルトの名無しさん :2007/02/22(木) 12:52:38
DirectXの切替だと結構もっさりするんですよね
デスクトップの解像度と同じで切り替えたとしてももっさり
調べてるわけじゃないけどメディアは瞬時に切り替えてるからDirectXじゃないんじゃないかな

179 名前:デフォルトの名無しさん :2007/02/22(木) 13:13:25
いや、Media Playerは少なくともDirectShowを使っている。

180 名前:デフォルトの名無しさん :2007/02/22(木) 13:30:01
論点が滅茶苦茶だな。

ハードウエアの解像度変更と、ソフトウエアでのスケーリングを混同するな。

181 名前:デフォルトの名無しさん :2007/02/22(木) 13:55:18
>>178は「モニターの解像度切り替えと似てもっさりしてる」と言ってるだけで
同列に扱ってるわけじゃないと思うんだけど、違うのかな

182 名前:デフォルトの名無しさん :2007/02/22(木) 14:14:35
>>181
デスクトップの解像度でD3Dフルスクリ-ン と
コンテンツの解像度でD3Dフルスクリ-ン とでは微妙に違う。

183 名前:デフォルトの名無しさん :2007/02/22(木) 14:30:13
>>179
あぁすまん、DirectShowは使ってると思う。
>>178はDirectGraphicsのCreateDevice()のフルスクリーン切替は使ってないんじゃない?
と言いたかった

>>180
誰あてのレス?

>>181
そう、その通り

>>182
IDirect3DDevice9::CreateDevice()を使った切替ではデスクトップ/コンテンツの解像度に
よる違いって殆ど感じられなかったけど。(両方もっさり)


184 名前:182 :2007/02/22(木) 14:36:50
>>183
そっか。
profile 取って、どこが遅いか見たほうが良いかもしれないし、
>>176 コードをベースに悪あがきするのも良い

185 名前:178 :2007/02/22(木) 14:42:01
ちょっと勘違い、再確認したら

IDirect3DDevice9::CreateDevice()でのフルスクリーン切り替えはもっさりしてない
というか一瞬ブラックアウトして、描画が復帰するまで一呼吸いるだけ
>>176 で単にTOPMOSTにするだけならブラックアウトしないってだけだった

メディアプレイヤーもフルスクリーン切替時に背景ブラックだしDirectGraphicsでフルにしてんのかな



186 名前:デフォルトの名無しさん :2007/02/22(木) 16:09:02
画面いっぱいに窓広げているだけだろ。アフォか?

187 名前:デフォルトの名無しさん :2007/02/22(木) 16:52:55
なら >>176 に回答してみろ、できなきゃオマエが真性アフォ

188 名前:デフォルトの名無しさん :2007/02/22(木) 17:20:05
馬鹿バッカー

189 名前:デフォルトの名無しさん :2007/02/22(木) 18:18:32
SetWindowPosの使い方が間違っている。HWND_TOPMOSTを指定しろ。というか全画面はこれが常識。
APIリファレンスも見ない馬鹿しかいないのか?

190 名前:デフォルトの名無しさん :2007/02/22(木) 18:34:32
>>177が無知なくせに頓珍漢なことを言うから変な流れになるんだよ。

191 名前:デフォルトの名無しさん :2007/02/22(木) 18:36:19
僕ハッカー

192 名前:176 :2007/02/22(木) 18:37:49
>>189
うぉぅっ、CWnd::wndTopMostを指定してるもんだとばかり思ってた
これは恥かしい、ありがとう解決した

挙動も意図したものになったよ

193 名前:デフォルトの名無しさん :2007/02/22(木) 18:40:51
ウィンドウが全画面になった後、タスクバーがあった場所に
自分の描画をするのがもっさりしてるんじゃね?

194 名前:デフォルトの名無しさん :2007/02/22(木) 19:20:10
インターネット回線や電話回線が
使える状態かどうかわかるAPIを教えてください

195 名前:67 :2007/02/22(木) 19:40:43
#シカトされたので再送
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?

196 名前:デフォルトの名無しさん :2007/02/22(木) 19:43:55
質問です。
なぜ、構造体に、それ自身のサイズを代入しないといけないのですか?
xxxinst.dwSize = sizeof(xxx);
みたいにするなら、必要ないと思うのですが…

197 名前:デフォルトの名無しさん :2007/02/22(木) 19:46:23
>>196
過去との互換性のため。
例えば、Rev1のときはサイズが100バイトだったのが、Rev2では120バイトになったりしたら、サイズがあれば便利。

198 名前:デフォルトの名無しさん :2007/02/22(木) 19:46:56
>>196

>>197さんが言うように、
それで、構造体のバージョンを判別することもある。
DEVMODE,OSVERSIONINFOとかね

199 名前:デフォルトの名無しさん :2007/02/22(木) 19:48:57
>>194
InternetAttemptConnect関数かな?

200 名前:デフォルトの名無しさん :2007/02/22(木) 19:59:35
>>197
>>198
なるほど。んじゃあ、これってプログラマのためにある変数なんですか。
OSがメモリ確保するときに必要なわけじゃないんですね。

201 名前:デフォルトの名無しさん :2007/02/22(木) 20:02:24
>>195
ドキュメント嫁

202 名前:デフォルトの名無しさん :2007/02/22(木) 20:02:41
>>200
OS側で、どこまでのメンバをコピーすべきかの有効判別の意味が大きいかもにゃん。

203 名前:デフォルトの名無しさん :2007/02/22(木) 20:22:12
>>196
例えば、OS側にお菓子レコードがあって、以下のデータがある場合・・・

|せ き は ら さ ゆ き 00|00 9E|00 50|00 3C|00 52|

SDK側のヘッダファイルは以下のように定義すれば楽珍なわけで。

typedef struct t_prf{
 WORD cSize;
 char Name[];
#if(WINVER >= 0x0400)
 WORD Height;
#if (WINVER >= 0x0500) || (_WIN32_WINNT >= 0x0400)
 WORD Bust;
 WORD Waist;
 WORD Hip;
#endif
#endif
}PRF;



204 名前:デフォルトの名無しさん :2007/02/22(木) 20:24:11
>>203

ちょwwww
志村!
志村!

char Name[8];

205 名前:67 :2007/02/22(木) 20:30:26
>>201
どこらへんを読んだらいいでしょうか。

206 名前:デフォルトの名無しさん :2007/02/22(木) 21:07:13
>>205
まず、どこがどう分からないかを具体的に記しなさい。

207 名前:デフォルトの名無しさん :2007/02/22(木) 21:12:21
サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。

208 名前:デフォルトの名無しさん :2007/02/22(木) 21:35:07
サービス関係のAPIを一通り目を通せば、目的の物が見つかるはず。
読んでないから、わからないんだろ。

あと今でも使われている古きテクニックとしてはマシン語生成ってのもある。

209 名前:デフォルトの名無しさん :2007/02/22(木) 21:35:55
svchost.exeみたいに、同一プロセスに複数のサービスがあるのならまだしも。

210 名前:67 :2007/02/22(木) 21:54:48
> サービスのインスタンスは1プログラム中に10も20もあったりしないと思うのだが。
いや、あるんですけど。

211 名前:デフォルトの名無しさん :2007/02/22(木) 22:08:29
意味がわからんのだけど
ServiceMain内でインスタンス生成すればいいんじゃないの?

212 名前:デフォルトの名無しさん :2007/02/22(木) 22:42:10
知識がないわけじゃないのに工夫ができない子はいらない子

213 名前:デフォルトの名無しさん :2007/02/22(木) 22:48:27
何ができなくて困ってるのかよく解らん。
ユーザ定義データを渡せると仮定して、渡せないときに比べて何ができるようになる?

214 名前:デフォルトの名無しさん :2007/02/22(木) 23:49:03
マウスの動作を拡張するソフトって、どうやってるんですか?
自分で登録したクラスなら、メッセージ取れるけど、
ほかのウィンドウクラスに送信されたメッセージって
メッセージキュー以前の段階でとらないといけいないですよね。

ヒントだけでもください。

215 名前:デフォルトの名無しさん :2007/02/23(金) 00:14:34
Hook

216 名前:デフォルトの名無しさん :2007/02/23(金) 00:18:28
>>214
SetWindowsHookEx
使うとか

217 名前:デフォルトの名無しさん :2007/02/23(金) 01:10:03
どうも。

218 名前:デフォルトの名無しさん :2007/02/23(金) 02:00:53
「オーナー描画ボタン」を少し改造しています。
http://wisdom.sakura.ne.jp/system/winapi/win32/win61.html

大雑把にですが>>219のようなにしています。
処理 1の部分は実行されず、処理 2の部分だけが実行されます。
SubBtnProcのWM_DRAWITEM:の部分を消しても結果は同じです。
処理 1も処理 2も実行されると思っていたのですが、何故でしょう?

自分の理解はSetWindowLongでSubBtnProcに飛んで、引数をそのままDefBtnProcに
代入されている WndProcに飛ぶのだと思っていました。
どこを勘違いしているのかわかりませんので、どなたかご指摘をお願いします。


219 名前:デフォルトの名無しさん :2007/02/23(金) 02:04:18
LRESULT CALLBACK SubBtnProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

switch (msg) {
case WM_DRAWITEM:
〜何かの処理 1〜
return TRUE;
}
return CallWindowProc(DefBtnProc , hwnd , msg , wp , lp);
}

LRESULT CALLBACK WndProc(HWND hwnd , UINT msg , WPARAM wp , LPARAM lp) {

switch (msg) {
case WM_CREATE:
hBT = CreateWindow(
TEXT("BUTTON") , TEXT("") ,
WS_CHILD | WS_VISIBLE | BS_OWNERDRAW ,
0 , 0 , 400 , 100 , hwnd , (HMENU)1 ,
((LPCREATESTRUCT)(lp))->hInstance , NULL);

DefBtnProc = (WNDPROC)GetWindowLong(hBT, GWL_WNDPROC);
SetWindowLong(hBT, GWL_WNDPROC , (LONG)SubBtnProc);
return TRUE;
case WM_DRAWITEM:
〜何かの処理 2〜
return TRUE;
}
return DefWindowProc(hwnd , msg , wp , lp);

220 名前:デフォルトの名無しさん :2007/02/23(金) 07:13:45
>>218
WM_DRAWITEMは親ウィンドウに送られてくるものなので、それでOK。

221 名前:194 :2007/02/23(金) 10:34:57
>>199
そういう感じのAPIで
繋がってる回線の数等わかるものはないですか?

222 名前:デフォルトの名無しさん :2007/02/23(金) 11:36:46
>>221
WNetEnumResource関数も見たほうがいいかもね

223 名前:デフォルトの名無しさん :2007/02/23(金) 11:42:44
>>222
それは違う関数だと思う。

>>221
WMIにあるかもね

224 名前:デフォルトの名無しさん :2007/02/23(金) 11:54:36
繋がってる回線というのを具体的に定義すればわかるかもよ

225 名前:デフォルトの名無しさん :2007/02/23(金) 11:59:37
繋がってるTCPコネクションの事なのか
LAN回線の接続数の事なのか

226 名前:デフォルトの名無しさん :2007/02/23(金) 12:06:25
LANではなくて電話回線の数を数えたいのですが
WindowsのAPIで可能でしょうか?


227 名前:194 :2007/02/23(金) 12:37:30
>>225
両方とも教えてください

228 名前:デフォルトの名無しさん :2007/02/23(金) 12:40:16
コンボボックスで今何番目の項目が選択されているか調べたいのですけど
どのようにすればいいでしょうか?

229 名前:デフォルトの名無しさん :2007/02/23(金) 12:40:31
>>226
WMIでWin32_POTSModemクラスかな?

230 名前:デフォルトの名無しさん :2007/02/23(金) 12:43:48
>>228
CB_GETCURSEL
メッセージ

231 名前:228 :2007/02/23(金) 12:52:48
ShowMessage( SendMessage(In,CB_GETCURSEL,0,0) );
試しでこんな風に書いてみたのですが、
0しか返ってきません。
書き方は間違ってませんよね?

232 名前:デフォルトの名無しさん :2007/02/23(金) 14:30:36
In、て、なんだ、ハゲ。

233 名前:デフォルトの名無しさん :2007/02/23(金) 14:50:25
ShowMessageって何かと思ったらbc++か

234 名前:228 :2007/02/23(金) 15:59:17
環境はC++Builder6
Inはただ適当につけたハンドルです。

235 名前:デフォルトの名無しさん :2007/02/23(金) 16:04:30
で、Inはそのコンボボックスのハンドルなの?
いちおー、0は有効値(見つからないと-1)だから
ハンドルが違ってる可能性高い

236 名前:デフォルトの名無しさん :2007/02/23(金) 16:29:13
EnterCriticalSection した後、
その中で CreateThread しても問題ない?

237 名前:デフォルトの名無しさん :2007/02/23(金) 16:48:10
>>236
問題ない

238 名前:デフォルトの名無しさん :2007/02/23(金) 17:29:06
根拠は?経験上?仕様上?

239 名前:デフォルトの名無しさん :2007/02/23(金) 17:38:41
そもそもクリティカルセクション中にCreateThreadしちゃいけないって
何で思ったの?

240 名前:デフォルトの名無しさん :2007/02/23(金) 17:40:50
なんとなく

241 名前:デフォルトの名無しさん :2007/02/23(金) 17:58:30
クリティカルセクションは他のスレッドへの切り替えを抑止するような役目を果たしてるから、
EnterCriticalSectionの後にスレッド作ってそこでもクリティカルセクションを使った場合に大丈夫かって思ったんじゃないの?

242 名前:デフォルトの名無しさん :2007/02/23(金) 17:58:51
>>234
実際に選択項目を変えてみたの?

243 名前:228 :2007/02/23(金) 18:34:51
項目を変えたりしても、変わらないです。

244 名前:デフォルトの名無しさん :2007/02/23(金) 18:37:21
CB_GETCURSEL以外はうまくいくのか?
CB_GETCOUNT とか CB_RESETCONTENT とか

245 名前:228 :2007/02/23(金) 18:46:25
void __fastcall 〜〜〜(SealInに項目を追加)

void __fastcall TForm2::Button1Click(TObject *Sender)
{
ShowMessage( SendMessage(SealIn , CB_GETCURSEL , 0 , 0) );
}
てか、ほんとこれくらいのプログラムしか出来てない;;

>>244
試しでその二つや0以外が返ってきそうなものをやってみましたけど、
結果変わらずです

246 名前:デフォルトの名無しさん :2007/02/23(金) 18:52:38
>>245
>SealIn
上の(SealInに項目を追加)が気になる
これってコンボボックスの名前か?
まさかだけど
ShowMessage( SendMessage(SealIn->Handle , CB_GETCURSEL , 0 , 0) );
ってことないよね?


247 名前:デフォルトの名無しさん :2007/02/23(金) 18:55:04
あと、SendMessage()直後にGetLastError()を

248 名前:228 :2007/02/23(金) 19:07:48
SealInがコンボボックスの名前です
SealIn->Items->Add(text);
で、項目を追加してます。
それ以外の処理はまだないです。

GetLastErrorを追加しましたが、エラーコード返ってきませんでした

249 名前:デフォルトの名無しさん :2007/02/23(金) 19:09:02
>>248
ならSealInはハンドルじゃない
ShowMessage( SendMessage(SealIn , CB_GETCURSEL , 0 , 0) );
SealInの部分を SealIn->Handle にする
ShowMessage( SendMessage(SealIn->Handle , CB_GETCURSEL , 0 , 0) );

250 名前:228 :2007/02/23(金) 19:11:20
>>249
うまくいきました。
ありがとうございます


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