Win32API質問箱 Build81at TECH
Win32API質問箱 Build81 - 暇つぶし2ch2:デフォルトの名無しさん
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
マニュアルに載ってないオプションが大量にあるのを知らないのか
平和な奴だな

214:デフォルトの名無しさん
09/08/12 18:06:50
煽るな

215:デフォルトの名無しさん
09/08/12 18:54:54
ごめんなさい

216:デフォルトの名無しさん
09/08/12 19:32:00
>>213
あるだろうな。 それがどうした。
公開してないのをむやみに使うんじゃないよ。

217:デフォルトの名無しさん
09/08/12 21:27:51
ウィンドウメッセージでマウスカーソルが入ってくるのはわかるんですが
出て行くのを知る手段はありますか?

218:デフォルトの名無しさん
09/08/12 21:44:39
>>217
入ってきたときMOUSEMOVEをキャプチャするとか。
または入ってきたときタイマで確認し始めるとか。
で、出たらどちらも初期化するとか。

いずれにしても自前で処理する必要がある。

219:デフォルトの名無しさん
09/08/12 21:59:29
WM_MOUSELEAVEはだめ?

220:デフォルトの名無しさん
09/08/12 22:07:32
それが、MOUSEMOVEのキャプチャじゃない?
入ってきたとき、TrackMouseEvent()実行しないとだめだよね。

221:デフォルトの名無しさん
09/08/12 22:11:05
>>218-220
キャプチャってボタン押さなくてもいけるんですね
それとWM_MOUSELEAVEも知らなかったのでその二つを色々試してやってみようと思います
ありがとう

222:デフォルトの名無しさん
09/08/13 20:40:36
上のWM_MOUSELEAVEなのですが
ALT+キーにも反応してしまうのを抑制することは出来ますか

223:デフォルトの名無しさん
09/08/13 21:55:58
出来ます

224:デフォルトの名無しさん
09/08/13 22:12:02
確かに良く考えれば出来ました
LEAVEの中で座標調べて必要ならEvent設定しなおしてやりましたが
何故キーに反応するのかわからない…

225:デフォルトの名無しさん
09/08/14 10:53:15
SPY++が無いため質問させて頂けます
ポップアップメニューを選択した時、メッセージの流れは

WM_EXITMENULOOP
WM_COMMAND

の順になるんですが
WM_EXITMENULOOPがくるまえに確実に選択したメッセージは来ないんでしょうか?

226:デフォルトの名無しさん
09/08/14 20:58:55
Spy++で見れば分かるだろ

227:デフォルトの名無しさん
09/08/14 23:00:09
だからないって言ってんだよ、このスカポンタン。
ボヤッキー、やっちまいな。

228:デフォルトの名無しさん
09/08/14 23:01:44
入れればいいだろうが。

229:デフォルトの名無しさん
09/08/14 23:17:19
Spy++ってネットから落とせたっけ?
俺はVC6買ったら入ってたから、今もそれ使ってるけど

230:デフォルトの名無しさん
09/08/15 00:52:42
VC++をネットから落としてきたら入ってるよ。

231:デフォルトの名無しさん
09/08/15 01:27:20
なんか人聞きが悪いな

232:デフォルトの名無しさん
09/08/15 01:32:20
???

233:デフォルトの名無しさん
09/08/15 01:33:16
プログラマなんだから作れよ

234:デフォルトの名無しさん
09/08/15 01:46:37
自作するとフックやプロセス間通信の勉強になるよね。

235:231
09/08/15 01:49:10
>>232
ネットで落とすってなんか割る感じに聞こえたから


236:デフォルトの名無しさん
09/08/15 01:52:36
今のVisual StudioはExpressのつく製品なら無料でDLできるからなあ

237:231
09/08/15 01:57:13
いや、dreamsparkでってことでしょ
expressionじゃspy++付いてこないし

238:デフォルトの名無しさん
09/08/15 02:05:26
あ…dreamsparkってもう終わってたのね

239:デフォルトの名無しさん
09/08/15 02:59:21
           \
            \
          ∧ニユ/ ̄ヽ
