Win32API質問箱 Build ..
2:デフォルトの名無しさん
09/08/02 00:22:46
MSDN
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
- MSDN ライブラリ (ローカル版)
URLリンク(www.microsoft.com)
- Windows SDK & Platform SDK
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
書籍
- Advanced Windows 第5版
URLリンク(www.amazon.co.jp)
3:デフォルトの名無しさん
09/08/02 00:23:34
80 スレリンク(tech板)
79 スレリンク(tech板)
78 スレリンク(tech板)
77 スレリンク(tech板)
76 スレリンク(tech板)
75 スレリンク(tech板)
74 スレリンク(tech板)
73 スレリンク(tech板)
72 スレリンク(tech板)
71 スレリンク(tech板)
70 スレリンク(tech板)
69 スレリンク(tech板)
68 スレリンク(tech板)
67 スレリンク(tech板)
66 スレリンク(tech板)
65 スレリンク(tech板)
64 スレリンク(tech板)
63 スレリンク(tech板)
62 スレリンク(tech板)
61 スレリンク(tech板)
60 スレリンク(tech板)
59 スレリンク(tech板)
58 スレリンク(tech板)
57 スレリンク(tech板)
56 スレリンク(tech板)
55 スレリンク(tech板)
54 スレリンク(tech板)
53 スレリンク(tech板)
52 スレリンク(tech板)
51 スレリンク(tech板)
4:デフォルトの名無しさん
09/08/02 00:24:39
50 スレリンク(tech板)
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板)
32 スレリンク(tech板)
31 スレリンク(tech板)
30 スレリンク(tech板)
29 スレリンク(tech板)
28 スレリンク(tech板)
27 スレリンク(tech板)
26 スレリンク(tech板)
5:デフォルトの名無しさん
09/08/02 00:25:22
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)
6:デフォルトの名無しさん
09/08/02 01:02:18
>>2
Windows SDKのリンクが一部切れてます。
最新版へのリンクもなかったので修正しておきました。
MSDN
- MSDN ホームページ
URLリンク(www.microsoft.com)
- MSDN ライブラリ
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)
- MSDN ライブラリ (ローカル版)
URLリンク(www.microsoft.com)
- Windows SDK & Platform SDK
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
URLリンク(www.microsoft.com)
書籍
- Advanced Windows 第5版
URLリンク(www.amazon.co.jp)
7:デフォルトの名無しさん
09/08/02 01:10:34
もうだめだこのスレ
8:デフォルトの名無しさん
09/08/02 01:59:48
Windowsにおけるファイルサイズの取得はFindFirstFileが一般的な手法だけど、
URLリンク(support.microsoft.com)
こういう問題があるのでCreateFileでファイルオープンしてGetFileSizeExという
方法を併用するほうがいいかも。ちなみにこれはMSが馬鹿なだけであって、
別に陰謀ではありません。
9:デフォルトの名無しさん
09/08/02 02:30:28
| | └┐ ┌-┘ | | ヽ
| l | | l | |
| | _,,,ニニ,,_ | | l
〉-ァカ |. ヽ ヽヾ``'、,,j |
/l { | ト、\ヽゝ弋ド、ヽヽ\ j' っ
⊂ { | .iト|r=ミ、 ヽトゞチラヌ\ i |∨
ヘ、レミ! トハ トッj:}ヒj リ { ! ⊃
,___ _,. -'' ´⌒`}. ゞ-' `ー"//λ !.i
(__, `ヽ / ヘ"" ’r-、 ""u//彡ハ.l ! こ、これは>>1乙じゃなくてホイミンちゃんの足なんだから
/ / / ○ `ト、 ' ,.イ./r=ミ、i.l l 変な勘違いしないでよね!
/ / {. r-...__ ○ ヾ`,ア´.ラ,〃 } ! !.|
/ ∠,____,.ゝ. i ア 八三彡イ/ /} リ.l
ゝ.,____,,,.->、._ ゝ、_ノ (^くr' └i / .//ノノ j
Z,. -'' /`7'''┬(二` `ハ'´ヾム /彡イ /
/ ,. -''| {ヽ ヽ(二 , j //丿.ノ
`ー' ヘ ヽヽ--'`j=-^ヽ、_ノ-ー'〈 ~
10:デフォルトの名無しさん
09/08/02 07:01:26
♪Et de l'Étoile à la Concorde, un orchestre à mille cordes
♪Tous les oiseaux du point du jour chantent l'amour
♪Aux Champs-Elysées, aux Champs-Elysées
♪Au soleil, sous la pluie, à midi ou à minuit
♪Il y a tout ce que vous voulez aux Champs-Elysées
11:デフォルトの名無しさん
09/08/02 07:42:53
SendMessageのBM_SETCHECKを使ってボタンの状態を変更すると、そのボタンを選択したような点線になりますよね。
これを無効化したいのですが、どのような関数を使えばよいでしょうか?
12:デフォルトの名無しさん
09/08/02 08:12:08
フォーカス!フォーカス!
13:デフォルトの名無しさん
09/08/02 08:29:49
OS自身の関数にも高水準で敷居の低い関数を追加してくれんやろか
14:デフォルトの名無しさん
09/08/02 09:15:10
そこら辺は.NETを使えって方針だろ。
15:デフォルトの名無しさん
09/08/02 11:05:34
>>11
TabStop関係かなぁ?
16:デフォルトの名無しさん
09/08/02 12:16:20
Windows 7 RTM になったんだから、とっととSDKもRTM版出してほしい
17:デフォルトの名無しさん
09/08/02 14:52:34
>>13
WinsockとWinINetとかそういう関係にあると思う。
18:デフォルトの名無しさん
09/08/02 18:20:37
>>16
そういえば、Windows 7 SDK RCのリンクって貼られてないよな。
URLリンク(www.microsoft.com)
19:デフォルトの名無しさん
09/08/03 16:09:20
Vistaや7RCだとタイトルバーとかの大きさが異なる場合
適切なウィンドウサイズを表示する方法ないかな?
20:デフォルトの名無しさん
09/08/03 16:13:35
まさか今まで決め打ちしてやってたんじゃないだろうなお前
21:デフォルトの名無しさん
09/08/03 17:20:32
ウィンドウの上にカーソルが来た時自動にアクティブにするには
どうすればいいですか
22:デフォルトの名無しさん
09/08/03 18:40:10
URLリンク(ja.pastebin.ca)
起動時,クライアント領域に"aaaaa"と表示され,その後方向キー右を押すと真っ白な画面に切り替わるプログラムを作ろうと思っています.
上のURLのようにコードを書いたのですが方向キー右を押しても画面が切り替わりません.どうしてでしょうか.
23:デフォルトの名無しさん
09/08/03 18:44:23
>>22
BeginPaint/EndPaintはWM_PAINTでしか使えない
GetDC/ReleaseDCを使うといいかもしれない
24:デフォルトの名無しさん
09/08/03 18:45:49
とりあえずBeginPaintの解説読んでみ
URLリンク(msdn.microsoft.com)
25:23
09/08/03 18:47:18
と思ったけどそういう問題とは違う気もする・・・23は忘れてください
26:デフォルトの名無しさん
09/08/03 18:48:17
本当にVK_RIGHTは来ているのだろうか?
という疑問
27:デフォルトの名無しさん
09/08/03 18:53:59
>>20
決め打ちでやってた
やっぱりGetSystemMetricsで色々情報取らないと駄目?
28:デフォルトの名無しさん
09/08/03 19:00:02
WM_KEYのBeginPaintをやめてBitBltのrcPaintを、ウィンドウのクライアント領域を求めて使えばいいんじゃないだろうか
29:デフォルトの名無しさん
09/08/03 19:00:05
AdjustWindowRect
メニュー複数行だと多少工夫が要るが
30:デフォルトの名無しさん
09/08/03 19:50:55
無効領域が無いから、PAINTSTRUCT.rcPaintが空になって、
結果的に何も転送されずに終わっちゃってるんだろうなあ。
BITMAP bm;
GetObject(GetCurrentObject(hmdc,OBJ_BITMAP),sizeof(bm),&bm);
って感じで取ってきたサイズを使えば一応できるな。
根本的な解決策には程遠いけど。
31:デフォルトの名無しさん
09/08/03 19:53:56
21解決しましたすみません
32:デフォルトの名無しさん
09/08/03 20:01:33
AdjustWindowRectってきっちりそのサイズになる?
試しに
SetRect(&rect,0,0,640,480);
AdjustWindowRect(&rect,WS_SYSMENU,FALSE);
としてサイズ指定しても、クライアントサイズは640x480にならなかった
33:デフォルトの名無しさん
09/08/03 20:13:37
どう見てもスタイルの指定がいい加減だからです
34:デフォルトの名無しさん
09/08/03 20:22:26
手抜きしようとするから決め打ちしたりとかするんだろうなあ
35:デフォルトの名無しさん
09/08/03 20:28:24
渡すスタイルってウィンドウスタイルじゃなかった?
36:デフォルトの名無しさん
09/08/03 21:39:57
問題のウィンドウはそのスタイルで表示してるのか?
37:デフォルトの名無しさん
09/08/03 22:16:49
>>36
勿論同じの指定してます
WS_CAPTIONを追加したらサイズが若干変わりましたが
まだ640x480と望むサイズにはなりません
38:デフォルトの名無しさん
09/08/03 22:19:25
これこれを追加したとか手打ちするんじゃなくて
GetWindowLongとGWL_STYLE使ってやってみ
39:デフォルトの名無しさん
09/08/03 22:36:08
>>38
有難う。それも試してみたけど、サイズは変わらず
どうやら640x480にならないようです
多少誤差ありでも、決め打ちしてみます
40:デフォルトの名無しさん
09/08/03 22:38:35
どういうスタイルを設定して、どれくらい差があるのかが気になる
41:デフォルトの名無しさん
09/08/03 22:51:55
ウィンドウの幅と高さにrect.rightとrect.bottomをそのまま渡しちゃってるとか、
ツールバーのサイズを考慮に入れてないとか・・・。
42:デフォルトの名無しさん
09/08/03 22:52:37
>>40
WS_SYSMENU | WS_CAPTIONの二つで
640x476になります
OSはXPでシェルはLiteStepに変えています
43:デフォルトの名無しさん
09/08/03 22:54:37
>>41
サイズを指定する時はきちんと
right - left
bottom - top
としています
ツールバー等は無しで、只単純なウィンドウです
連投すみません
44:22
09/08/03 22:56:22
>>28のやり方でうまく出来ました。ありがとうございます
45:デフォルトの名無しさん
09/08/03 23:09:48
>>42
LiteStepが原因だろ、どうみても。
非公式ツールで変更しまくっている環境は流石にスレ違いだ。
LiteStepのスレで訊けよ。
46:デフォルトの名無しさん
09/08/03 23:13:44
そうかなあ。自分は42のやり方が悪いのだとまだ思っている。
47:デフォルトの名無しさん
09/08/03 23:31:23
LiteStepってちゃんとSystemMetricを利用して動いてるんだろうか
利用してるならAdjustWindowsRectも動作するはずだが
48:デフォルトの名無しさん
09/08/04 07:16:16
>>46
CreateWindowした後に
SetRect( &rect, 0, 0, 640, 480 );
AdjustWindowRect( &rect, GetWindowLong( hWnd, GWL_STYLE ), FALSE );
SetWindowPos( hWnd, NULL, 0, 0, rect.right - rect.left, rect.bottom - rect.top, SWP_NOMOVE );
としています
ずっとLiteStepを使ってきて、他の環境でもあまり問題無かったので意識してませんでしたが
もし、上記やり方に問題が無ければ、LiteStepに原因があるかもしれないですね
49:デフォルトの名無しさん
09/08/04 08:32:30
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
50:デフォルトの名無しさん
09/08/04 09:08:02
互換性でトンデモ仕様になっていく
51:デフォルトの名無しさん
09/08/04 09:46:46
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
52:デフォルトの名無しさん
09/08/04 09:53:32
どこが便乗なんだか
53:デフォルトの名無しさん
09/08/04 10:21:03
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
54:デフォルトの名無しさん
09/08/04 12:30:08
互換性でトンデモ仕様になっていく
55:デフォルトの名無しさん
09/08/04 12:32:37
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
56:デフォルトの名無しさん
09/08/04 14:13:41
何だこの流れ
57:デフォルトの名無しさん
09/08/04 14:20:36
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
58:デフォルトの名無しさん
09/08/04 15:27:42
互換性でトンデモ仕様になっていく
59:デフォルトの名無しさん
09/08/04 15:32:00
だって互換性取れってうるさいんだもん
60:デフォルトの名無しさん
09/08/04 15:32:47
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
61:デフォルトの名無しさん
09/08/04 15:34:46
便乗質問なんだが
Aero有効にしてるとタブとかツールバーとかトンデモ仕様になっていくのが不便だなあ
なんか互換性の為らしいが・・・
62:デフォルトの名無しさん
09/08/04 15:36:40
>>61
えーと、どのへんが質問?
63:デフォルトの名無しさん
09/08/04 15:41:04
知らないならレスしないで下さい。ウザイだけです。
64:デフォルトの名無しさん
09/08/04 16:12:30
だって互換性取れってうるさいんだもん
65:デフォルトの名無しさん
09/08/04 16:14:23
dgtu
66:デフォルトの名無しさん
09/08/04 16:14:35
互換性でトンデモ仕様になっていく
67:デフォルトの名無しさん
09/08/04 16:15:05
いつまで続けるのこれ
68:デフォルトの名無しさん
09/08/04 16:49:16
15498回
69:デフォルトの名無しさん
09/08/04 18:50:38
夏休みが終わるまで続けるよ!
70:デフォルトの名無しさん
09/08/04 19:04:23
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
71:デフォルトの名無しさん
09/08/04 19:05:22
Aeroを無効にすればよい
72:デフォルトの名無しさん
09/08/04 19:05:23
dgtu
73:デフォルトの名無しさん
09/08/04 19:06:40
>>67
涼宮さんが満足する何かがわかるまでです。
74:デフォルトの名無しさん
09/08/04 19:07:32
ネバーエンディング
ム板的にはwhile(true)
75:デフォルトの名無しさん
09/08/04 19:10:34
break;
76:デフォルトの名無しさん
09/08/04 19:11:40
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
77:デフォルトの名無しさん
09/08/04 19:13:16
>>74
警告:条件式が定数です
78:デフォルトの名無しさん
09/08/04 19:14:51
volatile boolean flag;
79:デフォルトの名無しさん
09/08/04 19:16:40
何の言語だよ
80:デフォルトの名無しさん
09/08/04 19:16:43
APIと関係ない話すんな
81:デフォルトの名無しさん
09/08/04 19:20:36
A Pocotan Inshitao
82:デフォルトの名無しさん
09/08/04 19:21:03
Aero有効にしていてGetWindowRect等で正確なサイズを得る方法を教えろ
83:デフォルトの名無しさん
09/08/04 19:26:17
ThemeAPIで頑張って計測、とかいう話じゃなかったっけ?
>>76
タブとかツールバーはクライアント領域の載せているものだから、
その上で空き領域を一定サイズ確保したいというなら当然必要。
84:デフォルトの名無しさん
09/08/04 19:59:08
>>ThemeAPIで頑張って計測
ハズレ
85:デフォルトの名無しさん
09/08/04 20:04:29
うそつくなよw
86:デフォルトの名無しさん
09/08/04 20:15:48
知らないならレスしないで下さい。ウザイだけです。
87:デフォルトの名無しさん
09/08/04 21:45:04
URLリンク(msdn.microsoft.com)(en-us,VS.85,loband).aspx
88:デフォルトの名無しさん
09/08/04 21:50:14
VistaとXPではステータスバーの大きさが異なるんだけど
ステータスバーの大きさって変えられない?
自分でステータスバーもどきのウィンドウ作った方が速いかな?
89:デフォルトの名無しさん
09/08/04 21:55:00
デバッグビルドでLoadLibraryA("MSVCP90.dll")実行するとNULLが返ってくるんだけど、MSってバカなの?何なの?
90:デフォルトの名無しさん
09/08/04 21:58:05
>>88
SB_SETMINHEIGHTとか
91:デフォルトの名無しさん
09/08/04 22:40:01
>>89
side-by-sideアセンブリ
92:デフォルトの名無しさん
09/08/04 23:21:42
CランタイムをLoadLibraryする方がバカ
93:デフォルトの名無しさん
09/08/05 04:12:25
ネットで公開されているAPIってサイドパーティ含めてどのくらいか?
把握している人はエロい
94:デフォルトの名無しさん
09/08/05 06:51:42
は?
95:デフォルトの名無しさん
09/08/05 08:14:32
URLリンク(www.google.com)
Google先生は把握してますが何か?
96:デフォルトの名無しさん
09/08/05 15:58:10
質問です。
ウインドウメッセージを解決するProcの中で、SendMessageをすると、即座に処理される理由がいまいちわかりません。
MessageBoxでも似たような疑問を持った際は「勝手にメッセージ解決ループを作って裏でまわしてくれるんだよ」
といった説明を受けて納得したのですが、今回の件も同様なのでしょうか?
97:デフォルトの名無しさん
09/08/05 16:02:50
>1 つまたは複数のウィンドウへ、指定されたメッセージを送信します。
>この関数は、指定されたウィンドウのウィンドウプロシージャを呼び出し、
>そのウィンドウプロシージャがメッセージを処理し終わった後で、制御を返します。
98:デフォルトの名無しさん
09/08/05 16:03:19
SendMessageが発行したメッセージはちゃんとOSのメッセージキューに入れられて、
該当するウインドウのメッセージループに通知され、
その後メッセージハンドラがコールバックされて
対応するコード上で処理されてるから、即座じゃなくない?
MessageBoxの方も同様で、メッセージボックスがクリエイトされた後、
OS経由でメッセージがMessageBoxのメッセージハンドラに通知されてるよ。
Spy++みるとメッセージの応酬が見られるし。
99:デフォルトの名無しさん
09/08/05 16:16:14
96です。
>>97-98
お返事ありがとうございます。
MSDNの説明を妙に勘違いしていたようです。
::SendMessageはウィンドウプロシージャを直接呼び出すのですね。
実は困っていたのは
case WM_CLOSE:
の中で別のワーカースレッドに停止命令を出し、ワーカースレッドの停止を確認するまでSleepする。
という処理でした。
このとき、ワーカースレッド側でSendMessageされると、フリーズしてしまいます。
これは、メインスレッドがプロシージャで処理中(Sleep中)なのに、他スレッドがプロシージャを呼ぼうとしたので、排他制御された。
ということで合っているでしょうか?
100:デフォルトの名無しさん
09/08/05 16:36:52
>>99
そんな感じ。
URLリンク(msdn.microsoft.com)
のMessage Deadlocksに詳しく書いてある。
101:デフォルトの名無しさん
09/08/05 16:48:44
>>100
ありがとうございます。
・・・そのページ、日本語版のMSDNでは省かれてますね・・・
102:デフォルトの名無しさん
09/08/05 16:50:16
メッセージプロシージャを待ちたくないのなら、PostMessageを使ってみては
103:デフォルトの名無しさん
09/08/05 16:51:04
メッセージプロシージャってなんだ・・・ウィンドウプロシージャでした
104:デフォルトの名無しさん
09/08/05 16:58:57
>>102
色々アドバイスありがとうございます。
タイトルバーの書き換えが目的のため、ポインタ渡しが必要となり、PostMessageでは行えませんでした。
(SetWindowTextは、内部でSendMesssageを呼んでるっぽいですね)
ついでに、報告。
>>100の文書のおかげで
SendMessageTimeout
なる関数を知りました。
タイムアウト値を10msくらいにしておけば、デッドロックが起こらずに済みますね。
こんな関数知りませんでしたわ
105:デフォルトの名無しさん
09/08/05 18:17:49
>>91
winsxsはside by sideで使われてたのか、MSめ・・・
106:デフォルトの名無しさん
09/08/05 20:27:52
>>104
UIの更新はUIスレッドにやらせるのが基本。
文字列は別の場所に置いておいて、
PostMessageでタイトルバーの更新を指示、といった感じで。
107:デフォルトの名無しさん
09/08/06 09:28:29
>>106
いちいちクリティカルセクション使って、文字列渡し合うのか?
108:デフォルトの名無しさん
09/08/06 09:42:38
ロストを許すことなく、きっちり伝えようとするべくクリティカルセクションの出し入れすると
結局 SendMessage のブロッキングと同じでデッドロックにならない?
109:デフォルトの名無しさん
09/08/06 11:28:21
C言語にfopenという関数があるのに
windows APIにもCreateFileという関数があって
どちらを使えばいいのかわかりません。
CreateFileのほうが細かく設定できるという認識だけで
よろしいのでしょうか?
110:デフォルトの名無しさん
09/08/06 11:40:39
ファイルハンドル取得のためには必須なんじゃないの?
勉強中の身だからなんとも言えんけど、
プロに任せれば正しい回答が来るはず
111:デフォルトの名無しさん
09/08/06 11:48:33
fopenはC言語の関数。
C言語が仕様を決め、Windowsが従ってる。
そのため(C言語の仕様が古いため)2GBまでのファイルしか扱えない。
CreateFileはWindowsが提供している関数。
Windows以外で使えないけど、代わりに2GBを超えるファイルも扱えるし、Windows特有のファイル属性なども操作できる。
112:デフォルトの名無しさん
09/08/06 12:33:14
つまりWindows環境ならfopenよりもCreateFileのほうがいいってことか
113:デフォルトの名無しさん
09/08/06 13:07:04
まぁそう考えてもOK
ただし、色々できる=複雑ってことだからそのあたりは臨機応変で。
114:デフォルトの名無しさん
09/08/06 14:15:59
毎回引数7個も書いてるとうざいぜ
fopenで間に合うときはそっちのがシンプルでいいよ
115:デフォルトの名無しさん
09/08/06 17:36:58
>>111
以下コードで 4 GB のファイルが生成できる件について
#include <stdio.h>
#define MEGA_BUF_SIZE (1024 * 1024)
#define OUT_FILE "test.dat"
int main(void)
{
static char buf[MEGA_BUF_SIZE] = { 0 };
int i;
FILE *oFP = fopen(OUT_FILE, "wb");
if(oFP == NULL)
{
perror(OUT_FILE);
return -1;
}
for(i = 0; i < 1024 * 4; i++)
fwrite(buf, 1, sizeof(buf), oFP);
fclose(oFP);
return 0;
}
116:デフォルトの名無しさん
09/08/06 18:15:32
つーかfopenも最終的にはCreateFileを呼んでるんだから当然だろ
>>111こいつバカじゃねーの?
117:デフォルトの名無しさん
09/08/06 19:23:44
fopen で開いたファイル(FILE*)にランダムアクセスする際にfseekでは
32bit幅しか考慮されていないので、2Gの範囲しかアクセスできないと言う
点について、>>111がちょびっとだけカスってる。
#まあ、そもそも fopen の仕様を決めているのはC言語ではないけどね…。
fopen が CreateFile呼んでるから当然使えるってのは、標準関数の仕様と
比べてどうかと言う方向からみるべきなので、短絡的な意見だとは思うが。
118:デフォルトの名無しさん
09/08/06 20:16:53
SEEK_CURを使って2GBずつ進んでいくってのは無理?
119:デフォルトの名無しさん
09/08/06 20:21:26
規格上はその辺り何も規定されてないので処理系に依存する。
120:デフォルトの名無しさん
09/08/06 20:39:15
>>118
VC2008だと、0x7FFFFFFFより後への移動はエラーになって返ってくる。
関数内で、SetFilePointerを上位32ビットを指定せずに呼んでいる為に、
オフセット位置の範囲に制限がかけられている所為だな。
121:デフォルトの名無しさん
09/08/06 20:46:08
使えねー
122:デフォルトの名無しさん
09/08/06 21:25:26
つーか、CreateFileをラップしたクラスを作っとけばいいだろ・・・
そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い
123:デフォルトの名無しさん
09/08/06 21:49:47
そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(キリッ
124:デフォルトの名無しさん
09/08/06 21:54:12
そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(ヌルポ
125:デフォルトの名無しさん
09/08/06 21:57:04
>>124
がっ
126:デフォルトの名無しさん
09/08/06 22:10:06
fopen (笑)
127:デフォルトの名無しさん
09/08/06 22:12:36
C言語 (笑)
128:デフォルトの名無しさん
09/08/06 22:16:42
今時マルチスレッドや巨大ファイルの扱いが規格外なプログラミング言語なんてゴミ
129:デフォルトの名無しさん
09/08/06 22:16:44
ヌルポ (笑)
130:デフォルトの名無しさん
09/08/06 23:04:30
今時ポインタがあるプログラミング言語なんてゴミ
131:デフォルトの名無しさん
09/08/06 23:11:25
と思ってるお前がゴミ
132:デフォルトの名無しさん
09/08/06 23:22:58
ふぉぺん
133:デフォルトの名無しさん
09/08/06 23:26:21
その辺にしとけ
134:デフォルトの名無しさん
09/08/06 23:39:51
何を?
135:デフォルトの名無しさん
09/08/07 00:43:08
ネットワークディレクトリをsamba(smb)共有させる場合、
IEのURL打ち込み欄で
\\hostname.com
で、、このあとアカウントとパスワードを入力するダイアログが表示され
進めるとネットワークディレクトリがマウントできますが、
(Vistaの場合、レジストリを変更してセキュリティポリシーの書き換え必要)
この一連の流れをC++/MFCの環境で記述してマウントさせたいのです。
具体的にどういうAPIを使えばよいか、どういうサイトを参照すればよいか
など教えていただけますでしょうか。
よろしくお願いします。
136:デフォルトの名無しさん
09/08/07 00:53:01
>>135
URLリンク(msdn.microsoft.com)
137:デフォルトの名無しさん
09/08/07 03:59:35
マウントといったら、WNetAddConnection2しか思いつかん
138:デフォルトの名無しさん
09/08/07 06:05:30
それでいい。WebDAV のフォルダもマウントできるし。
139:デフォルトの名無しさん
09/08/07 11:42:31
>>99
なんか微妙に誤解があるような気が……
ウィンドウプロシージャをメッセージ経由で実行する場合は、
必ずウィンドウを作成したスレッドで実行されるのがwindowsの仕様です。
その場合は、このスレッドがSleepさせられているため、SendMessageで
デッドロックするわけです。
140:デフォルトの名無しさん
09/08/07 12:17:19
スレッド間でSendし合うからだろ
141:デフォルトの名無しさん
09/08/07 14:29:26
sendし合うのは問題ない。
別スレッドにSendMessageして、send先から返ってくるのを待ってる間は
別スレッドからのSendMessageを受け付ける事ができる。
142:デフォルトの名無しさん
09/08/07 14:58:05
色んなスレッドからキューに積むだけなら可能
だが、sendされた側がメッセージループでキューを喰い実行してくれないと
呼び出し側はブロックされっぱなしで SendMessage から戻ってこれない
143:デフォルトの名無しさん
09/08/07 15:14:37
141のがあってると思う。
SendMessageから戻って来ない間も、別スレッドからのSendMessageには
即呼び出される。殆ど相手のコンテキストで動いてる感じ。
SendMessageなら戻ってくるまでは他のメッセージが来ないので安心、
と言うことではない。
144:デフォルトの名無しさん
09/08/07 15:19:14
ここのバカ共はReplyMessageも知らんのか
145:デフォルトの名無しさん
09/08/07 15:45:30
ReplyMessage関係あんの?
146:デフォルトの名無しさん
09/08/07 16:08:31
コモンコントロールのウィンドウデータ、端的に言うとGWLP_USERDATAの領域にSetWindowLongPtrで
アプリケーション側の値を設定しているコードがあったんですけど、これって有効なんでしょうか。
ずっとコントロール側が使ってるものと思い込んでいたのですが。。。
147:デフォルトの名無しさん
09/08/07 16:58:33
MSDNくらい読めよ低脳
URLリンク(msdn.microsoft.com)
148:デフォルトの名無しさん
09/08/07 17:05:07
低脳はお前の方だろ
149:デフォルトの名無しさん
09/08/07 17:08:04
いやアナタです
150:デフォルトの名無しさん
09/08/07 17:09:51
いや、俺だ!
151:デフォルトの名無しさん
09/08/07 17:20:31
マジで!?
152:146
09/08/07 17:58:31
タブコントロールとかだと各タブ要素のデータがウィンドウごとに確保されますけど、
GWLP_USERDATAとは全く別の領域に確保されてるんでしょうか。
コモンコントロールをspy++で見ると、ウィンドウバイトが割り当てられていて
それがコントロールが使っているものなのか、アプリケーションに任せているのか僕では判断できません。
コモンコントロールのクラスが定義済みなので、MSの配慮としてアプリケーション用に確保されているのかと
考えてしまいますが、明記されてる記事を見つけることができませんでした。
153:デフォルトの名無しさん
09/08/07 18:04:44
>GWLP_USERDATA
>ウィンドウに関連付けられた値を設定します。
>この 32 ビット値は、<<<<ウィンドウを作成したアプリケーションで使用する目的で>>>>各ウィンドウが持っているものです。
>この値の初期値は 0 です。
この程度の日本語の解釈もできないの?
あんた小学生?
馬鹿なの?
死ねよ
154:デフォルトの名無しさん
09/08/07 18:06:03
おちつけちゃ〜ん
155:146
09/08/07 18:08:25
普通のウィンドウの拡張と同じように、コモンコントロールも後付で作られたクラスなので、
そのアプリケーション用というのが、本当に自作アプリケーションのためなのか、
コモンコントロールの拡張用なのかよくわかりません。
言葉どおり受け取るならそういうことなんですが。。。
156:デフォルトの名無しさん
09/08/07 18:11:57
コモンコントールは拡張ウィンドウメモリを使っていてGWLP_USERDATAは使ってないはず。
でもサードパーティ製のコントロール等はGWLP_USERDATAを使ってる物もある。
Spy++で見れば分かる。
いずれにしろ自作コントロール以外ではプロパティリストを使う方が安全。
157:デフォルトの名無しさん
09/08/07 18:19:05
ま、サブクラスする時はSetWindowSubclass()でいいから
GWLP_USERDATAの使い道なんてほとんど無いけどな
158:デフォルトの名無しさん
09/08/07 18:38:07
スレッドの中で自分で作った関数を呼びまくってるんですが
その関数内でオート変数を使ってるんですが
メモリリークとか大丈夫なんですかね?
159:デフォルトの名無しさん
09/08/07 18:42:10
Win32APIになんか関係あるん?
160:デフォルトの名無しさん
09/08/07 18:47:19
いやごめんなさいくずまったくかんけいないですがごみきいてみたかったんですよ
161:デフォルトの名無しさん
09/08/07 19:29:53
いつの間にかWindows 7 SDKがRMTに
162:デフォルトの名無しさん
09/08/07 19:32:20
アドレス忘れた
URLリンク(www.microsoft.com)
163:デフォルトの名無しさん
09/08/07 19:34:42
RMTじゃリアルマネートレードだろ
164:デフォルトの名無しさん
09/08/07 19:56:01
いつの間にかWindows 7 SKDがRTMに
これでいい?
165:デフォルトの名無しさん
09/08/07 19:58:14
>>163-164
RTM じゃリアルタイムマネーだろ!
166:デフォルトの名無しさん
09/08/07 20:00:09
いつの間にかWindows 7 SDKがATMに
167:デフォルトの名無しさん
09/08/07 20:11:40
それじゃオートメーテッドテラーマシーンだろ
168:デフォルトの名無しさん
09/08/07 22:31:42
もうだめだこのスレ
169:デフォルトの名無しさん
09/08/07 22:37:46
dumpbin /DEPENDENTS みたいに依存するDLL名って、Win32APIではどのように取得するんでしょうか
170:デフォルトの名無しさん
09/08/07 22:58:48
API レベルで用意してるのかなぁ?
PEフォーマットの仕様ははっきりしてるし、
依存DLL名だけ調べるくらいならそんなに難しくないよ。
PEフォーマットについてかなりわかりやすく解説したページが以前はあったんだけど、
今は消滅しちゃってるな。 まぁ、マイクロソフトのページに行けばキッチリした仕様書が入手できる。
171:デフォルトの名無しさん
09/08/07 23:25:37
解説も何も、PEフォーマットなんてせいぜいRVAがウザい程度でしょ
それもimagehlp.dllのAPIを使えば簡単だし
172:デフォルトの名無しさん
09/08/07 23:34:12
>>157
それって、Xp以降専用になるんじゃ……
まあ、それも時代か。
173:デフォルトの名無しさん
09/08/07 23:36:35
2000ってそろそろサポ切れるよな
174:デフォルトの名無しさん
09/08/08 00:06:36
>>170-
ImageDirectoryEntryToDataEx使ってそれっぽいのとれたんですけど、RVAからVAの変換でミスg・・・
よくわかんねー
175:デフォルトの名無しさん
09/08/08 00:52:59
>>172
MSDNにはXP以降と書かれてるけど実際には2000でも使える。
176:デフォルトの名無しさん
09/08/08 08:04:08
Windows7 SDK のISOイメージは、まだx86版しか上がってないのか。
今までと違って、x64環境にはx64用のイメージが必要なのに気付かなかったぜ。
177:デフォルトの名無しさん
09/08/08 09:41:58
>>176
試してないけど、ファイルはあるみたい。
URLリンク(download.microsoft.com)
178:135
09/08/08 16:14:41
>>135のものですが、>>137さんありがとうございます。
その方法で試みていますが、うまくいきません。
具体的には、
LPNETRESOURCE netResource = new NETRESOURCE();
netResource->dwScope = 0;
netResource->dwType = RESOURCETYPE_DISK;
netResource->dwDisplayType = 0;
netResource->dwUsage = 0;
netResource->lpLocalName = ""; // ネットワークドライブにする場合は"z:"などドライブレター設定
netResource->lpRemoteName = "\\\\hostname.com";
netResource->lpProvider = "";
DWORD err = WNetAddConnection2(netResource, "password", "account", CONNECT_UPDATE_PROFILE);
で、戻り値のerrは0になったのですが、マウントがされません。
netResource->lpLocalName = "Z:";
のようにしても、Zドライブに割り当てられません。
何が原因でマウントされないのでしょうか?
マウントされたボリュームが表示されるようにしたいのですが、
どうすればよいか教えてください。
よろしくお願いします。
179:デフォルトの名無しさん
09/08/08 17:59:47
>>177
サンクス。ハッシュも一致していたし、それでOKみたいだ。
180:デフォルトの名無しさん
09/08/08 18:00:32
lpRemoteNameにホスト名だけを指定しているのがまずいような
多分\\\\hostname.com\\folderのようにするはず
で、folderは共有されていなければならなかったはず
181:デフォルトの名無しさん
09/08/08 22:49:32
7で目覚まし動かん
182:デフォルトの名無しさん
09/08/08 23:01:41
相変わらずSDKでけぇなー
.NETとかイラネーし別ファイルにしてくれよ・・・
183:デフォルトの名無しさん
09/08/08 23:04:10
別ファイルにしたら誰も使ってくれなくなるだろ…
VC++ しか使わないのに VB も VC# もついてくるのは抱合せ販売では?
とか思ったけど、いまの Visual Studio って、過去のVisual C++単体と同じくらいの金額なんだよな。
184:デフォルトの名無しさん
09/08/08 23:09:40
それを言ったら昔はSDKやDDKだって有償だったでしょうに
185:デフォルトの名無しさん
09/08/08 23:11:47
無料で何でも揃う割にクリエイティブなティーンが少ない件
186:デフォルトの名無しさん
09/08/08 23:33:24
>>182
ウェブセットアップ版ではだめですか?
187:デフォルトの名無しさん
09/08/08 23:40:10
>>186
> Error: Setup determined that the Microsoft .NET Framework 2.0 is not present or could not be detected.
> Navigate to the Microsoft Download Center, search for .NET Framework 2.0 redistributable, and download the version appropriate for your platform
うぜーーーーーーーーー
188:デフォルトの名無しさん
09/08/09 00:43:32
いいかげんMINMAXマクロ定義するのやめてほしい
189:デフォルトの名無しさん
09/08/09 01:06:45
今更やめられないのは少し考えれば判るだろ
190:デフォルトの名無しさん
09/08/09 01:22:41
NOMINMAXで我慢してください。
191:デフォルトの名無しさん
09/08/09 01:33:08
事情はわかってるがそういう上塗りでのごまかしにはウンザリなんだよ。
ちょっとグチらせてくれや。
192:デフォルトの名無しさん
09/08/09 01:34:28
#include <cstdlib>
#include <limits>
#define NOMINMAX
#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <shlobj.h>
#include <shlwapi.h>
#define STRSAFE_NO_DEPRECATE
#include <strsafe.h>
#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "shlwapi.lib")
こういうのをcommon.hみたいな名前で%include%に放り込んでおけば
#include <common.h>
だけで万事解決
193:デフォルトの名無しさん
09/08/10 13:12:16
LEAN AND MEANもdefineしようぜ
194:デフォルトの名無しさん
09/08/10 13:42:19
windef.hだけインクルードしようとするとコンパイルエラーになるんだがなんでだろう
195:デフォルトの名無しさん
09/08/10 14:25:22
>>193
ソレつけるとかえって#includeの行数が増える事になるし面倒じゃね?
今時の計算機ならコンパイル時間の短縮にほとんど貢献しなさそう
196:デフォルトの名無しさん
09/08/11 10:43:43
メニューを作る際、リソースファイルなどで、「INACTIVE」を指定すると、
選択できない項目にすることができますが、
これを、アプリケーションからInsertMenuItem関数などで動的に追加するときに
適用することはできないでしょうか?
InsertMenuItem関数で使用するMENUITEMUINFO構造体を見ても、
該当するような項目は見当たりませんでした。
よろしくお願いします。 m(_ _)m
197:デフォルトの名無しさん
09/08/11 10:56:45
fState = MFS_DISABLED
198:デフォルトの名無しさん
09/08/11 11:11:44
MFS_DISABLED だとグレーアウトした選択不可
グレーアウトなしの選択不可は MF_DISABLED っぽいが…
# リソースで作ったメニューを GetMenuItemInfo で fState 取得したら 2 だった
# 2 相当のマクロを winuser.h で探すと… MFS_xxx は存在しないっぽい
199:196
09/08/11 11:15:57
>>197
>>198
ありがとうございましたぁ!! 。゜( ゜´∀`゜)゜。
200:デフォルトの名無しさん
09/08/11 15:33:56
MF_DISABLEDはdeprecatedなんだろ
そもそもグレーアウトしないのに選択できないなんてUIとしておかしいし
キーボード操作だと選択できないのが分からない
201:デフォルトの名無しさん
09/08/11 21:24:00
教えてください。レバーコントロールの勉強中です。
レバーコントロールの背景についてです。
エクスプローラみたいにグラデーションのかかった背景にするには
どうしたらできるんですか?
背景としてビットマップを指定できるのは分かったんですけど、
エクスプローラの場合、ウィンドウのサイズを変えると、
背景のグラデーションも動的に変わるようにしたいんです。
202:デフォルトの名無しさん
09/08/11 21:32:55
また肝臓コントロールかよ
203:デフォルトの名無しさん
09/08/11 21:38:11
XPスタイルのコモンコントロールとかなんとかでぐぐれ
204:デフォルトの名無しさん
09/08/11 21:47:38
最近のVCだと自動でXPスタイルのmanifest付けてくれるんじゃないの?
205:デフォルトの名無しさん
09/08/11 22:04:11
デフォ設定だとマニフェストは埋め込まれる
206:デフォルトの名無しさん
09/08/11 22:40:13
マニフェストは埋め込まれるけど、comctl32のバージョン6を使う指定は自分で追加しないといけない。
その最近のVCだとこんな風にpragmaでも書ける。もちろん、リソースでもリンカオプションでも可能。
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' "\
"version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
207:デフォルトの名無しさん
09/08/11 23:47:01
面倒だなあ
#pragma comment(linker,"/manifest:comctlv6")
みたいなオプション用意してくれればいいのに
208:デフォルトの名無しさん
09/08/12 00:19:40
>>192に書いとけばいいよ
209:デフォルトの名無しさん
09/08/12 02:29:38
よく使う割に長いオプションは短縮系的なものが用意されてそうな気はするんだが。
(/nodefaultlib → /nod みたいな)
今度link.exeを逆汗して調べてみるか。
<チラシの裏>
cl.exeに/Bzか/Bdをつけてコンパイるとc1.dllやc2.dllに渡してるコマンドラインが見れる。
</チラシの裏>
210:デフォルトの名無しさん
09/08/12 12:27:53
>>209
マニュアル見ろよ。
211:201
09/08/12 12:34:05
XPスタイルというものだったんですね。
マニフェストのおかげで実現できました。
ありがとうございました。
212:デフォルトの名無しさん
09/08/12 14:02:13
WM_NCPAINTで(HRGN)wParamからGetDCEx取得したHDCを使って描画すると、
思った位置に描画できないのですが、どうしてなんでしょうか。
URLリンク(msdn.microsoft.com)
ここの0x10000を足すやり方でhdcを求めてFillRgnで塗りつぶすと、
クライアント領域にずれ込んでウィンドウフレームの形に塗りつぶされてしまいます・・・
213:デフォルトの名無しさん
09/08/12 17:46:56
>>210
マニュアルに載ってないオプションが大量にあるのを知らないのか
平和な奴だな
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4920日前に更新/100 KB
担当:undef