Win32API質問箱 Build50
at TECH
1:デフォルトの名無しさん
07/02/17 23:10:48
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
過去スレ、関連リンクは>>2-5くらい。
■注意
・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。
・日本語版MSDN Online Libraryは不完全です。英語版(URLリンク(msdn.microsoft.com))の利用推奨。
・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。
・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
2:2
07/02/17 23:13:16
自己解決しました。
>>1にカチンときたので教えません。
バーカ!
3:デフォルトの名無しさん
07/02/17 23:13:49
49 スレリンク(tech板)
48 スレリンク(tech板)
47 スレリンク(tech板)
46 スレリンク(tech板)
45 スレリンク(tech板)
44 スレリンク(tech板)
43 スレリンク(tech板)
42 スレリンク(tech板)
41 スレリンク(tech板)
40 スレリンク(tech板)
39 スレリンク(tech板)
38 スレリンク(tech板)
37 スレリンク(tech板)
36 スレリンク(tech板)
35 スレリンク(tech板)
34 スレリンク(tech板)
33 スレリンク(tech板)
4:デフォルトの名無しさん
07/02/17 23:14:18
32 スレリンク(tech板)
31 スレリンク(tech板)
30 スレリンク(tech板)
29 スレリンク(tech板)
28 スレリンク(tech板)
27 スレリンク(tech板)
26 スレリンク(tech板)
25 スレリンク(tech板)
24 スレリンク(tech板)
23 スレリンク(tech板)
22 スレリンク(tech板)
21 スレリンク(tech板)
20 スレリンク(tech板)
19 スレリンク(tech板)
18 スレリンク(tech板)
17 スレリンク(tech板)
16 スレリンク(tech板)★
15 スレリンク(tech板)★
14 URLリンク(pc5.2ch.net)
13 URLリンク(pc5.2ch.net)
12 URLリンク(pc5.2ch.net)
11 URLリンク(pc5.2ch.net)
10 URLリンク(pc5.2ch.net)
9 URLリンク(pc5.2ch.net)
8 URLリンク(pc5.2ch.net)
7 URLリンク(pc3.2ch.net)
6 URLリンク(pc3.2ch.net)
5 URLリンク(pc3.2ch.net)
4 URLリンク(pc3.2ch.net)
3 URLリンク(pc.2ch.net)
2 URLリンク(pc.2ch.net)
1 URLリンク(pc.2ch.net)
5:デフォルトの名無しさん
07/02/17 23:14:49
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
- MSDN 2 ライブラリ
URLリンク(msdn2.microsoft.com)
- 猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)
- Google
URLリンク(www.google.com)
- MSDN ライブラリ 2006年6月版
URLリンク(www.microsoft.com)
- Platform SDK Update
(WindowsR Server 2003 R2 Platform SDK Full Download)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
- Win32 API入門
URLリンク(wisdom.sakura.ne.jp)
- Win32 プログラミング入門
URLリンク(www7.plala.or.jp)
- Advanced Windows (書籍)
URLリンク(www.amazon.co.jp)
-おまけ
dat落ちしている過去スレが見れるかも。Build19が見たい人、余裕のある人は●でも買ってやってくれ。
URLリンク(www.2chsearch.info)
URLリンク(makimo.to)
6:デフォルトの名無しさん
07/02/17 23:15:19
MSDN日本語版は誤訳があったり、一部欠けていたりするなど不完全なため、英語版推奨。
URLリンク(msdn.microsoft.com)
URLリンク(msdn2.microsoft.com)
おまけ;Windows SDK for Windows Vista RC1の文書。
URLリンク(windowssdk.msdn.microsoft.com)
MSDN ライブラリ 2006年8月版
URLリンク(www.microsoft.com)
windowssdk.msdn.microsoft.comは、もうmsdn2へ転送されるようになっている。
7:デフォルトの名無しさん
07/02/17 23:27:21
これも追加しようよ。
Microsoft® Windows® Software Development Kit for Windows Vista™ and .NET Framework 3.0 Runtime Components
URLリンク(www.microsoft.com)
8:デフォルトの名無しさん
07/02/18 00:44:35
リストボックスにアイテム挿入してるんだけど
一番左のカラムにしか文字列が挿入されないんですが。
ちゃんとiSubItemの値を変えてるのに何でだろうと2時間ぐらい悩んでてもう限界です。
何か心当たりがある事があれば教えてください。
9:デフォルトの名無しさん
07/02/18 00:50:22
妹「お兄ちゃんって落ち込んだ時どうする?」
俺「んー、別に何も。寝るかな」
妹「ふーん・・」
俺「どうした?何かあったか?」
俺「ううん、ちょっとね」
俺「何だよ水くさいな、言ってみろよ」
俺「う、うんとさ・・・」
俺「おう」
俺「お兄ちゃん、この間一緒に歩いてた人、彼女?」
俺「・・・は?」
俺「前学校の近くで話してたじゃん」
俺「ああ・・・あいつか。なわけないだろ、ただのクラスメートだよ」
俺「ほんと?」
俺「嘘言ってどうすんだよ」
俺「そっか」
俺「てかそんな話はいいんだよ。落ち込んでたんじゃなかったのか?」
俺「ううん、それならいいんだ!えへへ」
俺「おかしな奴だな」
俺「ふふ♪お兄ちゃんに彼女なんてできるわけないよね、よく考えたら。」
俺「こらこら、失礼だぞ」
10:デフォルトの名無しさん
07/02/18 00:52:47
>>9
ちょ、途中から自作自演w
11:デフォルトの名無しさん
07/02/18 00:55:25
ここまで点プレ
12:デフォルトの名無しさん
07/02/18 01:26:12
俺「お・に・い・ちゃん!」
俺「なんだ勝手に部屋に入っちゃだめだろ」
俺「えへへ…」
俺「あたし…知ってるんだよ…おにいちゃんのベットの下に…」
妹「あんた何やってるん?」
13:8
07/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:デフォルトの名無しさん
07/02/18 01:32:20
わっふるわっふる
15:デフォルトの名無しさん
07/02/18 01:37:10
>>13
iSubItem=1 以降は ListView_SetItem()
16:デフォルトの名無しさん
07/02/18 01:46:22
>>13
もしかして、LVCOLUMNってのか?
わっふるわっふる
17:8
07/02/18 01:54:09
>>15
ちょっと試してみます。
>>16
LVCOLUMNですが何か特別な問題でもあるんでしょうか?
18:8
07/02/18 01:59:46
できました。ありがとうございます
19:デフォルトの名無しさん
07/02/18 04:32:54
仕事でもなく寝ずにSDK書いてる俺ってもうダメかな?
20:19
07/02/18 04:33:49
もうすぐ日が昇ってくるぜ
21:19
07/02/18 04:36:18
反応が無いからなのか何故だかわからないが目の前のディスプレイが歪んできた
22:19
07/02/18 04:37:08
やっぱ誰もいないべな
23:19
07/02/18 04:40:32
もう疲れたし、オ○ニーでもして寝るか
24:19
07/02/18 04:45:52
仲間がいたぜwwwwwwww
25:デフォルトの名無しさん
07/02/18 04:55:28
SDKで書いてるなら、がんがれ
SDKを書いてるなら、もっとがんがれ
26:19
07/02/18 04:58:24
息抜きに続き考えたぜwwwwwww
俺「あっ・・・いや、学校での・・・・演劇の・・・練習をちょっと・・。」
妹「はっ?私もあんたと同じ学校だけどうちの学校に演劇部なんてないでしょ?」
俺「いやだかr」
妹「あんたさー。妄想するのは勝手だけど私をネタにするのはやめてくれる?(笑)」
妹「この・・・邪気眼が!!!!!!!!!!」
バタンッ・・・
俺「やれやれ、もう少しで俺の手が暴れだす所だったぜw」
俺「・・・・・・アッー!!!」
27:19
07/02/18 05:01:30
>>26
この人頭大丈夫? もう寝ろって。
28:19
07/02/18 05:04:53
すんませんwwwwwwwww
もう寝れない時間まで起きてしまいました
今日仕事で今寝ると絶対遅刻しちゃってそりゃもう大変な事になってしまいます
29:19
07/02/18 05:10:44
それじゃ、もう寝るです。おやすみなさい。
30:19
07/02/18 06:05:37
おはようおまえら
31:デフォルトの名無しさん
07/02/18 07:37:38
Win32API始めたばかりです。
下の三つのファイルにわけてメインのウインドウの
メニュー画面で選択したら時計画面が起動するように
したいのですがどうすればよいのでしょうか?
URLリンク(sa-wiki.com)
32:デフォルトの名無しさん
07/02/18 08:05:24
>>31日本語でおk
33:19
07/02/18 08:30:22
あ、プリキュア見なきゃ
34:19
07/02/18 08:33:42
おお、いかんいかん忘れるところだったdd
35:デフォルトの名無しさん
07/02/18 09:58:00
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて、派遣やってるバカのことw
前の会社を裏切り、結局派遣先からも騙されてる。
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉
自分でも騙され裏切れられることは薄々わかったるから派遣問題の話が出るとウッキー!って逆ギレw
36:19
07/02/18 10:09:54
何人いるんだよwwwwwwwwww
37:デフォルトの名無しさん
07/02/18 14:13:27
CTRL+ALT+DELをプログラムからPCに送る方法ありませんか?
keybd_eventやVNCがやってる方法では期待する動作になりませんでした。
単にタスクマネージャーを出したいわけではなく、割り込みを発生させたいのです。
38:デフォルトの名無しさん
07/02/18 14:16:37
その質問どこかで見た
39:デフォルトの名無しさん
07/02/18 14:28:15
>>38
前スレの最期の方の質問。
お ま え ら カ チ ン と 来 る な よ !
40:31
07/02/18 16:04:04
たびたび申し訳ない。
WINXPでWIN32プログラムの質問です。
下のコードでメニュー画面からアナログ時計画面を
出した後、アナログ時計画面を閉じて再度メニュー画面から
アナログ時計画面を選択しても無反応です。
何回でも表示することができるようにしたいのですが
どなたかご教授いただけんだろうか。
URLリンク(sa-wiki.com)
41:デフォルトの名無しさん
07/02/18 16:10:19
sageろ低脳
42:デフォルトの名無しさん
07/02/18 16:18:02
>>40
アナログ時計画面を閉じた時点で、アナログ時計画面が破棄されている。
メニュー選択時に作成するようにするとか、
アナログ時計画面のWM_CLOSEで、ShowWindowで隠すだけにして、DestoroyWindowしない。
43:31
07/02/18 16:50:47
>>42
解決しました、どうもありがとう!!!
44:デフォルトの名無しさん
07/02/18 20:15:10
>37
割り込みを発生させたい、の意味が分からん。
45:デフォルトの名無しさん
07/02/18 21:26:24
システムがヒィヒィ言ってるときでも速やかに応答させたいんじゃないの
46:デフォルトの名無しさん
07/02/18 21:29:41
今、彼女をヒィヒィ言わせてますが何か?
47:46
07/02/18 21:38:10
昨日、仕事から帰ってきた姉に、オナニー見られて大爆笑された。
その後、部屋に真っ赤になって閉じこもってたら、 姉から携帯にメールがあって、
「あたしも毎日やってるんだから気にするな!ファイト!!」 って書いてあった。
48:デフォルトの名無しさん
07/02/18 21:49:12
素朴な疑問なんだけどCTRL+ALT+DELとかALT+TABってシステムコールなん?
49:デフォルトの名無しさん
07/02/18 21:56:59
SAS。winlogonが最優先で奪取するキーの組み合わせ。
50:デフォルトの名無しさん
07/02/18 22:00:12
仮想空間アドレスがどの物理メモリに割り当てられているか知る術がありますか。
51:デフォルトの名無しさん
07/02/18 22:05:49
>>47
ワッフルワッフル
52:デフォルトの名無しさん
07/02/18 22:06:30
>>50
マルチ
スレリンク(tech板:444番)
53:デフォルトの名無しさん
07/02/18 22:16:46
Win32APIのレベルでは、「知ってどうするの?」だなー。
54:デフォルトの名無しさん
07/02/18 22:25:44
>>49
サンクス
つまりwinlogonにTerminateProcessするとunknown hard errorになる代わりに
CTRL+ALT+DELを横取りされなくなるんですね
55:デフォルトの名無しさん
07/02/18 22:54:36
確かに横取りは出来なくなると思うが、それはOSが落ちる事を意味するのでは?
一度試してみれ。
56:デフォルトの名無しさん
07/02/18 22:58:06
マジレスされちゃったので答えとくと当然青画面になるよ
57:デフォルトの名無しさん
07/02/18 23:38:08
BSODってドライバ以外から作り出せるのかね
58:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/19 00:27:23
自分でペイントで作ったマウスカーソルを使いたいのですが
調べてもよく方法がわかりませんでした
よろしければ教えてください
60:19
07/02/19 00:29:33
>>59
まずはリソースエディタについて調べろ。
61:デフォルトの名無しさん
07/02/19 02:02:42
>58
フォントリンクがあるからねぇ。
62:567
07/02/19 06:28:56
おまいら久しぶり
63:デフォルトの名無しさん
07/02/19 09:17:51
>61
そうなると任意のunicode文字が表示可能かを判断する方法は
フォントリンクまでたどらないと判別できないという事ですね?
なんか単純な方法は、ないかなぁ・・・
64:デフォルトの名無しさん
07/02/19 09:40:49
DrawText で DT_CALCRECT 矩形サイズなり LastError なりで判定できないもんかな?
65:デフォルトの名無しさん
07/02/19 12:40:27
>>63
要点が見えないんだが・・・
もう少し詳しく説明してくれね?
何をしたいのか、命題はいかに?
66:デフォルトの名無しさん
07/02/19 12:55:05
>>65
やりたい事は、「表示しようとしているunicode文字が
現在のフォントで表示できるか判断したい」です。
表示しようとしているunicode文字が現在フォントに
グリフが無ければ代替文字(×マークとか?記号とか)にして
存在すればそのまま表示したいのです。
67:デフォルトの名無しさん
07/02/19 13:45:00
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?
68:デフォルトの名無しさん
07/02/19 14:41:21
ドライブレターを割り当てていないパーティションがあって、
そのパーティションにアクセスしたい(そのパーティションの情報を取得したい)
どうすればできますか?
無理なら無理矢理空いているドライブレターを割り当ててそこから情報を取得
すればいいと思うけど、割り当てをプログラム上からできるのかしら・・・?
69:デフォルトの名無しさん
07/02/19 14:58:57
FindFirstVolume、FindNextVolume でみつかる?
70:デフォルトの名無しさん
07/02/19 16:04:49
>>69
ボリューム名は取得できました。
そこからはどうすればいいでしょうか?
QueryDosDeviceでデバイスを取得して、そのデバイスをCreateFileで開いてハンドルを
取得してDeviceIoControlで情報取得しょうか?
71:デフォルトの名無しさん
07/02/19 16:35:47
TransparentBltやAlphaBlendはWindowsMeでは機能しないんですか?
72:デフォルトの名無しさん
07/02/19 17:09:36
たしかにMSDNライブラリを見るとWindows 2000からと書いてあるね。
73:デフォルトの名無しさん
07/02/19 18:17:27
Windows98/SEでTransparentBltを使うとすごい勢いでGDIハンドルが増加していくんだよな
Meでは使い物になるんだろうか
74:デフォルトの名無しさん
07/02/19 18:33:25
>>70
それでいけると思う。
末尾の \ は消さないとCreateFile()で失敗するかも。
あとOSによって差が大きかった気がする。
75:デフォルトの名無しさん
07/02/19 19:36:37
>>72
英語版を読むと、98/MEもいけそうだよね
76:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/19 20:39:29
そのアドレス、って何アドレスだ? 物理か?セグメント相対か?
78:デフォルトの名無しさん
07/02/19 21:13:26
質問です。
親ウインドウから子ウインドウを起動させて、子ウインドウを終了させると
親ウインドウがアクティブウインドウになってくれず他のウインドウの
下に隠れてしまいます。親ウインドウがアクティブになる方法を
教えてちょんまげ。
79:デフォルトの名無しさん
07/02/19 21:19:27
ちょんまげにキレた。子ウィンドウ終了時にShowWindowじゃダメなのか。
80:デフォルトの名無しさん
07/02/19 21:49:29
>>76
PEヘッダに書いてあるベースアドレス+セクションの仮想アドレスで求まる。
コードサイズも同じ場所の仮想サイズから特定できる。
exeが読めない状況でもPEヘッダ自身はベースアドレスにロードされてる。
ほとんどの場合は上記の方法で判るが、意地の悪いプログラムだと
デバッガを化かすコードが入ってたりするので、実際のコードの開始
アドレスはプログラム毎に任意と考えるべき。
信用して良いのはGetThreadContextで得たEip以降のコード。
81:デフォルトの名無しさん
07/02/19 22:00:13
ウィンドウを終了、tぽいう表現に違和感を感じる今日この頃。
82:デフォルトの名無しさん
07/02/19 22:01:03
書き忘れてたけどベースアドレスはGetModuleHandleで判るからね。
83:デフォルトの名無しさん
07/02/19 22:19:06
>>78
Owned Windowは、WS_POPUPにすべし
84:デフォルトの名無しさん
07/02/19 22:37:14
“普通”の、例えばMFCを中心に使っている初級Windowsプログラマが見て
「そこまでトリッキーなことはしていなさそう」と感じる程度の
アプリケーションを開発する上で、
>>80みたいな知識が必要になることってどれくらいあるんですか?
1.他プロセスにアタッチするようなアプリケーションはかなり特殊な
存在であって、「普通の」アプリ開発者とは接点がない
2.普段は使わない知識だが、時々必要になることがあるので
こうして質問する人がやって来る
3.実はWindowsでプログラムを書く上では割と基本的な知識
85:デフォルトの名無しさん
07/02/19 22:39:44
他のアプリケーションに介入して弄り回したいときとかは、場合によっては
必要になることもあるかもしれない。詳しく知っててモノ書いてる連中は
だいたいMVP持ってたりするな。
86:デフォルトの名無しさん
07/02/19 22:41:35
俺は1だと思うが、2だと言う意見の人がそれなりにいてもおかしくないとは思う。
それに実際必要かどうかはともかく80くらいは豆知識として知っていておいて損はない。
87:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/19 22:49:34
1であり2である
89:デフォルトの名無しさん
07/02/19 22:50:23
>>84
2かな。他プロセスに干渉するアプリは確かに特殊な部類ではあるけど
必要に迫られて使うことって結構あると思うし。
WindowsプログラミングするならAdvanced Windowsは持っといて損は無いと思うよ。
全部理解するのに余裕で2ヶ月とかかかるけど。学生ならそのうちにやっとくのも良し。
90:デフォルトの名無しさん
07/02/19 22:52:39
>>85-86
他プロセスへのAPIフックぐらいなら出来るのですが、
それがどうしても必要になるといった状況にはなかなか出会ったことがなくて、
しかしこのスレにはかなりの頻度で他プロセスが絡む質問が出てくるので
疑問に思って質問させていただきました。
何にせよ、知っていて損はしないので、ぼちぼち覚えていこうと思います。
ありがとうございました。
91:デフォルトの名無しさん
07/02/19 22:53:37
>>75
ただしWin98のAlphaBlendはバグ持ちなので実質的に使えない。
(WinMeでは修正されてる)
>>87
WOW32とかOS/2サブシステムとかで必要だったものをついでにWin32にも
開放してみたという感じかと
92:デフォルトの名無しさん
07/02/19 22:54:05
自分以外の指定したウインドウが更新されたかどうかと、その更新された
領域を知りたいと思っています。SetWindowsHookEx()を使ってWM_PAINTを
フックしているのですが、監視対象の子ウインドウが更新されたかどうか
まではわからないようです。この場合、子ウインドウも全てフックして
やるしかないのでしょうか?
93:デフォルトの名無しさん
07/02/19 22:55:03
つーかAlphaBlendなんて自前でやるもんだろ
フルスクラッチ(ryでも買って読めば誰でもできるし
94:デフォルトの名無しさん
07/02/19 22:57:41
>>89
"Advanced Windows"、興味は前々から持っていたのですが
いかんせん自腹で買うのには少々高くて二の足を踏んでいました。
これを機に検討してみます。。
95:デフォルトの名無しさん
07/02/19 22:59:36
昔VIPのプログラムやろうぜスレにSSE2使った
アルファブレンドのソースがあってたまげたの思い出した。
96:デフォルトの名無しさん
07/02/19 23:07:24
>>93
kwsk
97:デフォルトの名無しさん
07/02/19 23:12:39
>>91
そういう理屈なのかー
なんかPEB拾うとかいう用途はあるみたいだけどNtQueryでできるし
98:デフォルトの名無しさん
07/02/20 00:24:30
俺「なー姉貴。ReadFileEx関数の、最後の引数なんだよ?」
姉「あぁそれね・・・完了ルーチンのポインタなんよ」
俺「へ?」
姉「読込処理が終わった時に呼ばれる、完了ルーチンのポ・・・・ぽ」
(急に小声)
俺「?」
姉「終わったときに呼ばれる関数のポインタ!!。変なこと聞かないデ!!」
(なぜかプリプリ怒ってる)
99:デフォルトの名無しさん
07/02/20 00:37:06
やあ義弟
100:デフォルトの名無しさん
07/02/20 00:43:05
くだらねーwww
101:デフォルトの名無しさん
07/02/20 00:52:17
チンポイン
102:デフォルトの名無しさん
07/02/20 01:33:00
日本にWin32について語れる姉弟が何組いるのか
103:デフォルトの名無しさん
07/02/20 04:02:11
わっふるわっふる
104:デフォルトの名無しさん
07/02/20 04:05:01
アルファブレンドって、何かうまそうじゃね?
秋葉でカフェオレとかをアルファブレンドコーヒーに名前変えたら売れね?
105:デフォルトの名無しさん
07/02/20 04:55:37
ここにアルファー
106:78
07/02/20 06:43:35
>>79 >>83
レスありがとお。試してみます!!
107:デフォルトの名無しさん
07/02/20 07:26:33
>>96
フルスクラッチによるグラフィックスプログラミング入門
秀和システム発行
108:デフォルトの名無しさん
07/02/20 07:35:39
>>107
thx
109:デフォルトの名無しさん
07/02/20 09:23:18
3つのSTATICの子ウインドウを作ってサブクラス化し、ひとつのプロシージャで
処理をしたいと思っています。
どのウインドから飛んできたのかを知りたいのですが、どのパラメータを見たら
それがわかるのでしょうか?
質問の仕方がわかりづらければ申し訳ありません。
解ればお教えください。
110:デフォルトの名無しさん
07/02/20 09:39:07
HWNDが違うんじゃないの?
111:デフォルトの名無しさん
07/02/20 09:51:04
HWNDで判断するしかないのでしょうか?
CreateWindow時の子ウィンドウIDを取得する方法がないでしょうか?
という質問の仕方に気づかず余計な回答をさせてしまって申し訳ありません。
今もGoogleで調べているのですが、ちょっと難しくてなかなか回答に
たどり着くことができていません。
112:デフォルトの名無しさん
07/02/20 10:01:04
あなたの日本語がわかりません。
113:デフォルトの名無しさん
07/02/20 10:05:09
>>111
質問読まず書き子
メニューのリソースIDで判別できるんじゃね?
114:デフォルトの名無しさん
07/02/20 10:12:22
>>111
GetWindowLong(hWnd, GWL_ID)
115:デフォルトの名無しさん
07/02/20 10:13:31
>>113
質問の仕方がわるくて本当に申し訳ありません。
それです。
それを取得する方法を探しています。
勉強をはじめたばかりで回答になかなかたどり着けなくて・・・。
116:デフォルトの名無しさん
07/02/20 10:15:36
>>111
いまいち、何を言いたいのか見えてこないが
たぶん、GetWindowLongでGWL_ID
117:デフォルトの名無しさん
07/02/20 10:16:38
>>114
ありがとうございました。
118:デフォルトの名無しさん
07/02/20 10:22:39
>>116
サンプルを作って試してみました。
その方法を探していました。
回答ありがとうございました。
119:デフォルトの名無しさん
07/02/20 12:37:31
ウインドウの上からマウスが外れたときに検地するにはどうしたら良いでしょうか?
120:デフォルトの名無しさん
07/02/20 12:40:40
>>119
日本語が不自由だとなにかと不便だよね。
日本での生活は辛いかも知れないけど、母国のことを思い出してがんばってね。
121:デフォルトの名無しさん
07/02/20 12:41:23
>>119
>検地
歴史書を紐解くといいと思います。
122:デフォルトの名無しさん
07/02/20 12:58:46
TrackMouseEventが使いにくいからといってフックしたり常時監視したりするアホ
123:デフォルトの名無しさん
07/02/20 13:34:22
ウィンドウに乗っているコントロールに対して
透過でフェードアウトを実装する事は可能でしょうか?
AnimateWindow
SetLayeredWindowAttributes
あたりで可能でしょうか?
見た感じでは、Window限定のような気がするのですが・・・。
124:デフォルトの名無しさん
07/02/20 16:43:37
GDIで透過色付きで且つ半透明なものを描画しようと思うんですが、
ワーキングメモリとしてのビットマップは静的にある程度の大きさを持つものを予め用意しておくか、
描画用の、AlphaBlend等のAPIをラップした関数を呼び出すたびにその関数のスコープ内部で済ませるか迷っているんですが、
前者の場合は始終無視できない程度のメモリが占有される事が、
後者の場合は関数呼び出しのたびのオーバーヘッドの事が心配で一向に開発が進みません。
普通はどうするんでしょうか。
125:デフォルトの名無しさん
07/02/20 16:56:01
まず以下のことを明確にせよ。
無視できない程度のメモリは何メガなのか?
無視できる程度のメモリは何メガなのか?
126:デフォルトの名無しさん
07/02/20 17:05:02
>>124
普通はそれぞれどの程度の問題になるのか数値化して検討する。
いや、寧ろこんなところで聞かない。
127:デフォルトの名無しさん
07/02/20 17:05:36
静的に確保するとすれば、512KB以上は無視できない。
関数のオーバーヘッドは、1KB以上であれば無視できない。
128:デフォルトの名無しさん
07/02/20 17:14:47
ばーか
129:デフォルトの名無しさん
07/02/20 17:28:33
そろそろカチンときそうです。
130:デフォルトの名無しさん
07/02/20 17:34:52
>>124
その描画関数がどんなタイミングでどの程度呼ばれることになるのか?
とかも考えましょう。アプリケーション自体の寿命に対して局所的かつ連続して呼ばれる
なら初期化関数、描画関数、終了関数に分けて以下のようにするとか。
初期化関数()
描画関数()
...
描画関数()
終了関数()
131:デフォルトの名無しさん
07/02/20 17:45:38
親ウインドウに子ウインドウは貼り付けて、子ウインドウだけを
半透明にさせることって出来ますか?
ウインドウ全体を半透明にするのは簡単に出来たのですが、
子ウインドウだけってのは無理でした。
自分のソースが間違っているのか、そもそも無理なのか
解らないので知っていたら教えてください。
132:デフォルトの名無しさん
07/02/20 17:53:13
みんな!
あたしの為の、カチンとならないで!!
133:デフォルトの名無しさん
07/02/20 18:14:10
VistaでCSIDL_PROFILE の仮想フォルダ のCSIDLってないですか?
134:デフォルトの名無しさん
07/02/20 18:23:59
Win32APIの32とはなにですか?しりたいのです。
135:デフォルトの名無しさん
07/02/20 18:26:47
16の倍で、64のちょうど半分です
136:デフォルトの名無しさん
07/02/20 18:29:26
丁度指が足りなくなる数
137:デフォルトの名無しさん
07/02/20 18:31:48
ゲイツ「えと、なんとなく…」
138:デフォルトの名無しさん
07/02/20 18:33:30
√1024
美しいと思わないかね?
139:デフォルトの名無しさん
07/02/20 18:36:01
Win32は32ビットCPUを対象として開発されたものだから32ビットの32。
当然Win16もあった。
x64やIteniumのはWin64かと思いきゃ、
Win32 for 64-bit Windowsという呼称が一部で見受けられる。
(無論WOW64のことではない)
140:デフォルトの名無しさん
07/02/20 18:44:42
ゲイツ「そうだったんだー、へー」
141:デフォルトの名無しさん
07/02/20 18:51:18
質問箱って書いてありますが、ここ、箱じゃないですよね。
なのに何で箱なんですか?
タイトル名からうそをついているようではとてもじゃないけどうその答えを
返されそうで質問できません。
142:デフォルトの名無しさん
07/02/20 18:54:26
日本語でおk
143:デフォルトの名無しさん
07/02/20 18:54:46
おまえさんは箱の定義を勘違いしてるんだろう。
144:デフォルトの名無しさん
07/02/20 18:56:50
ネタにマジレスってカッコイイよね
145:デフォルトの名無しさん
07/02/20 18:57:50
pc10 (banana313) も↓こんな感じでしょ。 箱詰めぎっちりだわさ
URLリンク(www.maido3.com)
146:デフォルトの名無しさん
07/02/20 19:31:48
質問できないといいつつ、質問してるのはお約束だな。
147:デフォルトの名無しさん
07/02/20 20:11:50
>>141
君はこのスレは箱ではないと思っているから、ここは箱ではないんだ。
ここが箱でない以上それは尤もな考え方であって、つまりここは箱ではないんだ。
しかし、よくよく考え直してみてくれ。ここが箱であったっていいじゃないか。
そういうわけで、仮にこのスレが箱だとしてみると、君の考え方は間違っていることになる。
それは即ちここが箱であるということに他ならず、仮定は正しかったということになるんだ。
148:78
07/02/20 20:31:23
何度もすんまそん。
子ウインドウのテキストエディタを終了させた後、親ウインドウが
アクティブにならず他のウインドウの下に隠れてしまって悩んでいます。
親ウインドウアクティブにて戻るにはどうすればよいのでしょうか。
URLリンク(sa-wiki.com)
149:133
07/02/20 20:59:20
自己解決しました。
FOLDERID_UsersFilesですね。
しかし糞スレだな
150:デフォルトの名無しさん
07/02/20 21:05:37
はこ 【箱/▼函/▼筥/▼匣/▼筐】
(5)厠(かわや)に置いて大便を受けるもの。しのはこ。また、大便。
「―すべからず/宇治拾遺 5」
151:デフォルトの名無しさん
07/02/20 21:59:57
>>141
そうか
152:デフォルトの名無しさん
07/02/20 22:19:51
キャスト以外の方法で、
整数を受け取って席轍に変換されたvoid*を返すようなAPIってありますか?
153:デフォルトの名無しさん
07/02/20 22:20:54
席轍→適切のミスです
154:デフォルトの名無しさん
07/02/20 22:22:39
意味不明
155:デフォルトの名無しさん
07/02/20 22:24:46
そもそも整数はデータ表現の問題で、キャストはコンパイラと言語仕様の問題、
それがAPIと何の関係があるんだ?
156:19
07/02/20 22:25:35
>>152
つ union
157:デフォルトの名無しさん
07/02/20 22:29:07
うん、つっこまれて気づいた ごめんなさい
158:デフォルトの名無しさん
07/02/20 22:43:05
>>152
つ TlsGetValue
159:デフォルトの名無しさん
07/02/20 23:52:34
>>121
日本語が不自由な奴に秀吉見せたらファビョるぞ
160:デフォルトの名無しさん
07/02/21 03:41:03
サウンド機能についてです。
色々なメディアプレイヤーを使っていると
勝手に音量の位置が変わってしまいます。
これを固定とかしようと思うのですが
どうすればいいですか?
既存ソフトだと細かい事ができないので
自分で何とかしたい訳ですが・・・
161:デフォルトの名無しさん
07/02/21 03:53:33
>>160
mixerOpen
162:デフォルトの名無しさん
07/02/21 07:41:42
ミキサー勝手に弄るアプリは死んで良いと思う今日この頃。
163:デフォルトの名無しさん
07/02/21 08:14:42
>>162
RealOneとかどうにかしてよw
164:デフォルトの名無しさん
07/02/21 08:40:10
>>160
VISTAに移行しるw
165:デフォルトの名無しさん
07/02/21 13:16:58
サブクラス化したSTATICでTrackMouseEventでウインドウからマウスが外れたことを
知りたいと思うのですが、プロシージャのどの部分でTrackMouseEventを
設定すればよいのか、またメッセージのWM_MOUSELEAVEをどこで受け取ればよいのか
が解りません。
サブクラス化が良く理解できていないのは解りますが、理解の助けになる、
もしくはマウスが外れたことを知る方法の参考になるサイトなどがありましたら
教えてください。
166:デフォルトの名無しさん
07/02/21 13:44:41
サブクラス化
URLリンク(wisdom.sakura.ne.jp)
ここを参考にSTATICのサブクラス化を学んでいます。
サブクラス化したプロシージャでマウスの左ボタンを押したことを
GetKeyState(VK_LBUTTON)にて検知していますが、switch (msg)で
case WM_LBUTTONDOWN:を使って検知することはできませんでした。
WM_LBUTTONDOWNなどのメッセージを受け取るにはどうするのでしょうか?
WM_MOUSEMOVEなどのメッセージを受け取りたいと考えていますが、
何から理解していけば良いのか途方にくれています。
ご助言をお願いします。
167:デフォルトの名無しさん
07/02/21 19:21:36
たぶんSTATICでメッセージ受けるのはサブクラス化以前で説明済みなんだろうな
168:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/21 21:22:09
>>168
アドレスの計算の仕方はそれで合ってる。
ただしそのサイズはアラインメントされたサイズなので、
仮想メモリにマップ後の実際のコードサイズの値は、
セクション毎のVirtualSizeを見ないとわからんよ。
普通のコードセクション(.text)なら
SizeOfCode == SizeOfRawData >= VirtualSizeだから、
大よそが判れば良いなら>>168の方法でもいいけど、
SizeOfRawData < VirtualSizeもありうる。
>以降も関数が配置されてる
これはどういう方法で確認してる?
実際の所コンパイルオプション見ないとわからんけど、
インポートアドレステーブルだったり他のセクションが
混ざってるとかじゃないかね。
OptionalHeaderだけじゃなくてその後のセクションの
情報も見て位置を把握しないと判りづらいと思うよ。
170:168
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/21 22:36:07
APIのは対応してないと明示されてるので、諦めてCRTのvswprintfを使う。
173:デフォルトの名無しさん
07/02/21 22:37:20
>>171
っ stdarg.h
っ va_start
っ va_end
174:デフォルトの名無しさん
07/02/21 22:37:39
すでにAPI関係ないな
175:デフォルトの名無しさん
07/02/22 01:24:11
>>172
vsprintfにするだけでよかったのか
アリガトン
switch文で
%fの場合、
%sの場合、
とかめんどいことして対処してたorz
176:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/02/22 12:45:27
メディアプレイヤーのフルスクリーンは DirectX のフルスクリーンモードではないかと…
178:デフォルトの名無しさん
07/02/22 12:52:38
DirectXの切替だと結構もっさりするんですよね
デスクトップの解像度と同じで切り替えたとしてももっさり
調べてるわけじゃないけどメディアは瞬時に切り替えてるからDirectXじゃないんじゃないかな
179:デフォルトの名無しさん
07/02/22 13:13:25
いや、Media Playerは少なくともDirectShowを使っている。
180:デフォルトの名無しさん
07/02/22 13:30:01
論点が滅茶苦茶だな。
ハードウエアの解像度変更と、ソフトウエアでのスケーリングを混同するな。
181:デフォルトの名無しさん
07/02/22 13:55:18
>>178は「モニターの解像度切り替えと似てもっさりしてる」と言ってるだけで
同列に扱ってるわけじゃないと思うんだけど、違うのかな
182:デフォルトの名無しさん
07/02/22 14:14:35
>>181
デスクトップの解像度でD3Dフルスクリ-ン と
コンテンツの解像度でD3Dフルスクリ-ン とでは微妙に違う。
183:デフォルトの名無しさん
07/02/22 14:30:13
>>179
あぁすまん、DirectShowは使ってると思う。
>>178はDirectGraphicsのCreateDevice()のフルスクリーン切替は使ってないんじゃない?
と言いたかった
>>180
誰あてのレス?
>>181
そう、その通り
>>182
IDirect3DDevice9::CreateDevice()を使った切替ではデスクトップ/コンテンツの解像度に
よる違いって殆ど感じられなかったけど。(両方もっさり)
184:182
07/02/22 14:36:50
>>183
そっか。
profile 取って、どこが遅いか見たほうが良いかもしれないし、
>>176 コードをベースに悪あがきするのも良い
185:178
07/02/22 14:42:01
ちょっと勘違い、再確認したら
IDirect3DDevice9::CreateDevice()でのフルスクリーン切り替えはもっさりしてない
というか一瞬ブラックアウトして、描画が復帰するまで一呼吸いるだけ
>>176 で単にTOPMOSTにするだけならブラックアウトしないってだけだった
メディアプレイヤーもフルスクリーン切替時に背景ブラックだしDirectGraphicsでフルにしてんのかな
186:デフォルトの名無しさん
07/02/22 16:09:02
画面いっぱいに窓広げているだけだろ。アフォか?
187:デフォルトの名無しさん
07/02/22 16:52:55
なら >>176 に回答してみろ、できなきゃオマエが真性アフォ
188:デフォルトの名無しさん
07/02/22 17:20:05
馬鹿バッカー
189:デフォルトの名無しさん
07/02/22 18:18:32
SetWindowPosの使い方が間違っている。HWND_TOPMOSTを指定しろ。というか全画面はこれが常識。
APIリファレンスも見ない馬鹿しかいないのか?
190:デフォルトの名無しさん
07/02/22 18:34:32
>>177が無知なくせに頓珍漢なことを言うから変な流れになるんだよ。
191:デフォルトの名無しさん
07/02/22 18:36:19
僕ハッカー
192:176
07/02/22 18:37:49
>>189
うぉぅっ、CWnd::wndTopMostを指定してるもんだとばかり思ってた
これは恥かしい、ありがとう解決した
挙動も意図したものになったよ
193:デフォルトの名無しさん
07/02/22 18:40:51
ウィンドウが全画面になった後、タスクバーがあった場所に
自分の描画をするのがもっさりしてるんじゃね?
194:デフォルトの名無しさん
07/02/22 19:20:10
インターネット回線や電話回線が
使える状態かどうかわかるAPIを教えてください
195:67
07/02/22 19:40:43
#シカトされたので再送
サービスの ServiceMain コールバック関数に、
ユーザー定義データを渡せないのは痛いね。
オブジェクト指向化しにくいね。みんなどうやってる?
196:デフォルトの名無しさん
07/02/22 19:43:55
質問です。
なぜ、構造体に、それ自身のサイズを代入しないといけないのですか?
xxxinst.dwSize = sizeof(xxx);
みたいにするなら、必要ないと思うのですが…
197:デフォルトの名無しさん
07/02/22 19:46:23
>>196
過去との互換性のため。
例えば、Rev1のときはサイズが100バイトだったのが、Rev2では120バイトになったりしたら、サイズがあれば便利。
198:デフォルトの名無しさん
07/02/22 19:46:56
>>196
>>197さんが言うように、
それで、構造体のバージョンを判別することもある。
DEVMODE,OSVERSIONINFOとかね
199:デフォルトの名無しさん
07/02/22 19:48:57
>>194
InternetAttemptConnect関数かな?
200:デフォルトの名無しさん
07/02/22 19:59:35
>>197
>>198
なるほど。んじゃあ、これってプログラマのためにある変数なんですか。
OSがメモリ確保するときに必要なわけじゃないんですね。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4961日前に更新/228 KB
担当:undef