\        ( ´∀/)    i
\.\    _(」つ/とl) .  | \
;::;::\i\  匚レ| .〈/ )    |  \
 。::;;:'\.\   (_,)ー'    |_,, -'''"!
^人;:'::;゚:;.\l\     _,,, -''"|_,, -''"|
 ^^从::;;:。':\.\_,, -''"|_,, -''"|   . :|
 へ ^へ;;::';;:'\l_,, -''" .   | 从^    ~
 ^ ^ヘ^人从::;;;:|    ,ィ人^. |  ^ ^へ^^
  ~ ^.へ' ^':レ^从 へ'  | ~   ^
 へ ^^ へ ~人^ ^  へ~  ~

240:デフォルトの名無しさん
09/08/15 04:00:00
スレリンク(tech板)

241:デフォルトの名無しさん
09/08/15 06:15:12
>>231
この馬鹿はmsdnサブスクリプション知らないの?

242:デフォルトの名無しさん
09/08/15 07:21:18
今少し調べてみたんだが、Spy++に代わりとなるアプリって無いな
あっても正直ショボいから、自分で作ったほうがいいかもな

243:デフォルトの名無しさん
09/08/15 08:43:19
ハァ?Spy++より高機能なアプリなんて山ほどあるだろ

244:デフォルトの名無しさん
09/08/15 09:13:09
そんなことは知ってる
探すぐらいなら自分で作ったほうがいいということだ

245:デフォルトの名無しさん
09/08/15 09:15:41
キャタピラでも再発明しますか

246:デフォルトの名無しさん
09/08/15 09:21:02
>>243
あるなら教えてくれよ。軽く調べたけど俺は見つけられなかった

後、質問なんだが
マウスフックしてる時に、クリックされたウィンドウがポップアップなら処理しない用にしたいんだが
FindWindow( TEXT("#32768"), NULL )で取得したハンドルと
フックで渡されたハンドルが一致しないんだが、何か良い解決策ないかな?

247:デフォルトの名無しさん
09/08/15 12:43:14
>>246
Spy++互換ならWinspectorとか?
高機能かどうかは保証しないけど。

248:デフォルトの名無しさん
09/08/15 21:07:38
>>246
お前の調べ方が悪いだけ

249:デフォルトの名無しさん
09/08/15 21:23:10
2chはツンデレが多いな

250:デフォルトの名無しさん
09/08/15 23:36:19
>>246
>FindWindow( TEXT("#32768"), NULL )
文字列を渡すのが間違いじゃないかな。
MAKEINTATOM(32768)とか。

251:デフォルトの名無しさん
09/08/16 01:52:59
「山田って名前のやつが来たら門前払いしたいんだけど
"山田"で検索したのと顔が一致しないんだが、何か良い解決策ないかな?」
「そいつに名前聞けよ」

252:デフォルトの名無しさん
09/08/16 02:53:09
クラス名が "#32768" ってポップアップメニューなんだけど(ちなみに"#32770"はダイアログ)
>>246 で書いてある「クリックされたウィンドウがポップアップなら」って条件に当てはまるはずがない


253:デフォルトの名無しさん
09/08/16 06:50:20
マウスフックで、クリックされたハンドルがポップアップメニューの場合
#32768でおk?

254:デフォルトの名無しさん
09/08/16 07:22:47
クラスアトムでチェックすればいいだろ
if(GetClassWord(hwnd,GCW_ATOM)==32768){
 //メニュー
}

255:デフォルトの名無しさん
09/08/16 08:46:22
表示してる全てのポップアップメニューの領域を取得する方法ないかな?
単体なら取れるんだけど
MF_POPUPして複数になると、新しく表示されたポップアップメニューしか領域が取れない

256:デフォルトの名無しさん
09/08/16 10:02:07
#32768の全ウィンドウに対してUnionRectすれば求まるだろ
頭使おうな

257:デフォルトの名無しさん
09/08/16 10:34:25
>>256
有難う
#32768の全列挙ってFindWindowEx使う?
一々全ウィンドウを列挙してクラス名を使わないと駄目かな?

258:デフォルトの名無しさん
09/08/16 11:48:11
EnumWindowsを使う方がいいよ
ウィンドウの判別は>>254でもおk

259:デフォルトの名無しさん
09/08/16 14:33:51
>>258
有難うっ
Findで複数32768を取れないか試したけど駄目だった
全列挙してやります

260:デフォルトの名無しさん
09/08/16 16:10:38
ボタンの見た目をサブクラス化してWM_PAINT乗っ取りで変更したいんだけど、ボタンを押したときにデフォルトの描画をされてしまいます。
BM_SETSTATE時にウィンドウプロシジャを介さずに描画してるからっぽいんですが、これを止める方法ありますか?
BM_SETSTATE時に再描画させると一瞬ちらつくし、オーナードローだとプッシュボタン以外使えないし。。。

261:デフォルトの名無しさん
09/08/16 16:55:38
>>260
XP以降かつ、comctl6.0以降を使っていれば、
NM_CUSTOMDRAWが送られてくるから、そこで描画したらどう?

262:デフォルトの名無しさん
09/08/16 23:02:14
>>455
いや、ホントうまいって、騙されたと思って食ってみ
最近嫁に内緒で夜にこれ入れて1合だけ炊いて食べてたんだけど、それがバレて早朝ランニングさせられるようになった…
けど今日も頃合いを見計らって炊くつもり^^あー想像しただけで武者震いがw

断っておくけど、俺の嫁は鬼嫁とかそういうのじゃないからな

263:デフォルトの名無しさん
09/08/16 23:02:55
誤爆

264:デフォルトの名無しさん
09/08/16 23:09:51
脳内嫁ですね分かります

265:デフォルトの名無しさん
09/08/17 00:37:16
バージョン情報って1.01とかあらわすけど
メジャー、マイナー以降のバージョンの名称って何かな?

266:デフォルトの名無しさん
09/08/17 00:50:47
ビルド、リビジョン

267:デフォルトの名無しさん
09/08/17 05:04:37
ビルド番号ってどうやって決まってんの?
単純にビルドした回数にしては1998とか6000とか狙ったような番号だし

268:デフォルトの名無しさん
09/08/17 06:59:42
お好きにどうぞ

269:デフォルトの名無しさん
09/08/17 08:31:54
知らないならレスしないで下さい。ウザイだけです。

270:デフォルトの名無しさん
09/08/17 13:15:28
親ウィンドウ(スレッドA) -子ウィンドウ1(スレッドAの派生スレッドB)
               -子ウィンドウ2(スレッドAの派生スレッドC)
みたいな感じでウィンドウを生成してメッセージ処理させてるんだけど、
子ウィンドウ/スレッドに投げられたメッセージキューを、親ウィンドウ/スレッドに送らないor認識させない方法ってないかな?
親ウィンドウのGet/PeekMessageで、親ウィンドウのハンドルを指定すればいいとか聞いたんだけど
そうするとWM_DESTROYメッセージが送られてきた時点でウィンドウが消滅しててメッセージが取得不能→終了不能になるみたいで。

271:デフォルトの名無しさん
09/08/17 13:49:56
別スレッド上でCreateWindowすればメッセージキュー自体別々になるから
GetMessageでハンドル指定だの気にしなくても親から認識できないのでは

272:デフォルトの名無しさん
09/08/17 16:03:12
自作ファイルを自作プログラムへ関連付けの
設定及び削除ということをやりたいのですが、
(もちろんオプションです)
Winのバージョン違いを吸収するようなAPIはありませんか?

273:デフォルトの名無しさん
09/08/17 16:06:00
関連付けのレジストリなんてWin95以降変わってないだろ

274:272
09/08/17 16:13:31
>>273
.* の位置が
(2k)HKEY_CLASSES_ROOT\
(xp)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
と、違うようなのですが・・・
調べが足りないのでしょうか?

275:デフォルトの名無しさん
09/08/17 16:18:12
それより知能を補給してください

276:デフォルトの名無しさん
09/08/17 16:24:21
全然調べてないみたいだな

277:272
09/08/17 16:28:09
>>276
全然ですか・・・
もう少し調べてみます

278:デフォルトの名無しさん
09/08/17 16:37:42
>>275-276
失せろゴミ

279:デフォルトの名無しさん
09/08/17 16:46:08
そもそもグローバルで効くHKEY_CLASSES_ROOTとユーザーごとのHKEY_CURRENT_USER
なのがおかしいと思わないのかね。

280:デフォルトの名無しさん
09/08/17 16:46:49
GetOpenFileNameを呼んでも、何故かダイアログが表示されません。
一瞬ウィンドウが点滅するだけです。
ソースは以下のものです。erには0が入っています。
原因が分かる方いましたら教えてください。お願いします。

void OpenAviFile(HWND hwnd)
{
  OPENFILENAME openFileName;
  WCHAR filePath[MAX_PATH];
  int er;

  ZeroMemory(&openFileName, sizeof(openFileName));
  openFileName.hwndOwner = hwnd;
  openFileName.lStructSize = sizeof(openFileName);
  openFileName.lpstrFilter = TEXT("AVI files (*.avi)\0*.avi\0")
                   TEXT("すべてのファイル(*.*)\0*.*\0\0");
  openFileName.lpstrFile = filePath;
  openFileName.nMaxFile = MAX_PATH;
  openFileName.Flags = OFN_FILEMUSTEXIST;

  if(er = GetOpenFileName(&openFileName)){
    MessageBox(NULL, filePath, TEXT("成功"), MB_OK);
  }
}

281:デフォルトの名無しさん
09/08/17 16:53:01
未初期化の filePath[] が ゴミで
いきなり OFN_FILEMUSTEXIST から外れているから FALSE で抜ける

282:272
09/08/17 16:53:52
>>279
私が見たサイトの1つでは、
xpになってから HKEY_CURRENT_USER 以下に
関連付けを記述するようになったと書かれていました
95等にも対応するにはバージョンを判別する必要がありそうなので、
APIがあるのかな、と思った次第です

283:280
09/08/17 17:02:10
>>281
指摘された部分を直すと、きちんと動作しました。
本当に助かりました。ありがとうございます。

284:デフォルトの名無しさん
09/08/17 17:31:11
InternetSetOptionのタイムアウトってInternetReadFileにも有効ですか?
InternetOpenのハンドルを使って設定しているのですが、設定時間を
無視してるので教えて下さい。

285:106.79-160-162.customer.lyse.net
09/08/17 17:53:44
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その3
『いつもサボってばかりのキャップがウゼえ』

スレリンク(news4vip板) ID:PVAf+dux0 = 自動焼人 ★
> 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0
> >>69
> 大変って言うか
> 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。
> ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて
> その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから
>
> 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。



----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
スレリンク(sec2chd板)
にて自動焼人 ★までご連絡ください

286:デフォルトの名無しさん
09/08/17 17:56:48
>>282
URLリンク(support.microsoft.com)
Windows2000からユーザー単位での指定もできるようになった。
関連付けは英語だと「File Associations」だから、
それでSDKのドキュメントなりググるなりすれば良い。

287:デフォルトの名無しさん
09/08/17 18:32:42
今どき95に対応するつもりかよw
使えるAPI制限されまくりで大変だろ

288:272
09/08/17 18:40:00
>>286
便利なAPIはないようですね
教えていただいたワードでも調べてみます
ありがとうございました

>>287
私のpcの1つが98seなので
対応しておきたいなぁ、と思いまして・・・

289:デフォルトの名無しさん
09/08/17 18:45:44
HKEY_CLASSES_ROOT以下でいいだろ
XPやVistaでも使える

290:デフォルトの名無しさん
09/08/17 18:58:44
xp以降はHKEY_CLASSES_ROOTに書いても関連付けできないと思っていそうだなw

291:デフォルトの名無しさん
09/08/17 19:17:19
コントロールパネルを列挙する画面を作りたいんだが
コントロールパネルの情報(コメントやファイル名)って全部レジストリ?

292:デフォルトの名無しさん
09/08/17 19:21:24
コントロールパネルのIShellFolderを取ってきてEnumObjectsでおk

293:デフォルトの名無しさん
09/08/17 19:27:31
>>292
有難う!調べてみる!

294:デフォルトの名無しさん
09/08/17 20:24:50
C++でWin32アプリケーションを作っています
下の画像のようなツリービューを作成したいのですがどうすればいいでしょうか?
URLリンク(www.codeproject.com)

295:294
09/08/17 20:30:29
ダイアログならちゃんとツールボックスに用意されてますね
よくも調べもせずスレ汚しました、すみません

296:デフォルトの名無しさん
09/08/18 11:30:31
非同期的なファイルの読み書き
URLリンク(www.geocities.jp)

上のサイトのサンプルをReadFile→WriteFileに変更して(ReadFileだとキャッシュされる?ので非同期の確認ができない)
実行しても非同期にならない
ソース、WriteFile、環境 何が原因?

297:デフォルトの名無しさん
09/08/18 11:49:40
>>296
#define ASYNC_MODE
してるか?

298:296
09/08/18 12:01:19
してる

299:デフォルトの名無しさん
09/08/18 12:27:41
FILE_FLAG_NO_BUFFERINGかFlushFileBuffers を使わないと

300:デフォルトの名無しさん
09/08/18 16:25:30
またソコのHPか

301:デフォルトの名無しさん
09/08/18 19:29:59
猫でも~
WisdomSoft
Programing Place
はよくお世話になっております

302:デフォルトの名無しさん
09/08/18 19:39:47
Programing(笑)

プログラミングの綴りを間違えるサイトは100パーセント糞であるという法則

303:デフォルトの名無しさん
09/08/18 19:41:46
前スレまで貼ってあったのに>>1がテンプレから外すからだろ・・・

つーか「サンプルコードの質問は書いた奴に訊け(ここで訊くな)」をテンプレに入れとけっつーの


304:デフォルトの名無しさん
09/08/18 19:55:38
>>302 が恥をかいてはかわいそうなので一応教えておいてやるが、

programming だけだと思っていたら時代に取り残されるぞ。
今は、programing もあるんだぞ。誤りだと嘲笑すると恥ずかしい目にあうぞ。
嫌いだと主張するのはら抜きと同じで構わないが。

305:デフォルトの名無しさん
09/08/18 20:06:22
本人降臨キタコレwww


>>304
ハイハイ言い訳乙

306:デフォルトの名無しさん
09/08/18 20:14:19
サイト移転してちゃっかりスペル直してるのがワロスw

307:デフォルトの名無しさん
09/08/18 20:14:45
>>305
おまえ、ホントに恥ずかしい奴だな。少しは謙虚に調べるとかしないのか。
URLリンク(www.yourdictionary.com)

言っておくが、本人じゃないよ。

308:デフォルトの名無しさん
09/08/18 20:20:20
どう見ても本人です本当にありがとうございました

309:デフォルトの名無しさん
09/08/18 20:20:33
確かにグーグルで”Programing”で検索した場合に

 もしかして:”Programming”

が出ないな。

310:デフォルトの名無しさん
09/08/18 20:29:03
おまえらなんで辞書引かないの?

311:デフォルトの名無しさん
09/08/18 20:30:27
どうみても>>308のほうが恥ずかしい件

312:デフォルトの名無しさん
09/08/18 20:34:01
辞書を引くから、ちゃんとprogrammingって書いてるんだよ。

うろ覚えでprogramingと書いていて、指摘されて辞書見たらprogramingでもいいとあって
鬼の首を取ったようにprograming連呼してるやつの方が間抜け。

313:デフォルトの名無しさん
09/08/18 20:38:48
>>312の思考で行くとprogramingを鬼の首を取ったように指摘して叩いてる>>302の方が間抜けだと思う。

314:デフォルトの名無しさん
09/08/18 20:39:25
そんな古い辞書は、窓から投げ捨てた方がいいぞ。
ちゃんと最新の英々辞典とか使えよ。
上記辞書サイトの transitive verb にも、ちゃんと、
programming or programing と載ってるだろ。

315:デフォルトの名無しさん
09/08/18 20:40:15
もうだめだこのスレ

316:デフォルトの名無しさん
09/08/18 20:44:46
programingを正当化するんだったら新サイトとやらもprogramingのままにしとけばいいじゃん?

317:デフォルトの名無しさん
09/08/18 20:49:12
Programing Placeの移転先サイトでProgramingをProgrammingに変更した理由がなんか分かった気がする。

318:デフォルトの名無しさん
09/08/18 20:52:56
辞書に載ってるか否かで判断するしか能が無いのか。

319:デフォルトの名無しさん
09/08/18 20:53:53
おまえらオススメのWin32API関係のサイトを教えあう流れになると思ってたのにがっかりだ

320:デフォルトの名無しさん
09/08/18 20:56:04
なんか盛り上がってるなw 本人っぽい人まで来てるし

321:デフォルトの名無しさん
09/08/18 21:05:31
本人なら、サイトをprogramming に変更しないだろ。

322:デフォルトの名無しさん
09/08/18 21:08:42
次移転するときはprogrammmingに決まりだな

323:デフォルトの名無しさん
09/08/18 21:10:30
SEOだろ。
programing・programmingを混ぜて検索サイトにかかりやすくする。

324:デフォルトの名無しさん
09/08/18 21:10:52
どっちでもいいよ。 方言ってことでいいだろ。 英語なんてそんなもんだ。
アフリカとかのグダグダな英語も「英語」だからな。
そんくらいの表記のゆらぎは許容範囲内だ。

325:デフォルトの名無しさん
09/08/18 21:14:31
連中はスペルチェッカーが無いとマトモにスペルが書けないからなw
漢字の筆順が違うだけで先生に怒られる日本とは大違いだぜ。

326:デフォルトの名無しさん
09/08/18 21:20:52
おまいら
いいかげんにしろ

327:デフォルトの名無しさん
09/08/18 21:22:10
間違いでないならどっちでもいいじゃん。
ムキになって指摘してるほうがどうかしてるよ。

328:デフォルトの名無しさん
09/08/18 22:02:53
ムキになっているのは本人だけのような

329:デフォルトの名無しさん
09/08/18 22:22:37
ムキムキマン

330:デフォルトの名無しさん
09/08/19 09:34:04
>>319
MSDNの英語版と非公開APIの解析サイト以外要らないだろ

331:デフォルトの名無しさん
09/08/19 09:52:56
個人のWin32API解説サイトなんて見るだけ時間の無駄
そんなの見てるぐらいならオープンソースソフトのソースコードを読む方がよほど勉強になる。

332:デフォルトの名無しさん
09/08/19 10:23:21
インターネットの設定で同時ダウンロード数の制限を
プログラムから変更したいのですができますか?
手動でレジストリー変更してPC再起動の手順はわかったのですが、
プログラムから変更して再起動無しでやりたいのです。
よろしくお願いします。

333:デフォルトの名無しさん
09/08/19 10:37:29
WinInetのサーバー毎同時接続制限なら
InternetSetOption
INTERNET_OPTION_MAX_CONNS_PER_SERVER
INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER

334:デフォルトの名無しさん
09/08/19 11:09:49
早速のレス有り難うございました。

335:デフォルトの名無しさん
09/08/19 14:23:00
DIBをDIBitsToDeviceとかで描画するときに、
DIB_RGB_COLORSを指定して8ビット以下のDIBも描画できたんですが、
使い方は合っていますか?
8ビット以下のときはカラーテーブル数を調べてから
SetDIBitsToDeviceでDIB_PAL_COLORSを指定して描画するべきなのか
教えてください。

336:デフォルトの名無しさん
09/08/19 20:42:48
>>335
それでOK。
DIB_PAL_COLORSは、BITMAPINFO.bmiColorsが
現在の論理パレットのインデックスを指すのを示すときに使う。
色替えとかが簡単にできる、のかなあ。

337:335
09/08/20 01:36:55
>>336
ビット数を気にしないでDIB_RGB_COLORSを
指定していいことが分かってスッキリしました。
ありがとうございました。

338:デフォルトの名無しさん
09/08/20 09:29:16
デバイス依存じゃないの

339:デフォルトの名無しさん
09/08/20 17:28:25
GDIがデバドラ依存なのはXPまでじゃね?

340:デフォルトの名無しさん
09/08/20 17:53:22
IShellFolderを使い、EnumObjectsでコントロールパネルを列挙して
それぞれのパスを取得しようとしてるんだが、上手く行かない
SHGetPathFromIDListを使ってITEMIDLISTからパス取得使用としてるけど
今回のケースの場合SHGetPathFromIDListって使えない?

341:デフォルトの名無しさん
09/08/20 18:35:39
>>340
そうだよ。ファイルシステムに存在しないものに対して使うと失敗すると解説されているとおり。
URLリンク(msdn.microsoft.com)

342:デフォルトの名無しさん
09/08/20 18:43:15
>>341
有難う!
コントロールパネルそれぞれのパスが欲しいんだけど、ITEMIDLISTからは無理か
良い解決策ないかな?

343:デフォルトの名無しさん
09/08/20 19:00:21
コントロールパネルの項目って実体があるとは限らないから無理じゃないの?
まあ大抵はsystem32\*.cplだろうけど

344:デフォルトの名無しさん
09/08/20 19:06:17
コンパネはいじったことないがあるとすればレジストリかなぁ
レジストリ用のSHGetFolderPathみたいなのがあればなぁ・・・

345:デフォルトの名無しさん
09/08/20 19:38:08
つーかパスなんか取得して何をするつもりなの?

346:デフォルトの名無しさん
09/08/20 21:02:36
>>343
やっぱり今の手法じゃ無理かな…
管理ツールとか、只そのカテゴリ分けされてるだけだしね

>>344
コントロールパネルもdllだから、GetProcAddressから内部情報を取得する方法があるんだけど
どうやらこれは任意らしいので、必ずしも情報を返さないんだよね…
調べると大部分がレジストリで管理とのこと

>>345
只起動するだけなら、ITEMIDLISTからで大丈夫だけど
今は*.cplを取得して、それぞれのcplの場所が知りたいの

347:デフォルトの名無しさん
09/08/20 21:53:21
だったらsystem32\*.cplを片っ端からLoadLibrary→GetProcAddress("CPlApplet")で調べればいいだろ

348:デフォルトの名無しさん
09/08/20 22:00:44
>>347
それは試したよ。片っ端からCPL_NEWINQUIREで情報貰おうとしても
〝プログラムの追加と削除”とかのコメントが取得出来ない
調べると、CPL_NEWINQUIREで情報取る仕様のはずが、殆どがレジストリ管理とのこと

349:デフォルトの名無しさん
09/08/20 22:15:26
そいつはレジストリ側に登録されるタイプだからだろ。

350:デフォルトの名無しさん
09/08/20 22:26:47
コントロールパネルの実体がcplとは限らないのに、
cplの場所が知りたいとか矛盾してないか?

351:デフォルトの名無しさん
09/08/20 22:43:33
質問お願いします

ChooseFontのフックプロシージャに適用ボタンを押したときの処理を書いてますが
サイズコンボボックスの値が999を超える場合の処理を
以下のように書いてみましたが


SendDlgItemMessage(hDlg, cmb3, WM_GETTEXT, sizeof(TCHAR) * 6, (LPARAM)FontSizeText);
if(wcstoul(FontSizeText, NULL, 0) > 999) //サイズコンボボックスの値が999を超える場合
{
MessageBox(hDlg, L"サイズには 0 から 999 ポイントを指定してください。", L"フォントの設定", MB_OK | MB_ICONINFORMATION);
}


これは例えばSendMessage(hDlg, WM_CHOOSEFONT_GETLOGFONT, NULL, (LPARAM)&Font)みたいに
SendMessageでメッセージを送信して一発で出来るメッセージは何かありますか?
(ChooseFont構造体のnSizeMaxメンバに999を設定済み)

352:デフォルトの名無しさん
09/08/20 22:46:28
そんな事より sizeof(TCHAR) * 6 は間違いだろ

353:デフォルトの名無しさん
09/08/20 23:19:23
>>352
すいません、まだC言語とWin32APIを始めて半年ちょっとの初心者なので
(TCHAR FontSizeText[6](サイズコンボボックスの最大文字数が5文字の為))
と宣言したので(sizeof(TCHAR) * 6)としてしまいました
模範的な方法はどうしたらいいですか?

354:デフォルトの名無しさん
09/08/21 00:13:48
WM_GETTEXTLENGTH の戻り値を使う。

355:デフォルトの名無しさん
09/08/21 01:23:37
そしてGetDlgItemIntのことも思い出してやってください
え、サイズは0.5ポイント単位で入れられる? いいんだよ細けぇことは

356:デフォルトの名無しさん
09/08/21 03:54:07
Vistaで自プロセスが昇格しているかしていないかを取得するにはどうしたら良いのでしょうか
ご指導のほどお願いします

357:デフォルトの名無しさん
09/08/21 04:18:00
GetTokenInformationでTokenElevationTypeかTokenElevation

358:デフォルトの名無しさん
09/08/21 04:57:21
>>357
なんとかなりました
こんな夜中にありがとうございました

359:デフォルトの名無しさん
09/08/21 06:05:22
IsUserAnAdminじゃ駄目なの?

360:デフォルトの名無しさん
09/08/21 07:07:11
ダメ

361:デフォルトの名無しさん
09/08/21 07:29:16
駄目じゃないだろ

362:デフォルトの名無しさん
09/08/21 07:35:01
UACがONの状態でProgram Files配下のファイルを書き換えても
VirtualStoreにリダイレクトされていないようなのですが
Windows 7からUACの挙動は変わったのでしょうか?
エクスプローラに"互換性ファイル"ボタンも表示されません。
けどなぜか新しくファイルを作成するのには失敗するんです・・・

363:デフォルトの名無しさん
09/08/21 08:27:25
ハァ?

364:デフォルトの名無しさん
09/08/21 12:29:23
>>362
そのプログラムにマニフェストがついているのでは?
例えUAC関連の記述がなかったとしても、マニフェストがあると
UAC対応済みとして扱われ、仮想化が働くなる。

365:デフォルトの名無しさん
09/08/21 13:02:31
64bitじゃないの?

366:デフォルトの名無しさん
09/08/21 21:53:04
VisualStudioが自動的にUAC関連のマニフェストを組み込んでいたみたいです
おさわがせしました

367:デフォルトの名無しさん
09/08/21 23:10:06
>>354
ありがとうございます、3文字以内に制限する方法があったんですね

>>355
そんな便利な関数知りませんでした、500ポイント以内とかにする場合にいいですね
細かい事は気にせず使ってみたいと思います、ありがとうございました

368:デフォルトの名無しさん
09/08/21 23:23:04
そういえばWM_GETTEXTLENGTHで0x10000000とか返してくるソフトがあったな

369:デフォルトの名無しさん
09/08/21 23:27:19
アバウトな・・・

370:デフォルトの名無しさん
09/08/21 23:59:23
WM_GETTEXTLENGTHで0x7fffffff以上の値を返すコントロールを仕込んでおけば脆弱なソフトを落とせそうだw

↓こういうの
int len = SendMessage(hwnd,WM_GETTEXTLENGTH,0,0)+1;
LPWSTR buffer = malloc(len*sizeof(wchar_t));

371:デフォルトの名無しさん
09/08/22 13:35:03
やるなよ
絶対やるなよ

372:デフォルトの名無しさん
09/08/23 00:08:08
WM_TIMERからTrackPopupMeueを呼ぶと
表示したポップアップメニューの関係無い所をクリックしても
ポップアップメニューが消えないんだが
マウスフックを使わずにポップアップメニューを消す方法ないかな?

373:デフォルトの名無しさん
09/08/23 00:36:42
試したところ普通に消えたぞ
消してもWM_TIMERがまた送られたら表示されるが

374:デフォルトの名無しさん
09/08/23 01:17:05
Windows7で試したのだが、
ポップアップ表示前に他アプリのウィンドウをアクティブにしておくと、
表示後はポップアップのメニュー項目をクリックするか、
親アプリをクリックしない限り消えない。

GetForegroundWindowが自アプリでなけれぱ表示しない、
とかの消極的な解決方法しか思いつかないな。

375:デフォルトの名無しさん
09/08/23 01:51:42
>ポップアップ表示前に他アプリのウィンドウをアクティブにしておくと、
>表示後はポップアップのメニュー項目をクリックするか、
>親アプリをクリックしない限り消えない。
なるほど、そういうことか
こっちvistaだけど同じようになったわ
ようは、他アプリのウインドウ上でメニューが表示されたらまずいわけか

これは難しいね
確かにマウスフックして、親アプリのスレッドからEndMenuを呼び出すしかなそう

376:デフォルトの名無しさん
09/08/23 03:36:58
aho hakken

377:デフォルトの名無しさん
09/08/23 09:06:46
DirectInputでも出来るらしいが、それならフックした方が簡単
フック無しで消す方法は俺は知らない

378:デフォルトの名無しさん
09/08/23 10:38:50
>>375
あるいは自アプリを強制的にフォアグラウンドにしてからメニューを出すかだろ。

379:デフォルトの名無しさん
09/08/23 13:10:59
>>378
試してみたが駄目だった

380:デフォルトの名無しさん
09/08/23 15:28:33
>ポップアップ表示前に他アプリのウィンドウをアクティブにしておくと、
>表示後はポップアップのメニュー項目をクリックするか、
>親アプリをクリックしない限り消えない。

こんなの常識だろ
通知領域でポップアップメニュー出したこと無いのか?

381:デフォルトの名無しさん
09/08/23 16:31:21
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!

382:デフォルトの名無しさん
09/08/23 18:30:52
>>380
アフォ発見w

383:デフォルトの名無しさん
09/08/23 19:18:20
>>379
Win98以降、単にSetForegroundWindowを使っただけでは
フォアグラウンドウィンドウにならない場合があるが、それも考慮済み?

384:デフォルトの名無しさん
09/08/23 19:27:35
>>382
アフォはお前だよw

385:デフォルトの名無しさん
09/08/23 19:38:25
WM_TIMERでポップアップメニューとかどんなウイルスだよw

386:デフォルトの名無しさん
09/08/23 21:02:28
そんな事よりexplorerが落ちた後ちゃんと
通知領域に復帰するように作っとけよ

387:デフォルトの名無しさん
09/08/23 21:06:53
>>383
それは知らなかった
確実にフォアグラウンドする方法ってまた別にあるの?

388:デフォルトの名無しさん
09/08/23 21:11:55
MSがするなって言ってんだよ

389:デフォルトの名無しさん
09/08/23 21:47:40
Win95の頃は、皆が好き勝手にフォアグラウンド化しようとして
えらい事になっていたからなあ。
あまりの鬱陶しさにユーザーが切れた結果、Win98以降でこうなった。

390:デフォルトの名無しさん
09/08/23 22:50:07
>>386
explorerが面倒見ろっつーの
なんでポンコツなシェルの尻拭いをアプリ側がせにゃならんのだ

391:デフォルトの名無しさん
09/08/23 22:56:03
>>389
想像で物を語るな

392:デフォルトの名無しさん
09/08/23 23:00:22
>>391
では真実を教えてたもれ。

393:デフォルトの名無しさん
09/08/23 23:17:01
むかしむかし、Win98がまだベータ版だった時代のお話。
Win98はWin95に比べて多くのコードを書き直したため、
SetForegroundWindowでフォアグラウンドできないという
バグが混入してしまった。
しかし、今からこのバグを修正するにはスケジュールが
間に合わなくなるという事態が発覚。
ただでさえ、Win97を出すつもりが延期してしまっている。
もうこれ以上の延期は許されない。
散々悩んだ挙句、開発チームの出した結論は
「仕様ということにして何とかユーザーに納得してもらう」
だった。で、社内で尤もらしい言い訳を公募して採用されたのが

「好き勝手にフォアグラウンドしてはいけません。だから、・・・できません!」

394:デフォルトの名無しさん
09/08/23 23:29:29
>>393
想像で物を語るな

395:デフォルトの名無しさん
09/08/23 23:43:49
妄想には妄想で返せってこった

396:デフォルトの名無しさん
09/08/23 23:53:46
>>389 って事実だろ。漏れMSの中の人に同じこと聞いたことあるお。

397:デフォルトの名無しさん
09/08/24 01:07:44
自己フォロー乙

398:デフォルトの名無しさん
09/08/24 01:09:42
>>397
事実じゃないって事?

399:デフォルトの名無しさん
09/08/24 01:29:05
Win98/2000の頃のMSDNライブラリを持ってくれば、
ユーザーフィードバックを理由に変更した事の旨が書かれているんだろうけど。
流石に10年近く昔の話だしなあ。
そもそも、Win95/NT4まで好き放題できていた事実自体、どれだけ知っている人がいるのやら。

400:デフォルトの名無しさん
09/08/24 01:42:20
>>399
書かれてない。嘘はつかないように

401:デフォルトの名無しさん
09/08/24 01:53:50
>>399
おっさんの妄想乙

402:デフォルトの名無しさん
09/08/24 02:10:21
>>380
これ、英語版MSDNにはちゃんと書いてあるんだが日本語版にはないんだよな。
URLリンク(msdn.microsoft.com)

403:デフォルトの名無しさん
09/08/24 06:26:10
explorerが落ちたことを検知するにはポーリングするしかないの?

404:デフォルトの名無しさん
09/08/24 06:30:30
なんのために?

405:デフォルトの名無しさん
09/08/24 06:50:07
>>403
通知が来る

406:デフォルトの名無しさん
09/08/24 10:46:40
落ちたことを検知する方法なんて無いでしょ

407:デフォルトの名無しさん
09/08/24 10:51:58
ログオフなどによる正常な終了と落ちたことを区別するのは困難だな

408:デフォルトの名無しさん
09/08/24 13:42:20
>>404
>>386
タスクマネージャー消失が地味に困る

409:デフォルトの名無しさん
09/08/24 13:55:43
>>408
それはexplorerが落ちたときにどうするつもりなの?
普通は再起動時に何とかするもんじゃないかね。
TaskbarCreated を RegisterWindowMessageして通知来たら再登録でいいじゃない。

410:デフォルトの名無しさん
09/08/24 14:14:57
GetOpenFileNameでファイル選択ダイアログを開くと
選択したファイルを右クリックしても、ポップアップメニューが表示されない事があるんだが
これはどういう場合に発生する?

411:デフォルトの名無しさん
09/08/24 14:48:06
・シェルが落ちて再起動したらTaskbarCreatedを送ってあげるのでソフト側で対応しろ
・シェルが4秒以上ハングアップしてるとタイムアウトしてあげるので
APIが失敗した場合はLastErrorチェックしてソフト側で対応しろ

落ちたりハングアップしないシェルを作れよw

412:デフォルトの名無しさん
09/08/24 14:50:00
いやユーザーが強制的に落とすこともできるし

413:デフォルトの名無しさん
09/08/24 15:19:01
タスクバーのプロセスをシェルから分離して、フックなどの侵入を許さない設計にすればいいのにねぇ

ま、そうなるとTClock愛好者は困るだろうけどw

414:デフォルトの名無しさん
09/08/25 03:49:44
case WM_TIMER:
hoge() ;
break ;

見たいな感じでsettimerでセットした時間で呼び出す関数hogeがあったとして
前回のhogeの実行が終わってない状態で時間が来てhogeが呼び出された
場合どういう風に処理されるんでしょうか?

415:デフォルトの名無しさん
09/08/25 03:55:41
どうしてそういう心配をしないといけないのかさっぱりわからない

416:デフォルトの名無しさん
09/08/25 06:51:48
メッセージのヘルプぐらい読めよとしか言いようがない。

417:デフォルトの名無しさん
09/08/25 09:45:31
>>414
メッセージは1つずつ順番に処理される。
1回目のWM_TIMER呼び出しからreturnされていないのなら、その他のメッセージが処理されることはない。

ついでにいうと、hoge()が処理している間ウインドウを動かすメッセージとかも処理されないわけだから、
ウインドウが固まったようにユーザーは思うはず。
メッセージ処理の中であまり思い処理をやらないように

418:デフォルトの名無しさん
09/08/25 10:11:44
WM_TIMER のなかで無限ループしてる人ときどき見かけるよね

419:デフォルトの名無しさん
09/08/25 10:43:24
その場合はhogeが延々と呼び出され続けるのでプログラムがハングアップしてしまう
そこでメッセージ処理の中ではあまり重い処理をやらないようにしなければならない

初期のWindowsのころはハードウェアの処理能力が少なかったのでよくPCがフリーズしたが
最近は十分な処理能力があるので少々重い処理をしても大丈夫になった

420:名無し学生
09/08/25 10:56:43
Visual Basic の課題で困っております。
誰かお答えください。本当に助けてください。

1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて

2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
  その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。

3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
  何故そのような制限があるかについて理由を答えよ
  1) 48 x 100 - 81
  2) 12 ÷ 9.3 x 247
  3) 0.2 - 12 ÷ 69
  4) -12 ÷ 100 + 100

421:デフォルトの名無しさん
09/08/25 11:06:23
URLリンク(www.google.co.jp)()%E3%81%A8Str()%E3%81%AE%E9%81%95%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=

422:デフォルトの名無しさん
09/08/25 11:54:10
助ける訳ねーだろ
このスレには弱者蹴り落として喜ぶサドしかいねーよ

423:デフォルトの名無しさん
09/08/25 11:56:18
>>420
スレ違いしねくず

424:デフォルトの名無しさん
09/08/25 12:03:54
>>419
ウィンドウプロシージャは10ミリ秒以内に処理を返せみたいな制限があったはず
今はどうだか知らないけど

425:デフォルトの名無しさん
09/08/25 12:17:58
マルチポスト報告スレ
スレリンク(tech板)

スレリンク(tech板:688番)
スレリンク(tech板:183番)
スレリンク(tech板:793番)
スレリンク(tech板:388番)
スレリンク(tech板:601番)
スレリンク(tech板:408番)
スレリンク(tech板:711番)
スレリンク(tech板:279番)
スレリンク(tech板:60番)
スレリンク(tech板:937番)
スレリンク(tech板:963番)
スレリンク(tech板:547番)
スレリンク(tech板:861番)
スレリンク(tech板:420番)

426:デフォルトの名無しさん
09/08/25 12:20:22
運営に報告すればいいだろ

427:デフォルトの名無しさん
09/08/25 13:59:18
アプリケーション内でユニークなIDを発行するAPIはありますか?
インスタンス全てにIDを付けたいのですが・・・


428:デフォルトの名無しさん
09/08/25 14:05:33
>>420
課題やってみた。

1.CStr は漢数字 (chinese string の略)、Str はアラビア数字。

2.
Function Func() As String
 Return "違い"
End Function
'確認
MessageBox.Show(Func())

"違い" と書かれたメッセージ ボックスが表示されることから、
関数 Func() において、戻り値の "違い" が確認できる。

3.
1) “約 4000”
2) “約 300”
3) “約 0”
4) “実行時エラー: -12 って何?おいしいの?”

以上から、Visual Basic の中の人は算数が苦手な小学生と考えられる。

429:デフォルトの名無しさん
09/08/25 14:05:37
カウントしてけばいいだけ

430:デフォルトの名無しさん
09/08/25 15:50:08
>>427
インスタンスのアドレスはユニーク。


431:デフォルトの名無しさん
09/08/25 15:54:55
>>430
不要物を解放できなくないか

432:デフォルトの名無しさん
09/08/25 16:01:33
ハァ?

433:デフォルトの名無しさん
09/08/25 16:06:47
不要物って何だ

434:デフォルトの名無しさん
09/08/25 16:19:20
老廃物にきまってるだろ

435:デフォルトの名無しさん
09/08/25 16:30:47
nullpo

436:デフォルトの名無しさん
09/08/25 16:45:17
>>417-419
丁寧にありがとうございます!
やっと今自分のプログラムで起きてることが
理解できました(^ω^;)

437:デフォルトの名無しさん
09/08/25 17:24:40
>>427 uuidなんかどうよ

438:デフォルトの名無しさん
09/08/25 17:45:43
だからそもそもインスタンス自体がユニークだろが

439:デフォルトの名無しさん
09/08/25 17:47:00
アプリケーション内でって言ってんだからアドレスで十分だわ

440:デフォルトの名無しさん
09/08/25 18:00:18
解放後に同じアドレスを割り当てられても問題が無いのか

441:デフォルトの名無しさん
09/08/25 18:01:49
開放後もID持ち続けるとかどういうクソ構造だよ

442:デフォルトの名無しさん
09/08/25 18:42:53
438-441
ワロタ

443:デフォルトの名無しさん
09/08/25 20:36:44
笑う所なんて無いじゃん
頭おかしいのか?

444:デフォルトの名無しさん
09/08/25 20:38:01
ユニークだからか?

445:デフォルトの名無しさん
09/08/25 20:53:26
Vous ette original hahaha.

446:デフォルトの名無しさん
09/08/25 23:23:06
UNICODEにも対応するプログラムを書くときに
文字列を受け取る処理を書くときって

TCHAR szBuffer[256];
sizeof(szBuffer) / sizeof(szBuffer[0])

ってやらないと駄目だよね?

UNICODEだと、szBufferはwchar_tだから、sizeof(szBuffer)だと512になるから
文字列を受け取るバッファサイズは512になるから、問題出てくるよね?

447:デフォルトの名無しさん
09/08/25 23:26:16
>>440 そのアドレスをどこからも参照しなくなるから開放するわけで、仮に同じアドレスが割り当てられたとしても問題ない。
開放したアドレスの参照を持ち続けているほうが問題。

shared_ptrを使えばアドレスをオブジェクトを区別するユニークなIDとして使える。

448:デフォルトの名無しさん
09/08/25 23:29:36
このスレ的にはshared_ptrよりむしろIUnknown継承+_comptr_t

449:デフォルトの名無しさん
09/08/26 11:01:26
普段画面を隠して、マウスがある位置に来たら表示するようにしたくて

ShowWindow
SetForegroundWindow
SetFocus

を利用して表示してるんだが
中途半端な表示されてるのか
一度画面をクリックして完全にアクティブにしないと
フォーカスがセットされない

何かいい解決策ないかな?

450:デフォルトの名無しさん
09/08/26 11:44:28
いい方法はない

悪い方法1
SPI_SETFOREGROUNDLOCKTIMEOUT
悪い方法2
グローバルフックなどのコードインジェクションでアクティブスレッドから無理矢理変更

451:デフォルトの名無しさん
09/08/26 11:54:48
悪い方法3
AttachThreadInput

452:デフォルトの名無しさん
09/08/26 12:00:10
>>450-451
悪い方法しかないのかw
一応一通り試してみるよ
有難う!

453:デフォルトの名無しさん
09/08/26 13:03:08
>>452
いや、だって、普通に操作してるとき、唐突に他のウインドウがフォーカス奪ったら嫌じゃね?
しかも奪いっぱなしだったらさらに嫌じゃね?
だからできないようにできてるんだって。

454:デフォルトの名無しさん
09/08/26 13:07:54
妄想で物を語る人が出てくる予感。

455:デフォルトの名無しさん
09/08/26 14:26:58
というかそんなのウィルスだろ。

456:デフォルトの名無しさん
09/08/26 14:32:05
お前の脳みそがな

457:デフォルトの名無しさん
09/08/26 14:52:21
MSDNの低帯域モードで表示がバグってるんだが俺だけ?
URLリンク(msdn.microsoft.com)(VS.85,loband).aspx

FirefoxどころかIEでもおかしいので困ってる。

458:デフォルトの名無しさん
09/08/26 14:54:24
いや、バグってる確かに

459:デフォルトの名無しさん
09/08/26 15:36:01
開発者ツールでつついて見たんだが、とりあえずユーザーCSSに↓を追加で回避できた。
div.libCScode { clear: none !important; }

IE8で互換表示をオンにすると崩れないのがワロスw
なんでIE6/7向けのCSSをIE8や火狐に送ってんだよwww

460:デフォルトの名無しさん
09/08/27 12:23:42
>>435
ga

461:デフォルトの名無しさん
09/08/27 21:51:29
>>212なんですが、重ねて質問します
Web上でのコードなどはGetDC(hwnd)などとして描画していて、wParamの値を使っていませんが
メッセージのwParamで渡されるハンドルは一体何に使えるんでしょうか

462:デフォルトの名無しさん
09/08/27 22:16:37
クリッピングされていると書いてあるだろう。
いったい何が聞きたいんだ?

463:デフォルトの名無しさん
09/08/27 22:29:00
そのFillRgnしたらずれた位置に描画が起こってしまうんですけど、
どういった領域をあらわしてるんでしょうか

464:デフォルトの名無しさん
09/08/27 22:31:25
クライアント領域のDCを取得してるからだろ

465:デフォルトの名無しさん
09/08/27 22:43:25
では>>212のページに書いてあるのとは違う方法でHDCを取得する必要があるということですか


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch