トップページ⇒tech
1001コメント269KB

Win32API質問箱 Build81

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2009/08/02(日) 00:20:49
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。
「知らないならレスしないで下さい。ウザイだけです。 」なんて言わないでねっ!

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

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

- Win32API質問箱 wiki
http://wiki.livedoor.jp/program1/d/FrontPage

Win32API質問箱 Build80
http://pc12.2ch.net/test/read.cgi/tech/1244057140/l50
0002デフォルトの名無しさん2009/08/02(日) 00:22:46
MSDN
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/
http://msdn.microsoft.com/en-us/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=74dd6e2d-89c6-4e1e-af00-fc7d70f15439&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=c2b1e300-f358-4523-b479-f53d234cdccf&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

書籍
- Advanced Windows 第5版
http://www.amazon.co.jp/dp/4891005920
0003デフォルトの名無しさん2009/08/02(日) 00:23:34
80 ttp://pc12.2ch.net/test/read.cgi/tech/1244057140/
79 ttp://pc12.2ch.net/test/read.cgi/tech/1240411224/
78 ttp://pc12.2ch.net/test/read.cgi/tech/1238289377/
77 ttp://pc12.2ch.net/test/read.cgi/tech/1235494464/
76 ttp://pc11.2ch.net/test/read.cgi/tech/1233622578/
75 ttp://pc11.2ch.net/test/read.cgi/tech/1231423602/
74 ttp://pc11.2ch.net/test/read.cgi/tech/1229239827/
73 ttp://pc11.2ch.net/test/read.cgi/tech/1227934931/
72 ttp://pc11.2ch.net/test/read.cgi/tech/1226575789/
71 ttp://pc11.2ch.net/test/read.cgi/tech/1224745158/
70 ttp://pc11.2ch.net/test/read.cgi/tech/1221446107/
69 ttp://pc11.2ch.net/test/read.cgi/tech/1217687038/
68 ttp://pc11.2ch.net/test/read.cgi/tech/1215348804/
67 ttp://pc11.2ch.net/test/read.cgi/tech/1212931246/
66 ttp://pc11.2ch.net/test/read.cgi/tech/1210775622/
65 ttp://pc11.2ch.net/test/read.cgi/tech/1208847084/
64 ttp://pc11.2ch.net/test/read.cgi/tech/1207099291/
63 ttp://pc11.2ch.net/test/read.cgi/tech/1204600558/
62 ttp://pc11.2ch.net/test/read.cgi/tech/1202060403/
61 ttp://pc11.2ch.net/test/read.cgi/tech/1199514664/
60 ttp://pc11.2ch.net/test/read.cgi/tech/1196874830/
59 ttp://pc11.2ch.net/test/read.cgi/tech/1194701996/
58 ttp://pc11.2ch.net/test/read.cgi/tech/1191781463/
57 ttp://pc11.2ch.net/test/read.cgi/tech/1189255282/
56 ttp://pc11.2ch.net/test/read.cgi/tech/1186989201/
55 ttp://pc11.2ch.net/test/read.cgi/tech/1184853465/
54 ttp://pc11.2ch.net/test/read.cgi/tech/1181645965/
53 ttp://pc11.2ch.net/test/read.cgi/tech/1178882828/
52 ttp://pc11.2ch.net/test/read.cgi/tech/1176828891/
51 ttp://pc11.2ch.net/test/read.cgi/tech/1174416295/
0004デフォルトの名無しさん2009/08/02(日) 00:24:39
50 ttp://pc11.2ch.net/test/read.cgi/tech/1171721448/
49 ttp://pc10.2ch.net/test/read.cgi/tech/1168708801/
48 ttp://pc10.2ch.net/test/read.cgi/tech/1166172047/
47 ttp://pc8.2ch.net/test/read.cgi/tech/1163375772/
46 ttp://pc8.2ch.net/test/read.cgi/tech/1159158014/
45 ttp://pc8.2ch.net/test/read.cgi/tech/1156032806/
44 ttp://pc8.2ch.net/test/read.cgi/tech/1151501925/
43 ttp://pc8.2ch.net/test/read.cgi/tech/1148005509/
42 ttp://pc8.2ch.net/test/read.cgi/tech/1144962549/
41 ttp://pc8.2ch.net/test/read.cgi/tech/1141392216/
40 ttp://pc8.2ch.net/test/read.cgi/tech/1138893959/
39 ttp://pc8.2ch.net/test/read.cgi/tech/1136673250/
38 ttp://pc8.2ch.net/test/read.cgi/tech/1133798345/
37 ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/
36 ttp://pc8.2ch.net/test/read.cgi/tech/1128951330/
35 ttp://pc8.2ch.net/test/read.cgi/tech/1125850096/
34 ttp://pc8.2ch.net/test/read.cgi/tech/1122723009/
33 ttp://pc8.2ch.net/test/read.cgi/tech/1120153520/
32 ttp://pc8.2ch.net/test/read.cgi/tech/1117271829/
31 ttp://pc8.2ch.net/test/read.cgi/tech/1114762194/
30 ttp://pc8.2ch.net/test/read.cgi/tech/1112345886/
29 ttp://pc8.2ch.net/test/read.cgi/tech/1110281860/
28 ttp://pc5.2ch.net/test/read.cgi/tech/1108199304/
27 ttp://pc5.2ch.net/test/read.cgi/tech/1106103119/
26 ttp://pc5.2ch.net/test/read.cgi/tech/1104109858/
0005デフォルトの名無しさん2009/08/02(日) 00:25:22
25 ttp://pc5.2ch.net/test/read.cgi/tech/1101393155/
24 ttp://pc5.2ch.net/test/read.cgi/tech/1098967135/
23 ttp://pc5.2ch.net/test/read.cgi/tech/1095534704/
22 ttp://pc5.2ch.net/test/read.cgi/tech/1092524669/
21 ttp://pc5.2ch.net/test/read.cgi/tech/1090422324/
20 ttp://pc5.2ch.net/test/read.cgi/tech/1088140233/
19 ttp://pc5.2ch.net/test/read.cgi/tech/1084697545/
18 ttp://pc5.2ch.net/test/read.cgi/tech/1081702990/
17 ttp://pc5.2ch.net/test/read.cgi/tech/1077470361/
16 ttp://pc2.2ch.net/test/read.cgi/tech/1073830065/★
15 ttp://pc2.2ch.net/test/read.cgi/tech/1069339866/★
14 ttp://pc5.2ch.net/tech/kako/1065/10653/1065328397.html
13 ttp://pc5.2ch.net/tech/kako/1059/10595/1059549320.html
12 ttp://pc5.2ch.net/tech/kako/1056/10560/1056033645.html
11 ttp://pc5.2ch.net/tech/kako/1052/10526/1052651750.html
10 ttp://pc5.2ch.net/tech/kako/1047/10478/1047819779.html
9 ttp://pc5.2ch.net/tech/kako/1044/10449/1044929160.html
8 ttp://pc5.2ch.net/tech/kako/1040/10409/1040964626.html
7 ttp://pc3.2ch.net/tech/kako/1036/10366/1036654893.html
6 ttp://pc3.2ch.net/tech/kako/1032/10325/1032548635.html
5 ttp://pc3.2ch.net/tech/kako/1028/10285/1028580373.html
4 ttp://pc3.2ch.net/tech/kako/1023/10233/1023361418.html
3 ttp://pc.2ch.net/tech/kako/1017/10170/1017072275.html
2 ttp://pc.2ch.net/tech/kako/1006/10067/1006783012.html
1 ttp://pc.2ch.net/tech/kako/991/991576947.html
0006デフォルトの名無しさん2009/08/02(日) 01:02:18
>>2
Windows SDKのリンクが一部切れてます。
最新版へのリンクもなかったので修正しておきました。

MSDN
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/ja-jp/library/
http://msdn.microsoft.com/en-us/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=7bbe5eda-5062-4ebb-83c7-d3c5ff92a373
- Windows SDK & Platform SDK
http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=ff6467e6-5bba-4bf5-b562-9199be864d29&DisplayLang=en
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614FE22-8A64-4DFB-AA0C-DB53035F40A0&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?FamilyId=484269E2-3B89-47E3-8EB7-1F2BE6D7123A
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/XPSP2FULLInstall.htm
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

書籍
- Advanced Windows 第5版
http://www.amazon.co.jp/dp/4891005920
0007デフォルトの名無しさん2009/08/02(日) 01:10:34
もうだめだこのスレ
0008デフォルトの名無しさん2009/08/02(日) 01:59:48
Windowsにおけるファイルサイズの取得はFindFirstFileが一般的な手法だけど、
ttp://support.microsoft.com/kb/961110
こういう問題があるのでCreateFileでファイルオープンしてGetFileSizeExという
方法を併用するほうがいいかも。ちなみにこれはMSが馬鹿なだけであって、
別に陰謀ではありません。
0009デフォルトの名無しさん2009/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=-^ヽ、_ノ-ー'〈 ~
0010デフォルトの名無しさん2009/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
0011デフォルトの名無しさん2009/08/02(日) 07:42:53
SendMessageのBM_SETCHECKを使ってボタンの状態を変更すると、そのボタンを選択したような点線になりますよね。
これを無効化したいのですが、どのような関数を使えばよいでしょうか?
0012デフォルトの名無しさん2009/08/02(日) 08:12:08
フォーカス!フォーカス!
0013デフォルトの名無しさん2009/08/02(日) 08:29:49
OS自身の関数にも高水準で敷居の低い関数を追加してくれんやろか
0014デフォルトの名無しさん2009/08/02(日) 09:15:10
そこら辺は.NETを使えって方針だろ。
0015デフォルトの名無しさん2009/08/02(日) 11:05:34
>>11
TabStop関係かなぁ?
0016デフォルトの名無しさん2009/08/02(日) 12:16:20
Windows 7 RTM になったんだから、とっととSDKもRTM版出してほしい
0017デフォルトの名無しさん2009/08/02(日) 14:52:34
>>13
WinsockとWinINetとかそういう関係にあると思う。
0018デフォルトの名無しさん2009/08/02(日) 18:20:37
>>16
そういえば、Windows 7 SDK RCのリンクって貼られてないよな。
http://www.microsoft.com/downloads/details.aspx?familyid=6DB1F17F-5F1E-4E54-A331-C32285CDDE0C&displaylang=en
0019デフォルトの名無しさん2009/08/03(月) 16:09:20
Vistaや7RCだとタイトルバーとかの大きさが異なる場合
適切なウィンドウサイズを表示する方法ないかな?
0020デフォルトの名無しさん2009/08/03(月) 16:13:35
まさか今まで決め打ちしてやってたんじゃないだろうなお前
0021デフォルトの名無しさん2009/08/03(月) 17:20:32
ウィンドウの上にカーソルが来た時自動にアクティブにするには
どうすればいいですか
0022デフォルトの名無しさん2009/08/03(月) 18:40:10
http://ja.pastebin.ca/1516486
起動時,クライアント領域に"aaaaa"と表示され,その後方向キー右を押すと真っ白な画面に切り替わるプログラムを作ろうと思っています.
上のURLのようにコードを書いたのですが方向キー右を押しても画面が切り替わりません.どうしてでしょうか.
0023デフォルトの名無しさん2009/08/03(月) 18:44:23
>>22
BeginPaint/EndPaintはWM_PAINTでしか使えない
GetDC/ReleaseDCを使うといいかもしれない
0024デフォルトの名無しさん2009/08/03(月) 18:45:49
とりあえずBeginPaintの解説読んでみ
http://msdn.microsoft.com/ja-jp/library/cc428337.aspx
0025232009/08/03(月) 18:47:18
と思ったけどそういう問題とは違う気もする・・・23は忘れてください
0026デフォルトの名無しさん2009/08/03(月) 18:48:17
本当にVK_RIGHTは来ているのだろうか?
という疑問
0027デフォルトの名無しさん2009/08/03(月) 18:53:59
>>20
決め打ちでやってた
やっぱりGetSystemMetricsで色々情報取らないと駄目?
0028デフォルトの名無しさん2009/08/03(月) 19:00:02
WM_KEYのBeginPaintをやめてBitBltのrcPaintを、ウィンドウのクライアント領域を求めて使えばいいんじゃないだろうか
0029デフォルトの名無しさん2009/08/03(月) 19:00:05
AdjustWindowRect
メニュー複数行だと多少工夫が要るが
0030デフォルトの名無しさん2009/08/03(月) 19:50:55
無効領域が無いから、PAINTSTRUCT.rcPaintが空になって、
結果的に何も転送されずに終わっちゃってるんだろうなあ。
BITMAP bm;
GetObject(GetCurrentObject(hmdc,OBJ_BITMAP),sizeof(bm),&bm);
って感じで取ってきたサイズを使えば一応できるな。
根本的な解決策には程遠いけど。
0031デフォルトの名無しさん2009/08/03(月) 19:53:56
21解決しましたすみません
0032デフォルトの名無しさん2009/08/03(月) 20:01:33
AdjustWindowRectってきっちりそのサイズになる?
試しに
SetRect(&rect,0,0,640,480);
AdjustWindowRect(&rect,WS_SYSMENU,FALSE);

としてサイズ指定しても、クライアントサイズは640x480にならなかった
0033デフォルトの名無しさん2009/08/03(月) 20:13:37
どう見てもスタイルの指定がいい加減だからです
0034デフォルトの名無しさん2009/08/03(月) 20:22:26
手抜きしようとするから決め打ちしたりとかするんだろうなあ
0035デフォルトの名無しさん2009/08/03(月) 20:28:24
渡すスタイルってウィンドウスタイルじゃなかった?
0036デフォルトの名無しさん2009/08/03(月) 21:39:57
問題のウィンドウはそのスタイルで表示してるのか?
0037デフォルトの名無しさん2009/08/03(月) 22:16:49
>>36
勿論同じの指定してます
WS_CAPTIONを追加したらサイズが若干変わりましたが
まだ640x480と望むサイズにはなりません
0038デフォルトの名無しさん2009/08/03(月) 22:19:25
これこれを追加したとか手打ちするんじゃなくて
GetWindowLongとGWL_STYLE使ってやってみ
0039デフォルトの名無しさん2009/08/03(月) 22:36:08
>>38
有難う。それも試してみたけど、サイズは変わらず
どうやら640x480にならないようです
多少誤差ありでも、決め打ちしてみます
0040デフォルトの名無しさん2009/08/03(月) 22:38:35
どういうスタイルを設定して、どれくらい差があるのかが気になる
0041デフォルトの名無しさん2009/08/03(月) 22:51:55
ウィンドウの幅と高さにrect.rightとrect.bottomをそのまま渡しちゃってるとか、
ツールバーのサイズを考慮に入れてないとか・・・。
0042デフォルトの名無しさん2009/08/03(月) 22:52:37
>>40
WS_SYSMENU | WS_CAPTIONの二つで
640x476になります
OSはXPでシェルはLiteStepに変えています
0043デフォルトの名無しさん2009/08/03(月) 22:54:37
>>41
サイズを指定する時はきちんと
right - left
bottom - top
としています

ツールバー等は無しで、只単純なウィンドウです
連投すみません
0044222009/08/03(月) 22:56:22
>>28のやり方でうまく出来ました。ありがとうございます
0045デフォルトの名無しさん2009/08/03(月) 23:09:48
>>42
LiteStepが原因だろ、どうみても。
非公式ツールで変更しまくっている環境は流石にスレ違いだ。
LiteStepのスレで訊けよ。
0046デフォルトの名無しさん2009/08/03(月) 23:13:44
そうかなあ。自分は42のやり方が悪いのだとまだ思っている。
0047デフォルトの名無しさん2009/08/03(月) 23:31:23
LiteStepってちゃんとSystemMetricを利用して動いてるんだろうか
利用してるならAdjustWindowsRectも動作するはずだが
0048デフォルトの名無しさん2009/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に原因があるかもしれないですね
0049デフォルトの名無しさん2009/08/04(火) 08:32:30
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
0050デフォルトの名無しさん2009/08/04(火) 09:08:02
互換性でトンデモ仕様になっていく
0051デフォルトの名無しさん2009/08/04(火) 09:46:46
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
0052デフォルトの名無しさん2009/08/04(火) 09:53:32
どこが便乗なんだか
0053デフォルトの名無しさん2009/08/04(火) 10:21:03
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
0054デフォルトの名無しさん2009/08/04(火) 12:30:08
互換性でトンデモ仕様になっていく
0055デフォルトの名無しさん2009/08/04(火) 12:32:37
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
0056デフォルトの名無しさん2009/08/04(火) 14:13:41
何だこの流れ
0057デフォルトの名無しさん2009/08/04(火) 14:20:36
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
0058デフォルトの名無しさん2009/08/04(火) 15:27:42
互換性でトンデモ仕様になっていく
0059デフォルトの名無しさん2009/08/04(火) 15:32:00
だって互換性取れってうるさいんだもん
0060デフォルトの名無しさん2009/08/04(火) 15:32:47
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
0061デフォルトの名無しさん2009/08/04(火) 15:34:46
便乗質問なんだが
Aero有効にしてるとタブとかツールバーとかトンデモ仕様になっていくのが不便だなあ
なんか互換性の為らしいが・・・
0062デフォルトの名無しさん2009/08/04(火) 15:36:40
>>61
えーと、どのへんが質問?
0063デフォルトの名無しさん2009/08/04(火) 15:41:04
知らないならレスしないで下さい。ウザイだけです。
0064デフォルトの名無しさん2009/08/04(火) 16:12:30
だって互換性取れってうるさいんだもん
0065デフォルトの名無しさん2009/08/04(火) 16:14:23
dgtu
0066デフォルトの名無しさん2009/08/04(火) 16:14:35
互換性でトンデモ仕様になっていく
0067デフォルトの名無しさん2009/08/04(火) 16:15:05
いつまで続けるのこれ
0068デフォルトの名無しさん2009/08/04(火) 16:49:16
15498回
0069デフォルトの名無しさん2009/08/04(火) 18:50:38
夏休みが終わるまで続けるよ!
0070デフォルトの名無しさん2009/08/04(火) 19:04:23
つーかAero有効にしてるとGetWindowRect等で正確なサイズを返さない事があるのが不便だなあ
なんか互換性の為らしいが・・・
0071デフォルトの名無しさん2009/08/04(火) 19:05:22
Aeroを無効にすればよい
0072デフォルトの名無しさん2009/08/04(火) 19:05:23
dgtu
0073デフォルトの名無しさん2009/08/04(火) 19:06:40
>>67
涼宮さんが満足する何かがわかるまでです。
0074デフォルトの名無しさん2009/08/04(火) 19:07:32
ネバーエンディング

ム板的にはwhile(true)
0075デフォルトの名無しさん2009/08/04(火) 19:10:34
break;
0076デフォルトの名無しさん2009/08/04(火) 19:11:40
便乗質問なんだが
100*100がメイン画面の大きさの場合、タブとかツールバーとかを付けると
若干画面大きくなるよね?
その場合、タブとかツールバーの大きさも100*100に含めてAdjustに渡さないと駄目?
0077デフォルトの名無しさん2009/08/04(火) 19:13:16
>>74
警告:条件式が定数です
0078デフォルトの名無しさん2009/08/04(火) 19:14:51
volatile boolean flag;
0079デフォルトの名無しさん2009/08/04(火) 19:16:40
何の言語だよ
0080デフォルトの名無しさん2009/08/04(火) 19:16:43
APIと関係ない話すんな
0081デフォルトの名無しさん2009/08/04(火) 19:20:36
A Pocotan Inshitao
0082デフォルトの名無しさん2009/08/04(火) 19:21:03
Aero有効にしていてGetWindowRect等で正確なサイズを得る方法を教えろ
0083デフォルトの名無しさん2009/08/04(火) 19:26:17
ThemeAPIで頑張って計測、とかいう話じゃなかったっけ?

>>76
タブとかツールバーはクライアント領域の載せているものだから、
その上で空き領域を一定サイズ確保したいというなら当然必要。
0084デフォルトの名無しさん2009/08/04(火) 19:59:08
>>ThemeAPIで頑張って計測
ハズレ
0085デフォルトの名無しさん2009/08/04(火) 20:04:29
うそつくなよw
0086デフォルトの名無しさん2009/08/04(火) 20:15:48
知らないならレスしないで下さい。ウザイだけです。
0087デフォルトの名無しさん2009/08/04(火) 21:45:04
http://msdn.microsoft.com/ja-jp/library/ms633519(en-us,VS.85,loband).aspx
0088デフォルトの名無しさん2009/08/04(火) 21:50:14
VistaとXPではステータスバーの大きさが異なるんだけど
ステータスバーの大きさって変えられない?
自分でステータスバーもどきのウィンドウ作った方が速いかな?
0089デフォルトの名無しさん2009/08/04(火) 21:55:00
デバッグビルドでLoadLibraryA("MSVCP90.dll")実行するとNULLが返ってくるんだけど、MSってバカなの?何なの?
0090デフォルトの名無しさん2009/08/04(火) 21:58:05
>>88
SB_SETMINHEIGHTとか
0091デフォルトの名無しさん2009/08/04(火) 22:40:01
>>89
side-by-sideアセンブリ
0092デフォルトの名無しさん2009/08/04(火) 23:21:42
CランタイムをLoadLibraryする方がバカ
0093デフォルトの名無しさん2009/08/05(水) 04:12:25
ネットで公開されているAPIってサイドパーティ含めてどのくらいか?
把握している人はエロい
0094デフォルトの名無しさん2009/08/05(水) 06:51:42
は?
0095デフォルトの名無しさん2009/08/05(水) 08:14:32
http://www.google.com/search?q=api

Google先生は把握してますが何か?
0096デフォルトの名無しさん2009/08/05(水) 15:58:10
質問です。

ウインドウメッセージを解決するProcの中で、SendMessageをすると、即座に処理される理由がいまいちわかりません。
MessageBoxでも似たような疑問を持った際は「勝手にメッセージ解決ループを作って裏でまわしてくれるんだよ」
といった説明を受けて納得したのですが、今回の件も同様なのでしょうか?
0097デフォルトの名無しさん2009/08/05(水) 16:02:50
>1 つまたは複数のウィンドウへ、指定されたメッセージを送信します。
>この関数は、指定されたウィンドウのウィンドウプロシージャを呼び出し、
>そのウィンドウプロシージャがメッセージを処理し終わった後で、制御を返します。
0098デフォルトの名無しさん2009/08/05(水) 16:03:19
SendMessageが発行したメッセージはちゃんとOSのメッセージキューに入れられて、
該当するウインドウのメッセージループに通知され、
その後メッセージハンドラがコールバックされて
対応するコード上で処理されてるから、即座じゃなくない?

MessageBoxの方も同様で、メッセージボックスがクリエイトされた後、
OS経由でメッセージがMessageBoxのメッセージハンドラに通知されてるよ。
Spy++みるとメッセージの応酬が見られるし。
0099デフォルトの名無しさん2009/08/05(水) 16:16:14
96です。
>>97-98
お返事ありがとうございます。
MSDNの説明を妙に勘違いしていたようです。

::SendMessageはウィンドウプロシージャを直接呼び出すのですね。
実は困っていたのは
case WM_CLOSE:
の中で別のワーカースレッドに停止命令を出し、ワーカースレッドの停止を確認するまでSleepする。
という処理でした。

このとき、ワーカースレッド側でSendMessageされると、フリーズしてしまいます。

これは、メインスレッドがプロシージャで処理中(Sleep中)なのに、他スレッドがプロシージャを呼ぼうとしたので、排他制御された。
ということで合っているでしょうか?
0100デフォルトの名無しさん2009/08/05(水) 16:36:52
>>99
そんな感じ。
ttp://msdn.microsoft.com/en-us/library/ms644927.aspx
のMessage Deadlocksに詳しく書いてある。
0101デフォルトの名無しさん2009/08/05(水) 16:48:44
>>100
ありがとうございます。
・・・そのページ、日本語版のMSDNでは省かれてますね・・・
0102デフォルトの名無しさん2009/08/05(水) 16:50:16
メッセージプロシージャを待ちたくないのなら、PostMessageを使ってみては
0103デフォルトの名無しさん2009/08/05(水) 16:51:04
メッセージプロシージャってなんだ・・・ウィンドウプロシージャでした
0104デフォルトの名無しさん2009/08/05(水) 16:58:57
>>102
色々アドバイスありがとうございます。
タイトルバーの書き換えが目的のため、ポインタ渡しが必要となり、PostMessageでは行えませんでした。
(SetWindowTextは、内部でSendMesssageを呼んでるっぽいですね)

ついでに、報告。
>>100の文書のおかげで
SendMessageTimeout
なる関数を知りました。
タイムアウト値を10msくらいにしておけば、デッドロックが起こらずに済みますね。

こんな関数知りませんでしたわ
0105デフォルトの名無しさん2009/08/05(水) 18:17:49
>>91
winsxsはside by sideで使われてたのか、MSめ・・・
0106デフォルトの名無しさん2009/08/05(水) 20:27:52
>>104
UIの更新はUIスレッドにやらせるのが基本。
文字列は別の場所に置いておいて、
PostMessageでタイトルバーの更新を指示、といった感じで。
0107デフォルトの名無しさん2009/08/06(木) 09:28:29
>>106
いちいちクリティカルセクション使って、文字列渡し合うのか?
0108デフォルトの名無しさん2009/08/06(木) 09:42:38
ロストを許すことなく、きっちり伝えようとするべくクリティカルセクションの出し入れすると
結局 SendMessage のブロッキングと同じでデッドロックにならない?
0109デフォルトの名無しさん2009/08/06(木) 11:28:21
C言語にfopenという関数があるのに
windows APIにもCreateFileという関数があって

どちらを使えばいいのかわかりません。
CreateFileのほうが細かく設定できるという認識だけで
よろしいのでしょうか?
0110デフォルトの名無しさん2009/08/06(木) 11:40:39
ファイルハンドル取得のためには必須なんじゃないの?
勉強中の身だからなんとも言えんけど、
プロに任せれば正しい回答が来るはず
0111デフォルトの名無しさん2009/08/06(木) 11:48:33
fopenはC言語の関数。
C言語が仕様を決め、Windowsが従ってる。
そのため(C言語の仕様が古いため)2GBまでのファイルしか扱えない。

CreateFileはWindowsが提供している関数。
Windows以外で使えないけど、代わりに2GBを超えるファイルも扱えるし、Windows特有のファイル属性なども操作できる。
0112デフォルトの名無しさん2009/08/06(木) 12:33:14
つまりWindows環境ならfopenよりもCreateFileのほうがいいってことか
0113デフォルトの名無しさん2009/08/06(木) 13:07:04
まぁそう考えてもOK
ただし、色々できる=複雑ってことだからそのあたりは臨機応変で。
0114デフォルトの名無しさん2009/08/06(木) 14:15:59
毎回引数7個も書いてるとうざいぜ
fopenで間に合うときはそっちのがシンプルでいいよ
0115デフォルトの名無しさん2009/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;
}
0116デフォルトの名無しさん2009/08/06(木) 18:15:32
つーかfopenも最終的にはCreateFileを呼んでるんだから当然だろ

>>111こいつバカじゃねーの?
0117デフォルトの名無しさん2009/08/06(木) 19:23:44
fopen で開いたファイル(FILE*)にランダムアクセスする際にfseekでは
32bit幅しか考慮されていないので、2Gの範囲しかアクセスできないと言う
点について、>>111がちょびっとだけカスってる。

#まあ、そもそも fopen の仕様を決めているのはC言語ではないけどね…。

fopen が CreateFile呼んでるから当然使えるってのは、標準関数の仕様と
比べてどうかと言う方向からみるべきなので、短絡的な意見だとは思うが。
0118デフォルトの名無しさん2009/08/06(木) 20:16:53
SEEK_CURを使って2GBずつ進んでいくってのは無理?
0119デフォルトの名無しさん2009/08/06(木) 20:21:26
規格上はその辺り何も規定されてないので処理系に依存する。
0120デフォルトの名無しさん2009/08/06(木) 20:39:15
>>118
VC2008だと、0x7FFFFFFFより後への移動はエラーになって返ってくる。
関数内で、SetFilePointerを上位32ビットを指定せずに呼んでいる為に、
オフセット位置の範囲に制限がかけられている所為だな。
0121デフォルトの名無しさん2009/08/06(木) 20:46:08
使えねー
0122デフォルトの名無しさん2009/08/06(木) 21:25:26
つーか、CreateFileをラップしたクラスを作っとけばいいだろ・・・

そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い
0123デフォルトの名無しさん2009/08/06(木) 21:49:47
そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(キリッ
0124デフォルトの名無しさん2009/08/06(木) 21:54:12
そもそもクロスプラットフォーム開発してる訳でもなけりゃわざわざfopenなんて使う理由が無い(ヌルポ
0125デフォルトの名無しさん2009/08/06(木) 21:57:04
>>124
がっ
0126デフォルトの名無しさん2009/08/06(木) 22:10:06
fopen (笑)
0127デフォルトの名無しさん2009/08/06(木) 22:12:36
C言語 (笑)
0128デフォルトの名無しさん2009/08/06(木) 22:16:42
今時マルチスレッドや巨大ファイルの扱いが規格外なプログラミング言語なんてゴミ
0129デフォルトの名無しさん2009/08/06(木) 22:16:44
ヌルポ (笑)
0130デフォルトの名無しさん2009/08/06(木) 23:04:30
今時ポインタがあるプログラミング言語なんてゴミ
0131デフォルトの名無しさん2009/08/06(木) 23:11:25
と思ってるお前がゴミ
0132デフォルトの名無しさん2009/08/06(木) 23:22:58
ふぉぺん
0133デフォルトの名無しさん2009/08/06(木) 23:26:21
その辺にしとけ
0134デフォルトの名無しさん2009/08/06(木) 23:39:51
何を?
0135デフォルトの名無しさん2009/08/07(金) 00:43:08
ネットワークディレクトリをsamba(smb)共有させる場合、
IEのURL打ち込み欄で

\\hostname.com

で、、このあとアカウントとパスワードを入力するダイアログが表示され
進めるとネットワークディレクトリがマウントできますが、
(Vistaの場合、レジストリを変更してセキュリティポリシーの書き換え必要)

この一連の流れをC++/MFCの環境で記述してマウントさせたいのです。
具体的にどういうAPIを使えばよいか、どういうサイトを参照すればよいか
など教えていただけますでしょうか。

よろしくお願いします。

0136デフォルトの名無しさん2009/08/07(金) 00:53:01
>>135
http://msdn.microsoft.com/ja-jp/library/default.aspx
0137デフォルトの名無しさん2009/08/07(金) 03:59:35
マウントといったら、WNetAddConnection2しか思いつかん
0138デフォルトの名無しさん2009/08/07(金) 06:05:30
それでいい。WebDAV のフォルダもマウントできるし。
0139デフォルトの名無しさん2009/08/07(金) 11:42:31
>>99
なんか微妙に誤解があるような気が……
ウィンドウプロシージャをメッセージ経由で実行する場合は、
必ずウィンドウを作成したスレッドで実行されるのがwindowsの仕様です。
その場合は、このスレッドがSleepさせられているため、SendMessageで
デッドロックするわけです。
0140デフォルトの名無しさん2009/08/07(金) 12:17:19
スレッド間でSendし合うからだろ
0141デフォルトの名無しさん2009/08/07(金) 14:29:26
sendし合うのは問題ない。
別スレッドにSendMessageして、send先から返ってくるのを待ってる間は
別スレッドからのSendMessageを受け付ける事ができる。
0142デフォルトの名無しさん2009/08/07(金) 14:58:05
色んなスレッドからキューに積むだけなら可能

だが、sendされた側がメッセージループでキューを喰い実行してくれないと
呼び出し側はブロックされっぱなしで SendMessage から戻ってこれない
0143デフォルトの名無しさん2009/08/07(金) 15:14:37
141のがあってると思う。
SendMessageから戻って来ない間も、別スレッドからのSendMessageには
即呼び出される。殆ど相手のコンテキストで動いてる感じ。

SendMessageなら戻ってくるまでは他のメッセージが来ないので安心、
と言うことではない。
0144デフォルトの名無しさん2009/08/07(金) 15:19:14
ここのバカ共はReplyMessageも知らんのか
0145デフォルトの名無しさん2009/08/07(金) 15:45:30
ReplyMessage関係あんの?
0146デフォルトの名無しさん2009/08/07(金) 16:08:31
コモンコントロールのウィンドウデータ、端的に言うとGWLP_USERDATAの領域にSetWindowLongPtrで
アプリケーション側の値を設定しているコードがあったんですけど、これって有効なんでしょうか。
ずっとコントロール側が使ってるものと思い込んでいたのですが。。。
0147デフォルトの名無しさん2009/08/07(金) 16:58:33
MSDNくらい読めよ低脳
http://msdn.microsoft.com/ja-jp/library/cc411204.aspx
0148デフォルトの名無しさん2009/08/07(金) 17:05:07
低脳はお前の方だろ
0149デフォルトの名無しさん2009/08/07(金) 17:08:04
いやアナタです
0150デフォルトの名無しさん2009/08/07(金) 17:09:51
いや、俺だ!
0151デフォルトの名無しさん2009/08/07(金) 17:20:31
マジで!?
01521462009/08/07(金) 17:58:31
タブコントロールとかだと各タブ要素のデータがウィンドウごとに確保されますけど、
GWLP_USERDATAとは全く別の領域に確保されてるんでしょうか。
コモンコントロールをspy++で見ると、ウィンドウバイトが割り当てられていて
それがコントロールが使っているものなのか、アプリケーションに任せているのか僕では判断できません。

コモンコントロールのクラスが定義済みなので、MSの配慮としてアプリケーション用に確保されているのかと
考えてしまいますが、明記されてる記事を見つけることができませんでした。
0153デフォルトの名無しさん2009/08/07(金) 18:04:44
>GWLP_USERDATA
>ウィンドウに関連付けられた値を設定します。
>この 32 ビット値は、<<<<ウィンドウを作成したアプリケーションで使用する目的で>>>>各ウィンドウが持っているものです。
>この値の初期値は 0 です。

この程度の日本語の解釈もできないの?
あんた小学生?
馬鹿なの?
死ねよ
0154デフォルトの名無しさん2009/08/07(金) 18:06:03
おちつけちゃ〜ん
01551462009/08/07(金) 18:08:25
普通のウィンドウの拡張と同じように、コモンコントロールも後付で作られたクラスなので、
そのアプリケーション用というのが、本当に自作アプリケーションのためなのか、
コモンコントロールの拡張用なのかよくわかりません。
言葉どおり受け取るならそういうことなんですが。。。
0156デフォルトの名無しさん2009/08/07(金) 18:11:57
コモンコントールは拡張ウィンドウメモリを使っていてGWLP_USERDATAは使ってないはず。
でもサードパーティ製のコントロール等はGWLP_USERDATAを使ってる物もある。
Spy++で見れば分かる。

いずれにしろ自作コントロール以外ではプロパティリストを使う方が安全。
0157デフォルトの名無しさん2009/08/07(金) 18:19:05
ま、サブクラスする時はSetWindowSubclass()でいいから
GWLP_USERDATAの使い道なんてほとんど無いけどな
0158デフォルトの名無しさん2009/08/07(金) 18:38:07
スレッドの中で自分で作った関数を呼びまくってるんですが
その関数内でオート変数を使ってるんですが
メモリリークとか大丈夫なんですかね?
0159デフォルトの名無しさん2009/08/07(金) 18:42:10
Win32APIになんか関係あるん?
0160デフォルトの名無しさん2009/08/07(金) 18:47:19
いやごめんなさいくずまったくかんけいないですがごみきいてみたかったんですよ
0161デフォルトの名無しさん2009/08/07(金) 19:29:53
いつの間にかWindows 7 SDKがRMTに
0162デフォルトの名無しさん2009/08/07(金) 19:32:20
アドレス忘れた
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=71deb800-c591-4f97-a900-bea146e4fae1
0163デフォルトの名無しさん2009/08/07(金) 19:34:42
RMTじゃリアルマネートレードだろ
0164デフォルトの名無しさん2009/08/07(金) 19:56:01
いつの間にかWindows 7 SKDがRTMに

これでいい?
0165デフォルトの名無しさん2009/08/07(金) 19:58:14
>>163-164
RTM じゃリアルタイムマネーだろ!
0166デフォルトの名無しさん2009/08/07(金) 20:00:09
いつの間にかWindows 7 SDKがATMに
0167デフォルトの名無しさん2009/08/07(金) 20:11:40
それじゃオートメーテッドテラーマシーンだろ
0168デフォルトの名無しさん2009/08/07(金) 22:31:42
もうだめだこのスレ
0169デフォルトの名無しさん2009/08/07(金) 22:37:46
dumpbin /DEPENDENTS みたいに依存するDLL名って、Win32APIではどのように取得するんでしょうか
0170デフォルトの名無しさん2009/08/07(金) 22:58:48
API レベルで用意してるのかなぁ?
PEフォーマットの仕様ははっきりしてるし、
依存DLL名だけ調べるくらいならそんなに難しくないよ。
PEフォーマットについてかなりわかりやすく解説したページが以前はあったんだけど、
今は消滅しちゃってるな。 まぁ、マイクロソフトのページに行けばキッチリした仕様書が入手できる。
0171デフォルトの名無しさん2009/08/07(金) 23:25:37
解説も何も、PEフォーマットなんてせいぜいRVAがウザい程度でしょ
それもimagehlp.dllのAPIを使えば簡単だし
0172デフォルトの名無しさん2009/08/07(金) 23:34:12
>>157
それって、Xp以降専用になるんじゃ……
まあ、それも時代か。
0173デフォルトの名無しさん2009/08/07(金) 23:36:35
2000ってそろそろサポ切れるよな
0174デフォルトの名無しさん2009/08/08(土) 00:06:36
>>170-
ImageDirectoryEntryToDataEx使ってそれっぽいのとれたんですけど、RVAからVAの変換でミスg・・・
よくわかんねー
0175デフォルトの名無しさん2009/08/08(土) 00:52:59
>>172
MSDNにはXP以降と書かれてるけど実際には2000でも使える。
0176デフォルトの名無しさん2009/08/08(土) 08:04:08
Windows7 SDK のISOイメージは、まだx86版しか上がってないのか。
今までと違って、x64環境にはx64用のイメージが必要なのに気付かなかったぜ。
0177デフォルトの名無しさん2009/08/08(土) 09:41:58
>>176
試してないけど、ファイルはあるみたい。
http://download.microsoft.com/download/2/E/9/2E911956-F90F-4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso
01781352009/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ドライブに割り当てられません。
何が原因でマウントされないのでしょうか?
マウントされたボリュームが表示されるようにしたいのですが、
どうすればよいか教えてください。
よろしくお願いします。
0179デフォルトの名無しさん2009/08/08(土) 17:59:47
>>177
サンクス。ハッシュも一致していたし、それでOKみたいだ。
0180デフォルトの名無しさん2009/08/08(土) 18:00:32
lpRemoteNameにホスト名だけを指定しているのがまずいような
多分\\\\hostname.com\\folderのようにするはず
で、folderは共有されていなければならなかったはず
0181デフォルトの名無しさん2009/08/08(土) 22:49:32
7で目覚まし動かん
0182デフォルトの名無しさん2009/08/08(土) 23:01:41
相変わらずSDKでけぇなー
.NETとかイラネーし別ファイルにしてくれよ・・・
0183デフォルトの名無しさん2009/08/08(土) 23:04:10
別ファイルにしたら誰も使ってくれなくなるだろ…

VC++ しか使わないのに VB も VC# もついてくるのは抱合せ販売では?
とか思ったけど、いまの Visual Studio って、過去のVisual C++単体と同じくらいの金額なんだよな。
0184デフォルトの名無しさん2009/08/08(土) 23:09:40
それを言ったら昔はSDKやDDKだって有償だったでしょうに
0185デフォルトの名無しさん2009/08/08(土) 23:11:47
無料で何でも揃う割にクリエイティブなティーンが少ない件
0186デフォルトの名無しさん2009/08/08(土) 23:33:24
>>182
ウェブセットアップ版ではだめですか?
0187デフォルトの名無しさん2009/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

うぜーーーーーーーーー
0188デフォルトの名無しさん2009/08/09(日) 00:43:32
いいかげんMINMAXマクロ定義するのやめてほしい
0189デフォルトの名無しさん2009/08/09(日) 01:06:45
今更やめられないのは少し考えれば判るだろ
0190デフォルトの名無しさん2009/08/09(日) 01:22:41
NOMINMAXで我慢してください。
0191デフォルトの名無しさん2009/08/09(日) 01:33:08
事情はわかってるがそういう上塗りでのごまかしにはウンザリなんだよ。
ちょっとグチらせてくれや。
0192デフォルトの名無しさん2009/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>
だけで万事解決
0193デフォルトの名無しさん2009/08/10(月) 13:12:16
LEAN AND MEANもdefineしようぜ
0194デフォルトの名無しさん2009/08/10(月) 13:42:19
windef.hだけインクルードしようとするとコンパイルエラーになるんだがなんでだろう
0195デフォルトの名無しさん2009/08/10(月) 14:25:22
>>193
ソレつけるとかえって#includeの行数が増える事になるし面倒じゃね?
今時の計算機ならコンパイル時間の短縮にほとんど貢献しなさそう
0196デフォルトの名無しさん2009/08/11(火) 10:43:43
メニューを作る際、リソースファイルなどで、「INACTIVE」を指定すると、
選択できない項目にすることができますが、
これを、アプリケーションからInsertMenuItem関数などで動的に追加するときに
適用することはできないでしょうか?
InsertMenuItem関数で使用するMENUITEMUINFO構造体を見ても、
該当するような項目は見当たりませんでした。

よろしくお願いします。 m(_ _)m
0197デフォルトの名無しさん2009/08/11(火) 10:56:45
fState = MFS_DISABLED
0198デフォルトの名無しさん2009/08/11(火) 11:11:44
MFS_DISABLED だとグレーアウトした選択不可
グレーアウトなしの選択不可は MF_DISABLED っぽいが…

# リソースで作ったメニューを GetMenuItemInfo で fState 取得したら 2 だった
# 2 相当のマクロを winuser.h で探すと… MFS_xxx は存在しないっぽい
01991962009/08/11(火) 11:15:57
>>197
>>198
ありがとうございましたぁ!! 。゜( ゜´∀`゜)゜。
0200デフォルトの名無しさん2009/08/11(火) 15:33:56
MF_DISABLEDはdeprecatedなんだろ
そもそもグレーアウトしないのに選択できないなんてUIとしておかしいし
キーボード操作だと選択できないのが分からない
0201デフォルトの名無しさん2009/08/11(火) 21:24:00
教えてください。レバーコントロールの勉強中です。
レバーコントロールの背景についてです。
エクスプローラみたいにグラデーションのかかった背景にするには
どうしたらできるんですか?
背景としてビットマップを指定できるのは分かったんですけど、
エクスプローラの場合、ウィンドウのサイズを変えると、
背景のグラデーションも動的に変わるようにしたいんです。
0202デフォルトの名無しさん2009/08/11(火) 21:32:55
また肝臓コントロールかよ
0203デフォルトの名無しさん2009/08/11(火) 21:38:11
XPスタイルのコモンコントロールとかなんとかでぐぐれ
0204デフォルトの名無しさん2009/08/11(火) 21:47:38
最近のVCだと自動でXPスタイルのmanifest付けてくれるんじゃないの?
0205デフォルトの名無しさん2009/08/11(火) 22:04:11
デフォ設定だとマニフェストは埋め込まれる
0206デフォルトの名無しさん2009/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='*'\"")
0207デフォルトの名無しさん2009/08/11(火) 23:47:01
面倒だなあ

#pragma comment(linker,"/manifest:comctlv6")
みたいなオプション用意してくれればいいのに
0208デフォルトの名無しさん2009/08/12(水) 00:19:40
>>192に書いとけばいいよ
0209デフォルトの名無しさん2009/08/12(水) 02:29:38
よく使う割に長いオプションは短縮系的なものが用意されてそうな気はするんだが。
(/nodefaultlib → /nod みたいな)
今度link.exeを逆汗して調べてみるか。

<チラシの裏>
cl.exeに/Bzか/Bdをつけてコンパイるとc1.dllやc2.dllに渡してるコマンドラインが見れる。
</チラシの裏>
0210デフォルトの名無しさん2009/08/12(水) 12:27:53
>>209
マニュアル見ろよ。
02112012009/08/12(水) 12:34:05
XPスタイルというものだったんですね。
マニフェストのおかげで実現できました。
ありがとうございました。
0212デフォルトの名無しさん2009/08/12(水) 14:02:13
WM_NCPAINTで(HRGN)wParamからGetDCEx取得したHDCを使って描画すると、
思った位置に描画できないのですが、どうしてなんでしょうか。

ttp://msdn.microsoft.com/en-us/library/dd145212%28VS.85%29.aspx

ここの0x10000を足すやり方でhdcを求めてFillRgnで塗りつぶすと、
クライアント領域にずれ込んでウィンドウフレームの形に塗りつぶされてしまいます・・・
0213デフォルトの名無しさん2009/08/12(水) 17:46:56
>>210
マニュアルに載ってないオプションが大量にあるのを知らないのか
平和な奴だな
0214デフォルトの名無しさん2009/08/12(水) 18:06:50
煽るな
0215デフォルトの名無しさん2009/08/12(水) 18:54:54
ごめんなさい
0216デフォルトの名無しさん2009/08/12(水) 19:32:00
>>213
あるだろうな。 それがどうした。
公開してないのをむやみに使うんじゃないよ。
0217デフォルトの名無しさん2009/08/12(水) 21:27:51
ウィンドウメッセージでマウスカーソルが入ってくるのはわかるんですが
出て行くのを知る手段はありますか?
0218デフォルトの名無しさん2009/08/12(水) 21:44:39
>>217
入ってきたときMOUSEMOVEをキャプチャするとか。
または入ってきたときタイマで確認し始めるとか。
で、出たらどちらも初期化するとか。

いずれにしても自前で処理する必要がある。
0219デフォルトの名無しさん2009/08/12(水) 21:59:29
WM_MOUSELEAVEはだめ?
0220デフォルトの名無しさん2009/08/12(水) 22:07:32
それが、MOUSEMOVEのキャプチャじゃない?
入ってきたとき、TrackMouseEvent()実行しないとだめだよね。
0221デフォルトの名無しさん2009/08/12(水) 22:11:05
>>218-220
キャプチャってボタン押さなくてもいけるんですね
それとWM_MOUSELEAVEも知らなかったのでその二つを色々試してやってみようと思います
ありがとう
0222デフォルトの名無しさん2009/08/13(木) 20:40:36
上のWM_MOUSELEAVEなのですが
ALT+キーにも反応してしまうのを抑制することは出来ますか
0223デフォルトの名無しさん2009/08/13(木) 21:55:58
出来ます
0224デフォルトの名無しさん2009/08/13(木) 22:12:02
確かに良く考えれば出来ました
LEAVEの中で座標調べて必要ならEvent設定しなおしてやりましたが
何故キーに反応するのかわからない…
0225デフォルトの名無しさん2009/08/14(金) 10:53:15
SPY++が無いため質問させて頂けます
ポップアップメニューを選択した時、メッセージの流れは

WM_EXITMENULOOP
WM_COMMAND

の順になるんですが
WM_EXITMENULOOPがくるまえに確実に選択したメッセージは来ないんでしょうか?
0226デフォルトの名無しさん2009/08/14(金) 20:58:55
Spy++で見れば分かるだろ
0227デフォルトの名無しさん2009/08/14(金) 23:00:09
だからないって言ってんだよ、このスカポンタン。
ボヤッキー、やっちまいな。
0228デフォルトの名無しさん2009/08/14(金) 23:01:44
入れればいいだろうが。
0229デフォルトの名無しさん2009/08/14(金) 23:17:19
Spy++ってネットから落とせたっけ?
俺はVC6買ったら入ってたから、今もそれ使ってるけど
0230デフォルトの名無しさん2009/08/15(土) 00:52:42
VC++をネットから落としてきたら入ってるよ。
0231デフォルトの名無しさん2009/08/15(土) 01:27:20
なんか人聞きが悪いな
0232デフォルトの名無しさん2009/08/15(土) 01:32:20
???
0233デフォルトの名無しさん2009/08/15(土) 01:33:16
プログラマなんだから作れよ
0234デフォルトの名無しさん2009/08/15(土) 01:46:37
自作するとフックやプロセス間通信の勉強になるよね。
02352312009/08/15(土) 01:49:10
>>232
ネットで落とすってなんか割る感じに聞こえたから
0236デフォルトの名無しさん2009/08/15(土) 01:52:36
今のVisual StudioはExpressのつく製品なら無料でDLできるからなあ
02372312009/08/15(土) 01:57:13
いや、dreamsparkでってことでしょ
expressionじゃspy++付いてこないし
0238デフォルトの名無しさん2009/08/15(土) 02:05:26
あ…dreamsparkってもう終わってたのね
0239デフォルトの名無しさん2009/08/15(土) 02:59:21
           \
            \
          ∧ニユ/ ̄ヽ
\        ( ´∀/)    i
\.\    _(」つ/とl) .  | \
;::;::\i\  匚レ| .〈/ )    |  \
 。::;;:'\.\   (_,)ー'    |_,, -'''"!
^人;:'::;゚:;.\l\     _,,, -''"|_,, -''"|
 ^^从::;;:。':\.\_,, -''"|_,, -''"|   . :|
 へ ^へ;;::';;:'\l_,, -''" .   | 从^    〜
 ^ ^ヘ^人从::;;;:|    ,ィ人^. |  ^ ^へ^^
  〜 ^.へ' ^':レ^从 へ'  | 〜   ^
 へ ^^ へ 〜人^ ^  へ〜  〜
0240デフォルトの名無しさん2009/08/15(土) 04:00:00
http://pc12.2ch.net/test/read.cgi/tech/1250129684/
0241デフォルトの名無しさん2009/08/15(土) 06:15:12
>>231
この馬鹿はmsdnサブスクリプション知らないの?
0242デフォルトの名無しさん2009/08/15(土) 07:21:18
今少し調べてみたんだが、Spy++に代わりとなるアプリって無いな
あっても正直ショボいから、自分で作ったほうがいいかもな
0243デフォルトの名無しさん2009/08/15(土) 08:43:19
ハァ?Spy++より高機能なアプリなんて山ほどあるだろ
0244デフォルトの名無しさん2009/08/15(土) 09:13:09
そんなことは知ってる
探すぐらいなら自分で作ったほうがいいということだ
0245デフォルトの名無しさん2009/08/15(土) 09:15:41
キャタピラでも再発明しますか
0246デフォルトの名無しさん2009/08/15(土) 09:21:02
>>243
あるなら教えてくれよ。軽く調べたけど俺は見つけられなかった

後、質問なんだが
マウスフックしてる時に、クリックされたウィンドウがポップアップなら処理しない用にしたいんだが
FindWindow( TEXT("#32768"), NULL )で取得したハンドルと
フックで渡されたハンドルが一致しないんだが、何か良い解決策ないかな?
0247デフォルトの名無しさん2009/08/15(土) 12:43:14
>>246
Spy++互換ならWinspectorとか?
高機能かどうかは保証しないけど。
0248デフォルトの名無しさん2009/08/15(土) 21:07:38
>>246
お前の調べ方が悪いだけ
0249デフォルトの名無しさん2009/08/15(土) 21:23:10
2chはツンデレが多いな
0250デフォルトの名無しさん2009/08/15(土) 23:36:19
>>246
>FindWindow( TEXT("#32768"), NULL )
文字列を渡すのが間違いじゃないかな。
MAKEINTATOM(32768)とか。
0251デフォルトの名無しさん2009/08/16(日) 01:52:59
「山田って名前のやつが来たら門前払いしたいんだけど
"山田"で検索したのと顔が一致しないんだが、何か良い解決策ないかな?」
「そいつに名前聞けよ」
0252デフォルトの名無しさん2009/08/16(日) 02:53:09
クラス名が "#32768" ってポップアップメニューなんだけど(ちなみに"#32770"はダイアログ)
>>246 で書いてある「クリックされたウィンドウがポップアップなら」って条件に当てはまるはずがない
0253デフォルトの名無しさん2009/08/16(日) 06:50:20
マウスフックで、クリックされたハンドルがポップアップメニューの場合
#32768でおk?
0254デフォルトの名無しさん2009/08/16(日) 07:22:47
クラスアトムでチェックすればいいだろ
if(GetClassWord(hwnd,GCW_ATOM)==32768){
 //メニュー
}
0255デフォルトの名無しさん2009/08/16(日) 08:46:22
表示してる全てのポップアップメニューの領域を取得する方法ないかな?
単体なら取れるんだけど
MF_POPUPして複数になると、新しく表示されたポップアップメニューしか領域が取れない
0256デフォルトの名無しさん2009/08/16(日) 10:02:07
#32768の全ウィンドウに対してUnionRectすれば求まるだろ
頭使おうな
0257デフォルトの名無しさん2009/08/16(日) 10:34:25
>>256
有難う
#32768の全列挙ってFindWindowEx使う?
一々全ウィンドウを列挙してクラス名を使わないと駄目かな?
0258デフォルトの名無しさん2009/08/16(日) 11:48:11
EnumWindowsを使う方がいいよ
ウィンドウの判別は>>254でもおk
0259デフォルトの名無しさん2009/08/16(日) 14:33:51
>>258
有難うっ
Findで複数32768を取れないか試したけど駄目だった
全列挙してやります
0260デフォルトの名無しさん2009/08/16(日) 16:10:38
ボタンの見た目をサブクラス化してWM_PAINT乗っ取りで変更したいんだけど、ボタンを押したときにデフォルトの描画をされてしまいます。
BM_SETSTATE時にウィンドウプロシジャを介さずに描画してるからっぽいんですが、これを止める方法ありますか?
BM_SETSTATE時に再描画させると一瞬ちらつくし、オーナードローだとプッシュボタン以外使えないし。。。
0261デフォルトの名無しさん2009/08/16(日) 16:55:38
>>260
XP以降かつ、comctl6.0以降を使っていれば、
NM_CUSTOMDRAWが送られてくるから、そこで描画したらどう?
0262デフォルトの名無しさん2009/08/16(日) 23:02:14
>>455
いや、ホントうまいって、騙されたと思って食ってみ
最近嫁に内緒で夜にこれ入れて1合だけ炊いて食べてたんだけど、それがバレて早朝ランニングさせられるようになった…
けど今日も頃合いを見計らって炊くつもり^^あー想像しただけで武者震いがw

断っておくけど、俺の嫁は鬼嫁とかそういうのじゃないからな
0263デフォルトの名無しさん2009/08/16(日) 23:02:55
誤爆
0264デフォルトの名無しさん2009/08/16(日) 23:09:51
脳内嫁ですね分かります
0265デフォルトの名無しさん2009/08/17(月) 00:37:16
バージョン情報って1.01とかあらわすけど
メジャー、マイナー以降のバージョンの名称って何かな?
0266デフォルトの名無しさん2009/08/17(月) 00:50:47
ビルド、リビジョン
0267デフォルトの名無しさん2009/08/17(月) 05:04:37
ビルド番号ってどうやって決まってんの?
単純にビルドした回数にしては1998とか6000とか狙ったような番号だし
0268デフォルトの名無しさん2009/08/17(月) 06:59:42
お好きにどうぞ
0269デフォルトの名無しさん2009/08/17(月) 08:31:54
知らないならレスしないで下さい。ウザイだけです。
0270デフォルトの名無しさん2009/08/17(月) 13:15:28
親ウィンドウ(スレッドA) -子ウィンドウ1(スレッドAの派生スレッドB)
               -子ウィンドウ2(スレッドAの派生スレッドC)
みたいな感じでウィンドウを生成してメッセージ処理させてるんだけど、
子ウィンドウ/スレッドに投げられたメッセージキューを、親ウィンドウ/スレッドに送らないor認識させない方法ってないかな?
親ウィンドウのGet/PeekMessageで、親ウィンドウのハンドルを指定すればいいとか聞いたんだけど
そうするとWM_DESTROYメッセージが送られてきた時点でウィンドウが消滅しててメッセージが取得不能→終了不能になるみたいで。
0271デフォルトの名無しさん2009/08/17(月) 13:49:56
別スレッド上でCreateWindowすればメッセージキュー自体別々になるから
GetMessageでハンドル指定だの気にしなくても親から認識できないのでは
0272デフォルトの名無しさん2009/08/17(月) 16:03:12
自作ファイルを自作プログラムへ関連付けの
設定及び削除ということをやりたいのですが、
(もちろんオプションです)
Winのバージョン違いを吸収するようなAPIはありませんか?
0273デフォルトの名無しさん2009/08/17(月) 16:06:00
関連付けのレジストリなんてWin95以降変わってないだろ
02742722009/08/17(月) 16:13:31
>>273
.* の位置が
(2k)HKEY_CLASSES_ROOT\
(xp)HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
と、違うようなのですが・・・
調べが足りないのでしょうか?
0275デフォルトの名無しさん2009/08/17(月) 16:18:12
それより知能を補給してください
0276デフォルトの名無しさん2009/08/17(月) 16:24:21
全然調べてないみたいだな
02772722009/08/17(月) 16:28:09
>>276
全然ですか・・・
もう少し調べてみます
0278デフォルトの名無しさん2009/08/17(月) 16:37:42
>>275-276
失せろゴミ
0279デフォルトの名無しさん2009/08/17(月) 16:46:08
そもそもグローバルで効くHKEY_CLASSES_ROOTとユーザーごとのHKEY_CURRENT_USER
なのがおかしいと思わないのかね。
0280デフォルトの名無しさん2009/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);
  }
}
0281デフォルトの名無しさん2009/08/17(月) 16:53:01
未初期化の filePath[] が ゴミで
いきなり OFN_FILEMUSTEXIST から外れているから FALSE で抜ける
02822722009/08/17(月) 16:53:52
>>279
私が見たサイトの1つでは、
xpになってから HKEY_CURRENT_USER 以下に
関連付けを記述するようになったと書かれていました
95等にも対応するにはバージョンを判別する必要がありそうなので、
APIがあるのかな、と思った次第です
02832802009/08/17(月) 17:02:10
>>281
指摘された部分を直すと、きちんと動作しました。
本当に助かりました。ありがとうございます。
0284デフォルトの名無しさん2009/08/17(月) 17:31:11
InternetSetOptionのタイムアウトってInternetReadFileにも有効ですか?
InternetOpenのハンドルを使って設定しているのですが、設定時間を
無視してるので教えて下さい。
0285106.79-160-162.customer.lyse.net2009/08/17(月) 17:53:44
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

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

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



----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
0286デフォルトの名無しさん2009/08/17(月) 17:56:48
>>282
http://support.microsoft.com/kb/257592
Windows2000からユーザー単位での指定もできるようになった。
関連付けは英語だと「File Associations」だから、
それでSDKのドキュメントなりググるなりすれば良い。
0287デフォルトの名無しさん2009/08/17(月) 18:32:42
今どき95に対応するつもりかよw
使えるAPI制限されまくりで大変だろ
02882722009/08/17(月) 18:40:00
>>286
便利なAPIはないようですね
教えていただいたワードでも調べてみます
ありがとうございました

>>287
私のpcの1つが98seなので
対応しておきたいなぁ、と思いまして・・・
0289デフォルトの名無しさん2009/08/17(月) 18:45:44
HKEY_CLASSES_ROOT以下でいいだろ
XPやVistaでも使える
0290デフォルトの名無しさん2009/08/17(月) 18:58:44
xp以降はHKEY_CLASSES_ROOTに書いても関連付けできないと思っていそうだなw
0291デフォルトの名無しさん2009/08/17(月) 19:17:19
コントロールパネルを列挙する画面を作りたいんだが
コントロールパネルの情報(コメントやファイル名)って全部レジストリ?
0292デフォルトの名無しさん2009/08/17(月) 19:21:24
コントロールパネルのIShellFolderを取ってきてEnumObjectsでおk
0293デフォルトの名無しさん2009/08/17(月) 19:27:31
>>292
有難う!調べてみる!
0294デフォルトの名無しさん2009/08/17(月) 20:24:50
C++でWin32アプリケーションを作っています
下の画像のようなツリービューを作成したいのですがどうすればいいでしょうか?
http://www.codeproject.com/KB/tree/Three_State_TreeView/ThreeStateTreeView1.png
02952942009/08/17(月) 20:30:29
ダイアログならちゃんとツールボックスに用意されてますね
よくも調べもせずスレ汚しました、すみません
0296デフォルトの名無しさん2009/08/18(火) 11:30:31
非同期的なファイルの読み書き
http://www.geocities.jp/ky_webid/win32c/052.html

上のサイトのサンプルをReadFile→WriteFileに変更して(ReadFileだとキャッシュされる?ので非同期の確認ができない)
実行しても非同期にならない
ソース、WriteFile、環境 何が原因?
0297デフォルトの名無しさん2009/08/18(火) 11:49:40
>>296
#define ASYNC_MODE
してるか?
02982962009/08/18(火) 12:01:19
してる
0299デフォルトの名無しさん2009/08/18(火) 12:27:41
FILE_FLAG_NO_BUFFERINGかFlushFileBuffers を使わないと
0300デフォルトの名無しさん2009/08/18(火) 16:25:30
またソコのHPか
0301デフォルトの名無しさん2009/08/18(火) 19:29:59
猫でも〜
WisdomSoft
Programing Place
はよくお世話になっております
0302デフォルトの名無しさん2009/08/18(火) 19:39:47
Programing(笑)

プログラミングの綴りを間違えるサイトは100パーセント糞であるという法則
0303デフォルトの名無しさん2009/08/18(火) 19:41:46
前スレまで貼ってあったのに>>1がテンプレから外すからだろ・・・

つーか「サンプルコードの質問は書いた奴に訊け(ここで訊くな)」をテンプレに入れとけっつーの
0304デフォルトの名無しさん2009/08/18(火) 19:55:38
>>302 が恥をかいてはかわいそうなので一応教えておいてやるが、

programming だけだと思っていたら時代に取り残されるぞ。
今は、programing もあるんだぞ。誤りだと嘲笑すると恥ずかしい目にあうぞ。
嫌いだと主張するのはら抜きと同じで構わないが。
0305デフォルトの名無しさん2009/08/18(火) 20:06:22
本人降臨キタコレwww


>>304
ハイハイ言い訳乙
0306デフォルトの名無しさん2009/08/18(火) 20:14:19
サイト移転してちゃっかりスペル直してるのがワロスw
0307デフォルトの名無しさん2009/08/18(火) 20:14:45
>>305
おまえ、ホントに恥ずかしい奴だな。少しは謙虚に調べるとかしないのか。
ttp://www.yourdictionary.com/program

言っておくが、本人じゃないよ。
0308デフォルトの名無しさん2009/08/18(火) 20:20:20
どう見ても本人です本当にありがとうございました
0309デフォルトの名無しさん2009/08/18(火) 20:20:33
確かにグーグルで”Programing”で検索した場合に

 もしかして:”Programming”

が出ないな。
0310デフォルトの名無しさん2009/08/18(火) 20:29:03
おまえらなんで辞書引かないの?
0311デフォルトの名無しさん2009/08/18(火) 20:30:27
どうみても>>308のほうが恥ずかしい件
0312デフォルトの名無しさん2009/08/18(火) 20:34:01
辞書を引くから、ちゃんとprogrammingって書いてるんだよ。

うろ覚えでprogramingと書いていて、指摘されて辞書見たらprogramingでもいいとあって
鬼の首を取ったようにprograming連呼してるやつの方が間抜け。
0313デフォルトの名無しさん2009/08/18(火) 20:38:48
>>312の思考で行くとprogramingを鬼の首を取ったように指摘して叩いてる>>302の方が間抜けだと思う。
0314デフォルトの名無しさん2009/08/18(火) 20:39:25
そんな古い辞書は、窓から投げ捨てた方がいいぞ。
ちゃんと最新の英々辞典とか使えよ。
上記辞書サイトの transitive verb にも、ちゃんと、
programming or programing と載ってるだろ。
0315デフォルトの名無しさん2009/08/18(火) 20:40:15
もうだめだこのスレ
0316デフォルトの名無しさん2009/08/18(火) 20:44:46
programingを正当化するんだったら新サイトとやらもprogramingのままにしとけばいいじゃん?
0317デフォルトの名無しさん2009/08/18(火) 20:49:12
Programing Placeの移転先サイトでProgramingをProgrammingに変更した理由がなんか分かった気がする。
0318デフォルトの名無しさん2009/08/18(火) 20:52:56
辞書に載ってるか否かで判断するしか能が無いのか。
0319デフォルトの名無しさん2009/08/18(火) 20:53:53
おまえらオススメのWin32API関係のサイトを教えあう流れになると思ってたのにがっかりだ
0320デフォルトの名無しさん2009/08/18(火) 20:56:04
なんか盛り上がってるなw 本人っぽい人まで来てるし
0321デフォルトの名無しさん2009/08/18(火) 21:05:31
本人なら、サイトをprogramming に変更しないだろ。
0322デフォルトの名無しさん2009/08/18(火) 21:08:42
次移転するときはprogrammmingに決まりだな
0323デフォルトの名無しさん2009/08/18(火) 21:10:30
SEOだろ。
programing・programmingを混ぜて検索サイトにかかりやすくする。
0324デフォルトの名無しさん2009/08/18(火) 21:10:52
どっちでもいいよ。 方言ってことでいいだろ。 英語なんてそんなもんだ。
アフリカとかのグダグダな英語も「英語」だからな。
そんくらいの表記のゆらぎは許容範囲内だ。
0325デフォルトの名無しさん2009/08/18(火) 21:14:31
連中はスペルチェッカーが無いとマトモにスペルが書けないからなw
漢字の筆順が違うだけで先生に怒られる日本とは大違いだぜ。
0326デフォルトの名無しさん2009/08/18(火) 21:20:52
おまいら
いいかげんにしろ
0327デフォルトの名無しさん2009/08/18(火) 21:22:10
間違いでないならどっちでもいいじゃん。
ムキになって指摘してるほうがどうかしてるよ。
0328デフォルトの名無しさん2009/08/18(火) 22:02:53
ムキになっているのは本人だけのような
0329デフォルトの名無しさん2009/08/18(火) 22:22:37
ムキムキマン
0330デフォルトの名無しさん2009/08/19(水) 09:34:04
>>319
MSDNの英語版と非公開APIの解析サイト以外要らないだろ
0331デフォルトの名無しさん2009/08/19(水) 09:52:56
個人のWin32API解説サイトなんて見るだけ時間の無駄
そんなの見てるぐらいならオープンソースソフトのソースコードを読む方がよほど勉強になる。
0332デフォルトの名無しさん2009/08/19(水) 10:23:21
インターネットの設定で同時ダウンロード数の制限を
プログラムから変更したいのですができますか?
手動でレジストリー変更してPC再起動の手順はわかったのですが、
プログラムから変更して再起動無しでやりたいのです。
よろしくお願いします。
0333デフォルトの名無しさん2009/08/19(水) 10:37:29
WinInetのサーバー毎同時接続制限なら
InternetSetOption
INTERNET_OPTION_MAX_CONNS_PER_SERVER
INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER
0334デフォルトの名無しさん2009/08/19(水) 11:09:49
早速のレス有り難うございました。
0335デフォルトの名無しさん2009/08/19(水) 14:23:00
DIBをDIBitsToDeviceとかで描画するときに、
DIB_RGB_COLORSを指定して8ビット以下のDIBも描画できたんですが、
使い方は合っていますか?
8ビット以下のときはカラーテーブル数を調べてから
SetDIBitsToDeviceでDIB_PAL_COLORSを指定して描画するべきなのか
教えてください。
0336デフォルトの名無しさん2009/08/19(水) 20:42:48
>>335
それでOK。
DIB_PAL_COLORSは、BITMAPINFO.bmiColorsが
現在の論理パレットのインデックスを指すのを示すときに使う。
色替えとかが簡単にできる、のかなあ。
03373352009/08/20(木) 01:36:55
>>336
ビット数を気にしないでDIB_RGB_COLORSを
指定していいことが分かってスッキリしました。
ありがとうございました。
0338デフォルトの名無しさん2009/08/20(木) 09:29:16
デバイス依存じゃないの
0339デフォルトの名無しさん2009/08/20(木) 17:28:25
GDIがデバドラ依存なのはXPまでじゃね?
0340デフォルトの名無しさん2009/08/20(木) 17:53:22
IShellFolderを使い、EnumObjectsでコントロールパネルを列挙して
それぞれのパスを取得しようとしてるんだが、上手く行かない
SHGetPathFromIDListを使ってITEMIDLISTからパス取得使用としてるけど
今回のケースの場合SHGetPathFromIDListって使えない?
0341デフォルトの名無しさん2009/08/20(木) 18:35:39
>>340
そうだよ。ファイルシステムに存在しないものに対して使うと失敗すると解説されているとおり。
http://msdn.microsoft.com/en-us/library/bb762194.aspx
0342デフォルトの名無しさん2009/08/20(木) 18:43:15
>>341
有難う!
コントロールパネルそれぞれのパスが欲しいんだけど、ITEMIDLISTからは無理か
良い解決策ないかな?
0343デフォルトの名無しさん2009/08/20(木) 19:00:21
コントロールパネルの項目って実体があるとは限らないから無理じゃないの?
まあ大抵はsystem32\*.cplだろうけど
0344デフォルトの名無しさん2009/08/20(木) 19:06:17
コンパネはいじったことないがあるとすればレジストリかなぁ
レジストリ用のSHGetFolderPathみたいなのがあればなぁ・・・
0345デフォルトの名無しさん2009/08/20(木) 19:38:08
つーかパスなんか取得して何をするつもりなの?
0346デフォルトの名無しさん2009/08/20(木) 21:02:36
>>343
やっぱり今の手法じゃ無理かな…
管理ツールとか、只そのカテゴリ分けされてるだけだしね

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

>>345
只起動するだけなら、ITEMIDLISTからで大丈夫だけど
今は*.cplを取得して、それぞれのcplの場所が知りたいの
0347デフォルトの名無しさん2009/08/20(木) 21:53:21
だったらsystem32\*.cplを片っ端からLoadLibrary→GetProcAddress("CPlApplet")で調べればいいだろ
0348デフォルトの名無しさん2009/08/20(木) 22:00:44
>>347
それは試したよ。片っ端からCPL_NEWINQUIREで情報貰おうとしても
��プログラムの追加と削除”とかのコメントが取得出来ない
調べると、CPL_NEWINQUIREで情報取る仕様のはずが、殆どがレジストリ管理とのこと
0349デフォルトの名無しさん2009/08/20(木) 22:15:26
そいつはレジストリ側に登録されるタイプだからだろ。
0350デフォルトの名無しさん2009/08/20(木) 22:26:47
コントロールパネルの実体がcplとは限らないのに、
cplの場所が知りたいとか矛盾してないか?
0351デフォルトの名無しさん2009/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を設定済み)
0352デフォルトの名無しさん2009/08/20(木) 22:46:28
そんな事より sizeof(TCHAR) * 6 は間違いだろ
0353デフォルトの名無しさん2009/08/20(木) 23:19:23
>>352
すいません、まだC言語とWin32APIを始めて半年ちょっとの初心者なので
(TCHAR FontSizeText[6](サイズコンボボックスの最大文字数が5文字の為))
と宣言したので(sizeof(TCHAR) * 6)としてしまいました
模範的な方法はどうしたらいいですか?
0354デフォルトの名無しさん2009/08/21(金) 00:13:48
WM_GETTEXTLENGTH の戻り値を使う。
0355デフォルトの名無しさん2009/08/21(金) 01:23:37
そしてGetDlgItemIntのことも思い出してやってください
え、サイズは0.5ポイント単位で入れられる? いいんだよ細けぇことは
0356デフォルトの名無しさん2009/08/21(金) 03:54:07
Vistaで自プロセスが昇格しているかしていないかを取得するにはどうしたら良いのでしょうか
ご指導のほどお願いします
0357デフォルトの名無しさん2009/08/21(金) 04:18:00
GetTokenInformationでTokenElevationTypeかTokenElevation
0358デフォルトの名無しさん2009/08/21(金) 04:57:21
>>357
なんとかなりました
こんな夜中にありがとうございました
0359デフォルトの名無しさん2009/08/21(金) 06:05:22
IsUserAnAdminじゃ駄目なの?
0360デフォルトの名無しさん2009/08/21(金) 07:07:11
ダメ
0361デフォルトの名無しさん2009/08/21(金) 07:29:16
駄目じゃないだろ
0362デフォルトの名無しさん2009/08/21(金) 07:35:01
UACがONの状態でProgram Files配下のファイルを書き換えても
VirtualStoreにリダイレクトされていないようなのですが
Windows 7からUACの挙動は変わったのでしょうか?
エクスプローラに"互換性ファイル"ボタンも表示されません。
けどなぜか新しくファイルを作成するのには失敗するんです・・・
0363デフォルトの名無しさん2009/08/21(金) 08:27:25
ハァ?
0364デフォルトの名無しさん2009/08/21(金) 12:29:23
>>362
そのプログラムにマニフェストがついているのでは?
例えUAC関連の記述がなかったとしても、マニフェストがあると
UAC対応済みとして扱われ、仮想化が働くなる。
0365デフォルトの名無しさん2009/08/21(金) 13:02:31
64bitじゃないの?
0366デフォルトの名無しさん2009/08/21(金) 21:53:04
VisualStudioが自動的にUAC関連のマニフェストを組み込んでいたみたいです
おさわがせしました
0367デフォルトの名無しさん2009/08/21(金) 23:10:06
>>354
ありがとうございます、3文字以内に制限する方法があったんですね

>>355
そんな便利な関数知りませんでした、500ポイント以内とかにする場合にいいですね
細かい事は気にせず使ってみたいと思います、ありがとうございました
0368デフォルトの名無しさん2009/08/21(金) 23:23:04
そういえばWM_GETTEXTLENGTHで0x10000000とか返してくるソフトがあったな
0369デフォルトの名無しさん2009/08/21(金) 23:27:19
アバウトな・・・
0370デフォルトの名無しさん2009/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));
0371デフォルトの名無しさん2009/08/22(土) 13:35:03
やるなよ
絶対やるなよ
0372デフォルトの名無しさん2009/08/23(日) 00:08:08
WM_TIMERからTrackPopupMeueを呼ぶと
表示したポップアップメニューの関係無い所をクリックしても
ポップアップメニューが消えないんだが
マウスフックを使わずにポップアップメニューを消す方法ないかな?
0373デフォルトの名無しさん2009/08/23(日) 00:36:42
試したところ普通に消えたぞ
消してもWM_TIMERがまた送られたら表示されるが
0374デフォルトの名無しさん2009/08/23(日) 01:17:05
Windows7で試したのだが、
ポップアップ表示前に他アプリのウィンドウをアクティブにしておくと、
表示後はポップアップのメニュー項目をクリックするか、
親アプリをクリックしない限り消えない。

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

これは難しいね
確かにマウスフックして、親アプリのスレッドからEndMenuを呼び出すしかなそう
0376デフォルトの名無しさん2009/08/23(日) 03:36:58
aho hakken
0377デフォルトの名無しさん2009/08/23(日) 09:06:46
DirectInputでも出来るらしいが、それならフックした方が簡単
フック無しで消す方法は俺は知らない
0378デフォルトの名無しさん2009/08/23(日) 10:38:50
>>375
あるいは自アプリを強制的にフォアグラウンドにしてからメニューを出すかだろ。
0379デフォルトの名無しさん2009/08/23(日) 13:10:59
>>378
試してみたが駄目だった
0380デフォルトの名無しさん2009/08/23(日) 15:28:33
>ポップアップ表示前に他アプリのウィンドウをアクティブにしておくと、
>表示後はポップアップのメニュー項目をクリックするか、
>親アプリをクリックしない限り消えない。

こんなの常識だろ
通知領域でポップアップメニュー出したこと無いのか?
0381デフォルトの名無しさん2009/08/23(日) 16:31:21
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!
0382デフォルトの名無しさん2009/08/23(日) 18:30:52
>>380
アフォ発見w
0383デフォルトの名無しさん2009/08/23(日) 19:18:20
>>379
Win98以降、単にSetForegroundWindowを使っただけでは
フォアグラウンドウィンドウにならない場合があるが、それも考慮済み?
0384デフォルトの名無しさん2009/08/23(日) 19:27:35
>>382
アフォはお前だよw
0385デフォルトの名無しさん2009/08/23(日) 19:38:25
WM_TIMERでポップアップメニューとかどんなウイルスだよw
0386デフォルトの名無しさん2009/08/23(日) 21:02:28
そんな事よりexplorerが落ちた後ちゃんと
通知領域に復帰するように作っとけよ
0387デフォルトの名無しさん2009/08/23(日) 21:06:53
>>383
それは知らなかった
確実にフォアグラウンドする方法ってまた別にあるの?
0388デフォルトの名無しさん2009/08/23(日) 21:11:55
MSがするなって言ってんだよ
0389デフォルトの名無しさん2009/08/23(日) 21:47:40
Win95の頃は、皆が好き勝手にフォアグラウンド化しようとして
えらい事になっていたからなあ。
あまりの鬱陶しさにユーザーが切れた結果、Win98以降でこうなった。
0390デフォルトの名無しさん2009/08/23(日) 22:50:07
>>386
explorerが面倒見ろっつーの
なんでポンコツなシェルの尻拭いをアプリ側がせにゃならんのだ
0391デフォルトの名無しさん2009/08/23(日) 22:56:03
>>389
想像で物を語るな
0392デフォルトの名無しさん2009/08/23(日) 23:00:22
>>391
では真実を教えてたもれ。
0393デフォルトの名無しさん2009/08/23(日) 23:17:01
むかしむかし、Win98がまだベータ版だった時代のお話。
Win98はWin95に比べて多くのコードを書き直したため、
SetForegroundWindowでフォアグラウンドできないという
バグが混入してしまった。
しかし、今からこのバグを修正するにはスケジュールが
間に合わなくなるという事態が発覚。
ただでさえ、Win97を出すつもりが延期してしまっている。
もうこれ以上の延期は許されない。
散々悩んだ挙句、開発チームの出した結論は
「仕様ということにして何とかユーザーに納得してもらう」
だった。で、社内で尤もらしい言い訳を公募して採用されたのが

「好き勝手にフォアグラウンドしてはいけません。だから、・・・できません!」
0394デフォルトの名無しさん2009/08/23(日) 23:29:29
>>393
想像で物を語るな
0395デフォルトの名無しさん2009/08/23(日) 23:43:49
妄想には妄想で返せってこった
0396デフォルトの名無しさん2009/08/23(日) 23:53:46
>>389 って事実だろ。漏れMSの中の人に同じこと聞いたことあるお。
0397デフォルトの名無しさん2009/08/24(月) 01:07:44
自己フォロー乙
0398デフォルトの名無しさん2009/08/24(月) 01:09:42
>>397
事実じゃないって事?
0399デフォルトの名無しさん2009/08/24(月) 01:29:05
Win98/2000の頃のMSDNライブラリを持ってくれば、
ユーザーフィードバックを理由に変更した事の旨が書かれているんだろうけど。
流石に10年近く昔の話だしなあ。
そもそも、Win95/NT4まで好き放題できていた事実自体、どれだけ知っている人がいるのやら。
0400デフォルトの名無しさん2009/08/24(月) 01:42:20
>>399
書かれてない。嘘はつかないように
0401デフォルトの名無しさん2009/08/24(月) 01:53:50
>>399
おっさんの妄想乙
0402デフォルトの名無しさん2009/08/24(月) 02:10:21
>>380
これ、英語版MSDNにはちゃんと書いてあるんだが日本語版にはないんだよな。
http://msdn.microsoft.com/en-us/library/ms648002.aspx
0403デフォルトの名無しさん2009/08/24(月) 06:26:10
explorerが落ちたことを検知するにはポーリングするしかないの?
0404デフォルトの名無しさん2009/08/24(月) 06:30:30
なんのために?
0405デフォルトの名無しさん2009/08/24(月) 06:50:07
>>403
通知が来る
0406デフォルトの名無しさん2009/08/24(月) 10:46:40
落ちたことを検知する方法なんて無いでしょ
0407デフォルトの名無しさん2009/08/24(月) 10:51:58
ログオフなどによる正常な終了と落ちたことを区別するのは困難だな
0408デフォルトの名無しさん2009/08/24(月) 13:42:20
>>404
>>386
タスクマネージャー消失が地味に困る
0409デフォルトの名無しさん2009/08/24(月) 13:55:43
>>408
それはexplorerが落ちたときにどうするつもりなの?
普通は再起動時に何とかするもんじゃないかね。
TaskbarCreated を RegisterWindowMessageして通知来たら再登録でいいじゃない。
0410デフォルトの名無しさん2009/08/24(月) 14:14:57
GetOpenFileNameでファイル選択ダイアログを開くと
選択したファイルを右クリックしても、ポップアップメニューが表示されない事があるんだが
これはどういう場合に発生する?
0411デフォルトの名無しさん2009/08/24(月) 14:48:06
・シェルが落ちて再起動したらTaskbarCreatedを送ってあげるのでソフト側で対応しろ
・シェルが4秒以上ハングアップしてるとタイムアウトしてあげるので
APIが失敗した場合はLastErrorチェックしてソフト側で対応しろ

落ちたりハングアップしないシェルを作れよw
0412デフォルトの名無しさん2009/08/24(月) 14:50:00
いやユーザーが強制的に落とすこともできるし
0413デフォルトの名無しさん2009/08/24(月) 15:19:01
タスクバーのプロセスをシェルから分離して、フックなどの侵入を許さない設計にすればいいのにねぇ

ま、そうなるとTClock愛好者は困るだろうけどw
0414デフォルトの名無しさん2009/08/25(火) 03:49:44
case WM_TIMER:
hoge() ;
break ;

見たいな感じでsettimerでセットした時間で呼び出す関数hogeがあったとして
前回のhogeの実行が終わってない状態で時間が来てhogeが呼び出された
場合どういう風に処理されるんでしょうか?
0415デフォルトの名無しさん2009/08/25(火) 03:55:41
どうしてそういう心配をしないといけないのかさっぱりわからない
0416デフォルトの名無しさん2009/08/25(火) 06:51:48
メッセージのヘルプぐらい読めよとしか言いようがない。
0417デフォルトの名無しさん2009/08/25(火) 09:45:31
>>414
メッセージは1つずつ順番に処理される。
1回目のWM_TIMER呼び出しからreturnされていないのなら、その他のメッセージが処理されることはない。

ついでにいうと、hoge()が処理している間ウインドウを動かすメッセージとかも処理されないわけだから、
ウインドウが固まったようにユーザーは思うはず。
メッセージ処理の中であまり思い処理をやらないように
0418デフォルトの名無しさん2009/08/25(火) 10:11:44
WM_TIMER のなかで無限ループしてる人ときどき見かけるよね
0419デフォルトの名無しさん2009/08/25(火) 10:43:24
その場合はhogeが延々と呼び出され続けるのでプログラムがハングアップしてしまう
そこでメッセージ処理の中ではあまり重い処理をやらないようにしなければならない

初期のWindowsのころはハードウェアの処理能力が少なかったのでよくPCがフリーズしたが
最近は十分な処理能力があるので少々重い処理をしても大丈夫になった
0420名無し学生2009/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
0421デフォルトの名無しさん2009/08/25(火) 11:06:23
http://www.google.co.jp/search?hl=ja&source=hp&q=CStr()%E3%81%A8Str()%E3%81%AE%E9%81%95%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=
0422デフォルトの名無しさん2009/08/25(火) 11:54:10
助ける訳ねーだろ
このスレには弱者蹴り落として喜ぶサドしかいねーよ
0423デフォルトの名無しさん2009/08/25(火) 11:56:18
>>420
スレ違いしねくず
0424デフォルトの名無しさん2009/08/25(火) 12:03:54
>>419
ウィンドウプロシージャは10ミリ秒以内に処理を返せみたいな制限があったはず
今はどうだか知らないけど
0425デフォルトの名無しさん2009/08/25(火) 12:17:58
マルチポスト報告スレ
http://pc12.2ch.net/test/read.cgi/tech/1251165265/

ttp://pc12.2ch.net/test/read.cgi/tech/1225268851/688
ttp://pc12.2ch.net/test/read.cgi/tech/1158410544/183
ttp://pc12.2ch.net/test/read.cgi/tech/1245309571/793
ttp://pc12.2ch.net/test/read.cgi/tech/1136788500/388
ttp://pc12.2ch.net/test/read.cgi/tech/1200175247/601
ttp://pc12.2ch.net/test/read.cgi/tech/1249687283/408
ttp://pc12.2ch.net/test/read.cgi/tech/1239996587/711
ttp://pc12.2ch.net/test/read.cgi/tech/1248487404/279
ttp://pc12.2ch.net/test/read.cgi/tech/1193667819/60
ttp://pc12.2ch.net/test/read.cgi/tech/1164783092/937
ttp://pc12.2ch.net/test/read.cgi/tech/1206835319/963
ttp://pc12.2ch.net/test/read.cgi/tech/1247937958/547
ttp://pc12.2ch.net/test/read.cgi/tech/1247636661/861
ttp://pc12.2ch.net/test/read.cgi/tech/1249140049/420
0426デフォルトの名無しさん2009/08/25(火) 12:20:22
運営に報告すればいいだろ
0427デフォルトの名無しさん2009/08/25(火) 13:59:18
アプリケーション内でユニークなIDを発行するAPIはありますか?
インスタンス全てにIDを付けたいのですが・・・
0428デフォルトの名無しさん2009/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 の中の人は算数が苦手な小学生と考えられる。
0429デフォルトの名無しさん2009/08/25(火) 14:05:37
カウントしてけばいいだけ
0430デフォルトの名無しさん2009/08/25(火) 15:50:08
>>427
インスタンスのアドレスはユニーク。
0431デフォルトの名無しさん2009/08/25(火) 15:54:55
>>430
不要物を解放できなくないか
0432デフォルトの名無しさん2009/08/25(火) 16:01:33
ハァ?
0433デフォルトの名無しさん2009/08/25(火) 16:06:47
不要物って何だ
0434デフォルトの名無しさん2009/08/25(火) 16:19:20
老廃物にきまってるだろ
0435デフォルトの名無しさん2009/08/25(火) 16:30:47
nullpo
0436デフォルトの名無しさん2009/08/25(火) 16:45:17
>>417-419
丁寧にありがとうございます!
やっと今自分のプログラムで起きてることが
理解できました(^ω^;)
0437デフォルトの名無しさん2009/08/25(火) 17:24:40
>>427 uuidなんかどうよ
0438デフォルトの名無しさん2009/08/25(火) 17:45:43
だからそもそもインスタンス自体がユニークだろが
0439デフォルトの名無しさん2009/08/25(火) 17:47:00
アプリケーション内でって言ってんだからアドレスで十分だわ
0440デフォルトの名無しさん2009/08/25(火) 18:00:18
解放後に同じアドレスを割り当てられても問題が無いのか
0441デフォルトの名無しさん2009/08/25(火) 18:01:49
開放後もID持ち続けるとかどういうクソ構造だよ
0442デフォルトの名無しさん2009/08/25(火) 18:42:53
438-441
ワロタ
0443デフォルトの名無しさん2009/08/25(火) 20:36:44
笑う所なんて無いじゃん
頭おかしいのか?
0444デフォルトの名無しさん2009/08/25(火) 20:38:01
ユニークだからか?
0445デフォルトの名無しさん2009/08/25(火) 20:53:26
Vous ette original hahaha.
0446デフォルトの名無しさん2009/08/25(火) 23:23:06
UNICODEにも対応するプログラムを書くときに
文字列を受け取る処理を書くときって

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

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

UNICODEだと、szBufferはwchar_tだから、sizeof(szBuffer)だと512になるから
文字列を受け取るバッファサイズは512になるから、問題出てくるよね?
0447デフォルトの名無しさん2009/08/25(火) 23:26:16
>>440 そのアドレスをどこからも参照しなくなるから開放するわけで、仮に同じアドレスが割り当てられたとしても問題ない。
開放したアドレスの参照を持ち続けているほうが問題。

shared_ptrを使えばアドレスをオブジェクトを区別するユニークなIDとして使える。
0448デフォルトの名無しさん2009/08/25(火) 23:29:36
このスレ的にはshared_ptrよりむしろIUnknown継承+_comptr_t
0449デフォルトの名無しさん2009/08/26(水) 11:01:26
普段画面を隠して、マウスがある位置に来たら表示するようにしたくて

ShowWindow
SetForegroundWindow
SetFocus

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

何かいい解決策ないかな?
0450デフォルトの名無しさん2009/08/26(水) 11:44:28
いい方法はない

悪い方法1
SPI_SETFOREGROUNDLOCKTIMEOUT
悪い方法2
グローバルフックなどのコードインジェクションでアクティブスレッドから無理矢理変更
0451デフォルトの名無しさん2009/08/26(水) 11:54:48
悪い方法3
AttachThreadInput
0452デフォルトの名無しさん2009/08/26(水) 12:00:10
>>450-451
悪い方法しかないのかw
一応一通り試してみるよ
有難う!
0453デフォルトの名無しさん2009/08/26(水) 13:03:08
>>452
いや、だって、普通に操作してるとき、唐突に他のウインドウがフォーカス奪ったら嫌じゃね?
しかも奪いっぱなしだったらさらに嫌じゃね?
だからできないようにできてるんだって。
0454デフォルトの名無しさん2009/08/26(水) 13:07:54
妄想で物を語る人が出てくる予感。
0455デフォルトの名無しさん2009/08/26(水) 14:26:58
というかそんなのウィルスだろ。
0456デフォルトの名無しさん2009/08/26(水) 14:32:05
お前の脳みそがな
0457デフォルトの名無しさん2009/08/26(水) 14:52:21
MSDNの低帯域モードで表示がバグってるんだが俺だけ?
ttp://msdn.microsoft.com/en-us/library/bb773397(VS.85,loband).aspx

FirefoxどころかIEでもおかしいので困ってる。
0458デフォルトの名無しさん2009/08/26(水) 14:54:24
いや、バグってる確かに
0459デフォルトの名無しさん2009/08/26(水) 15:36:01
開発者ツールでつついて見たんだが、とりあえずユーザーCSSに↓を追加で回避できた。
div.libCScode { clear: none !important; }

IE8で互換表示をオンにすると崩れないのがワロスw
なんでIE6/7向けのCSSをIE8や火狐に送ってんだよwww
0460デフォルトの名無しさん2009/08/27(木) 12:23:42
>>435
ga
0461デフォルトの名無しさん2009/08/27(木) 21:51:29
>>212なんですが、重ねて質問します
Web上でのコードなどはGetDC(hwnd)などとして描画していて、wParamの値を使っていませんが
メッセージのwParamで渡されるハンドルは一体何に使えるんでしょうか
0462デフォルトの名無しさん2009/08/27(木) 22:16:37
クリッピングされていると書いてあるだろう。
いったい何が聞きたいんだ?
0463デフォルトの名無しさん2009/08/27(木) 22:29:00
そのFillRgnしたらずれた位置に描画が起こってしまうんですけど、
どういった領域をあらわしてるんでしょうか
0464デフォルトの名無しさん2009/08/27(木) 22:31:25
クライアント領域のDCを取得してるからだろ
0465デフォルトの名無しさん2009/08/27(木) 22:43:25
では>>212のページに書いてあるのとは違う方法でHDCを取得する必要があるということですか
0466デフォルトの名無しさん2009/08/27(木) 22:49:51
See also: GetWindowDCと書いてないか
0467デフォルトの名無しさん2009/08/27(木) 23:46:00
つーか非クライアント領域に描画するのは行儀が悪いからやめとけ。
0468デフォルトの名無しさん2009/08/28(金) 09:22:38
UNICODEでビルドしたらアプリってWin9x系でも動く?
0469デフォルトの名無しさん2009/08/28(金) 11:29:51
動かない
98の関数ってUnicode版は定義してあるだけの奴が多い
中身も実装されてるのはほとんど描画関係
0470デフォルトの名無しさん2009/08/28(金) 11:37:13
有難う
じゃあ一つのバイナリでANSIとUNICODEへの切替は無理か…
0471デフォルトの名無しさん2009/08/28(金) 11:41:21
LoadLibraryして自分で呼ぶ方切り替えればいけるんじゃね?糞面倒そうだが。
0472デフォルトの名無しさん2009/08/28(金) 12:27:24
サービスが作成した名前付パイプに,通常のプロセスから
CreateFile(L"\\\\.\\pipe\\pipename", GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
とアクセスしたところ,アクセス拒否が帰ってきてCreateFileに失敗してしまいます
プロセスを管理者権限で起動すると,上記のCreateFileは成功します.
なんとか管理者権限で起動することなく,サービスのパイプに接続する方法はないでしょうか?
環境はVista SP2です.
0473デフォルトの名無しさん2009/08/28(金) 12:34:08
権限の違う奴にアクセスしようとしてるのだから当たり前の動作のような気がするがな
0474デフォルトの名無しさん2009/08/28(金) 12:57:30
SECURITY_ATTRIBUTEでアクセス権限を設定しないと駄目
0475デフォルトの名無しさん2009/08/28(金) 15:48:46
TextOut関数のテキスト表示座標には浮動小数点が与えられるにもかかわらず
DrawText関数はRECT構造体をあさんでいるため、浮動小数点での渡し方がわかりません。
どうすればよいのでしょうか?RECT構造体のメンバ(座標を表すLeft, Top, Right, Bottom)がintで定義されてしまっています。
0476デフォルトの名無しさん2009/08/28(金) 15:54:28
TextOutはピクセル単位でしか描画できないから、整数値にキャストして渡す
0.以下のピクセルを指定したいならTextOutで一時ビットマップに出力してから、手動で欲しい出力を計算する
0477デフォルトの名無しさん2009/08/28(金) 16:04:55
>>476
TextOut関数は使おうとは思っていません。
DrawText関数は引数でRECT構造体を指定する必要があるので、RECT構造体の
座標が適用されます。しかしそれらのメンバはすべてintで定義されています。
intでメンバが定義されているとどうやってもdoubleを使うことはできないんですか?
0478デフォルトの名無しさん2009/08/28(金) 16:08:02
そうです
intしか受け取らないと表明している関数は、intしか受け取りません
0479デフォルトの名無しさん2009/08/28(金) 16:10:27
あ、なんとかできました。
単純にソースの順序がおかしかっただけでした。すいません。
0480デフォルトの名無しさん2009/08/28(金) 16:14:24
C言語のindex関数、rindex関数に相当するWin32APIは何でしょうか?
環境はUNICODEを想定していますが、TCHAR型も渡したいです。
0481デフォルトの名無しさん2009/08/28(金) 16:44:51
>>480
_tcschr
_tcsrchr
0482デフォルトの名無しさん2009/08/28(金) 17:06:52
StrStrもStrStrIもStrRStrIもあるのにStrRStrは無いんだよな
0483デフォルトの名無しさん2009/08/28(金) 18:08:09
>>474
参考になるページをご存じないでしょうか?
0484デフォルトの名無しさん2009/08/28(金) 18:11:36
>>482
StrStrを呼びまくれば実現できるからでは?
0485デフォルトの名無しさん2009/08/28(金) 18:14:01
Win32API(できれば)で、テキストファイルの行数を取得するにはどんな関数などを用いればいいんでしょうか
0486デフォルトの名無しさん2009/08/28(金) 18:15:49
かずをかぞえることもできないのですかおまえさんは

文字コード判定がめんどいけど
0487デフォルトの名無しさん2009/08/28(金) 18:23:28
できませんおしえてくださいくず
0488デフォルトの名無しさん2009/08/28(金) 18:25:14
りかいできないとおもわれるのでいやです
0489デフォルトの名無しさん2009/08/28(金) 18:26:05
SHGetLineCountNでいいよ
0490デフォルトの名無しさん2009/08/28(金) 19:07:43
>>483
つhttp://eternalwindows.jp/#security
0491デフォルトの名無しさん2009/08/28(金) 19:43:36
>>490
ありがとうございます.
無事解決しました.
0492デフォルトの名無しさん2009/08/28(金) 20:26:06
>>486
普通にできたけど
めんどくせえ…
0493デフォルトの名無しさん2009/08/28(金) 23:29:10
>>471
空実装ではあるが関数はあるので、わざわざLoadLibraryを使う必要はない。
処理を振り分けさえすれば動く。それでも面倒だが。

>>470
手軽に済ませるならunicows
ただし過度な期待は禁物。
0494デフォルトの名無しさん2009/08/28(金) 23:30:03
NT系のみを視野に入れて開発する場合
Unicodeがいいらしいけど、目に見えてメモリの使用量や軽さって分かる?
マルチバイトにすると、NT系のOSは常にUnicodeで保持しつるから
マルチバイトに変換するオーバーヘッドがかかるらしいが
0495デフォルトの名無しさん2009/08/29(土) 00:24:10
オーバーヘッド以前に、
シングルバイト圏で作ったソフトが、マルチバイト圏で文字化けしたり、最悪セキュリティホールになったら困るでしょ
0496デフォルトの名無しさん2009/08/29(土) 00:50:40
NT系の場合、基本的にANSI版APIはUnicode版へのthunkだが、
OutputDebugStringWのような例外もあるから注意な。
0497dye kkmzqlm2009/08/29(土) 00:52:04
jjn>>189me
ge
r>>189
> >>1o88. mshw
> SATAgケーブル 電源ケーブル ポートを変えてやってみる
v> ae
> rIDEモードでF6指示無しは正常だろう
>
> マザーかHDDが壊れてるんじゃ
なpzいの
0498ddye kkmzqlm2009/08/29(土) 00:53:25
>>491vio
> >>4c90
> ありがとうございます.
> 無事解決しました.
0499ddye kgkkmqqzlqClmgdhgai2009/08/29(土) 00:56:24
abwnfyu
0500ncbddyie kgfwikkmqqzlqClm vgdhgtai 2009/08/29(土) 00:58:10
fgaslb q
0501デフォルトの名無しさん2009/08/29(土) 01:41:03
MSも結構な頻度で呼び出される事は想定済みだろうから、
鬼のような最適化がかかっていそうだ。
0502デフォルトの名無しさん2009/08/29(土) 02:32:13
MFCのserializeって、Unicodeモードに設定しておいても
吐き出すファイルがShiftJISになっちゃわない?

とてもこまる。
0503デフォルトの名無しさん2009/08/29(土) 02:52:21
OutputDebugStringはANSI版の方が実体なんだよなー
だからUnicodeな文字が化けちゃうし、
OutputDebugStringWよりOutputDebugStringAの方がオーバーヘッドが小さいというw
0504デフォルトの名無しさん2009/08/30(日) 20:59:16
ほす
0505デフォルトの名無しさん2009/09/01(火) 06:40:04
素朴な疑問なのですが、なぜクループボックスがBUTTONコントロールの一種なのでしょうか。
STATICコントロールなら分かりますが…

別の疑問で、ツールチップに使用するTOOLINFO構造体がありますが、

typedef struct tagTOOLINFO {
 UINT cbSize;
 UINT uFlags;
 ...中略...
#if (_WIN32_WINNT >= 0x0501)
 void *lpReserved;
#endif
} TOOLINFO, NEAR *PTOOLINFO, *LPTOOLINFO;

最後のメンバlpReservedをわざわざ追加しているのはなぜでしょうか。
必要になった時に追加すればいいように思うのですが。
0506デフォルトの名無しさん2009/09/01(火) 06:57:45
>>505
常に追加しておかないと、構造体のサイズが変わってしまう。
変わっちゃうと、cbSizeの値を見てバージョンを判断しているようなコードが困る。
0507デフォルトの名無しさん2009/09/01(火) 07:03:35
連投失礼します。もう一つ質問しようと思っていたのを忘れてしまいました。
コモンコントロールで、ツリービューやリストビュー、ページャー等
TreeView_*やListView_*、Pager_*といったマクロがヘッダで定義されているものと、
トラックバーやアップダウン等こういったマクロが定義されていないものがありますが、
なぜ全てのコントロールでマクロを定義しないのでしょうか。
0508デフォルトの名無しさん2009/09/01(火) 07:08:05
作った奴に聞け
0509デフォルトの名無しさん2009/09/01(火) 07:14:30
>>506
早速お答え頂いてありがとうございます。
>常に追加しておかないと、構造体のサイズが変わってしまう。
というのはどういうことでしょうか。追加するとサイズが変わると思うのですが。
また、
>cbSizeの値を見てバージョンを判断しているようなコードが困る。
とありますが、何のプログラムが、何のバージョンを、何のために判断するのでしょうか。
0510デフォルトの名無しさん2009/09/01(火) 07:20:43
作った奴に聞け
0511デフォルトの名無しさん2009/09/01(火) 07:22:57
>とありますが、何のプログラムが、何のバージョンを、何のために判断するのでしょうか。
何のプログラムが - Windows。
何のバージョンを - どのOSバージョンを対象にしたビルドか。
何のために - 以前のOSとの互換性をとるため。微妙に挙動が違っている可能性がある。
0512デフォルトの名無しさん2009/09/01(火) 08:20:19
久々に馬鹿が来たな
0513デフォルトの名無しさん2009/09/01(火) 08:20:47
>>511
プログラムがどのOSを対象にしたビルドであるかはmanifestで指定する仕組みなのではないかと思うのですが。
また、過去のOSとの互換性をとるために以下のように記述している場合も多いと思います。
TOOLINFO ti;
ti.cbSize=TTTOOLINFO_V2_SIZE;
このことから、プログラムがどのOSを対象にしているのか判断するのは無理ではないでしょうか。
それに、もしそうならOSのバージョンアップ毎にメンバを追加しなければならないはずですがそうではありませんし、
他の構造体はこのような余計のメンバが追加されてはいません。
0514デフォルトの名無しさん2009/09/01(火) 08:32:42
>素朴な疑問なのですが、なぜクループボックスがBUTTONコントロールの一種なのでしょうか。
>STATICコントロールなら分かりますが…

これはもういいのか
0515デフォルトの名無しさん2009/09/01(火) 08:34:51
何こいつw
manifestが無かった時代を知らないのか?www
0516デフォルトの名無しさん2009/09/01(火) 08:38:43
つーかlpReservedが追加されて何か困ることでもあるのか?
どうでもいいだろが
0517デフォルトの名無しさん2009/09/01(火) 09:01:20
>>514
それが一番聞きたかったです。

>>515
このメンバはWindowsXPで追加されており、manifestが無かった時代を考慮に入れる必要はないと思います。

>>516
困ることはあります。
このようにメンバを追加されると、それに気付かずに互換性に問題が出ることがあります。
例えばTOOLINFO構造体のメンバに値を設定するのに以下のようなコードを書いていたとします。
TOOLINFO ti;
ti.cbSize=sizeof(ti);
ti.uFlags=TTF_SUBCLASS;
...他のメンバを設定。しかし、lpReservedは設定していない...
SendMessage(hwnd,TTM_ADDTOOL,0,(LPARAM)&ti);
この場合lpReservedが不定値になり、このメンバに実際に何か意味を持たされた時にプログラムが正常に動作しなくなる可能性があります。
また、構造体のサイズが変わっているので過去のバージョンのOSで動作しなくなってしまいます。
TVITEMやLVITEM等の構造体にはcbSizeのような構造体のサイズを設定するメンバは存在せず、
maskでどのメンバが有効であるかを指定するようになっています。
そのようにすれば上記の問題は起こりませんが、なぜかTOOLINFO構造体はそうなっていません。
0518デフォルトの名無しさん2009/09/01(火) 09:07:21
だったらcbSizeにTTTOOLINFO_V2_SIZEを入れてりゃいいだろ。くだらねぇ
0519デフォルトの名無しさん2009/09/01(火) 09:21:07
> Reserved. Must be set to NULL.

とMSDNで書かれてるのにNULLを設定しないお前の糞コーディングを改めろ
0520デフォルトの名無しさん2009/09/01(火) 09:29:28
>>509
OSが機能を追加したりするとき、構造体を拡張することはよくあることなのです。
そういう場合、新しいコードが古いものを適切に判断できるように、
cbSizeメンバを持たせることは、windowsAPIの一種のセオリーになっています。
ユーザーがそれを気に入ろうが入るまいが無関係です。
そういうルールなのだから、API利用者はそれを遵守するだけです。
なお、大抵のreservedメンバは0またはNULLで初期化します。must be となっているはずなので
そうしなければなりません。
0521デフォルトの名無しさん2009/09/01(火) 09:35:54
aspelger
0522デフォルトの名無しさん2009/09/01(火) 09:45:35
過去のOSで動かないってねぇ・・・
何のために_WIN32_IEや_WIN32_WINNTがあると思ってんだよ
0523デフォルトの名無しさん2009/09/01(火) 09:48:08
>>518
過去にサイズが変わったことのある構造体では気をつけますが、そうでない場合
WNDCLASSEX wcex;
wcex.cbSize=CCSIZEOF_STRUCT(WNDCLASSEX,hIconSm);
などとわざわざ書いている人は見たことがありません。
(SDKにも "Set this member to sizeof(WNDCLASSEX)." と書いてある)

>>520
だんだん質問の意図と変わっていますが、この場合は機能を追加していないのにメンバが増えているのが不思議だったのです。
0524デフォルトの名無しさん2009/09/01(火) 09:49:51
頭悪そうだから何言っても無駄
0525デフォルトの名無しさん2009/09/01(火) 09:51:01
予約って意味分かるか
「よやく」って読むんだけど
辞書引いてみて
引いたらもう二度と戻ってこなくていいよ
0526デフォルトの名無しさん2009/09/01(火) 10:01:58
>>522
古いOSに無いAPI関数はDLLから動的に取得して利用したりしますが、
そういう場合その関数で使用する構造体や定数の定義を利用したいということはあると思います。
単純な関数ならまだしも、COMインターフェース等はもっと面倒ですし。
また、ある構造体を「新しいOSにも古いOSにも対応しているつもり」で書いたとしても、
実は他の構造体でもメンバが増やされていて気付かないという場合もあります。

変な流れになって申し訳ないですが、
これよりグループボックスがなぜBUTTONコントロールなのかの方が知りたかったり…
0527デフォルトの名無しさん2009/09/01(火) 10:03:52
それがMSクオリティー
0528デフォルトの名無しさん2009/09/01(火) 10:06:07
だから_WIN32_IEや_WIN32_WINNTを古いOS向けに定義すればいいだろ

コイツどこまで馬鹿なんだ?
0529デフォルトの名無しさん2009/09/01(火) 10:06:42
誰かこいつ○せよ
0530デフォルトの名無しさん2009/09/01(火) 10:08:21
つ○
0531デフォルトの名無しさん2009/09/01(火) 10:20:19
shinitai
0532デフォルトの名無しさん2009/09/01(火) 10:22:11
もうだめだこのスレ
0533デフォルトの名無しさん2009/09/01(火) 10:25:57
CCSIZEOF_STRUCTの定義のヌルポインタからのメンバ参照って実体にはアクセスしないけれども未定義動作じゃないのかな
0534デフォルトの名無しさん2009/09/01(火) 10:26:38
馬鹿がもう一人
0535デフォルトの名無しさん2009/09/01(火) 10:30:18
悲しいほどに
0536デフォルトの名無しさん2009/09/01(火) 10:33:38
>>528
古いOS向けに定義すると、新しいOSに追加された機能を利用したい時にわざわざ
構造体等の定義をコピーしなければいけなくなります。
新しいOSではその機能を利用したい、でも古いOSでも動作するようにしたい、
という場合(この例の場合は逆ですが…)以下のようなコードを書くことがありますが、
OPENFILENAME ofn;
OSVERSIONINFO osvi;
ZeroMemory(&ofn,sizeof(ofn));
osvi.dwOSVersionInfoSize=sizeof(osvi);
GetVersionEx(&osvi);
if (osvi.dwMajorVersion>4 || (osvi.dwMajorVersion==4 && osvi.dwMinorVersion>=90)) {
 ofn.lStructSize=OPENFILENAME_SIZE_VERSION_400;
} else {
 ofn.lStructSize=sizeof(OPENFILENAME);
 ofn.FlagsEx=OFN_EX_NOPLACEBAR;
}
この部分は問題ないが実は別の構造体のサイズも変わっていた…、ということがあると思います。

また、ここで出したOSVERSIONINFO構造体はdwOSVersionInfoSizeというサイズを指定するメンバがありますが、
構造体のメンバを増やした際にOSVERSIONINFOEXという別の構造体が定義されました。
それは dwOSVersionInfoSize=sizeof(OSVERSIONINFO); というコードを書いているプログラムが
過去のOSで動作しなくなるからでしょう。
0537デフォルトの名無しさん2009/09/01(火) 10:37:00
ifの判定が逆でした。
0538デフォルトの名無しさん2009/09/01(火) 10:45:07
定義をコピーするのが面倒なら古いOSに対応しなければいいだろが
0539デフォルトの名無しさん2009/09/01(火) 10:46:00
作った側の気持ちになってライブラリを提供してみればわかる
ボタンは歴史的経緯。そもそもラジオボタンをまとめるためのものだったし
0540デフォルトの名無しさん2009/09/01(火) 11:04:56
>>538
そうできれば楽ですが…

>>539
私がライブラリを作る場合は、構造体と一緒にサイズを表す定数を定義しておいて、
typedef struct Hoge_tag {
 size_t Size;
 int Member;
} Hoge;
#define HOGE_SIZE sizeof(Hoge)
ドキュメントで「sizeof(Hoge) ではなくて HOGE_SIZE を使ってください」のように書いています。
メンバを追加した時は、
#define HOGE_SIZE CCSIZEOF_STRUCT(Hoge,Member)
#define HOGE_SIZE_V2 sizeof(Hoge)
のように定義し直しています。

ボタンに関しては歴史的経緯ですか。元々はラジオボタンにしか使用していなかったのでしょうか?
ちょっと調べてみます。
0541デフォルトの名無しさん2009/09/01(火) 11:15:44
だから_WIN32_IEや_WIN32_WINNTを古いOS向けに定義しろと言ってるだろが

その程度を面倒がって手抜きするとこういう間抜けな結果になるんだよ
ttp://d.hatena.ne.jp/NyaRuRu/20080303/p1
0542デフォルトの名無しさん2009/09/01(火) 11:29:36
構造体をコピペするのが面倒でバージョンマクロを適当に設定してる馬鹿は文句言う資格無いよ。
0543デフォルトの名無しさん2009/09/01(火) 11:43:49
>>533
ガッ
0544デフォルトの名無しさん2009/09/01(火) 11:52:21
>>541
そのリンク先では要点として、
>サイズ拡張によるバージョニングが行われる構造体では,CCSIZEOF_STRUCT マクロを活用する.
と書かれており、私の書いている事と同じだと思うのですが。
「WINVERの定義を古いものにして、新しいOS向けの機能を利用したい場合は構造体等の定義をコピーする」か、
「WINVERの定義を新しいものにして、構造体のサイズが変わっていないか確認する」か、
いずれかの不便を選ばなければならないのが問題だと思っています。
構造体のサイズを表す定数は、構造体のサイズが変わった時ではなく、構造体を定義した時に同時に定義すべきだと思います。
しかし、Windowsの場合はドキュメントにも "Set this member to sizeof(WNDCLASSEX)." 等と書かれていて、
互換性の問題を誘発しています。
0545デフォルトの名無しさん2009/09/01(火) 12:03:04
不便て

古いOSに対応するのがどういう事なのか全く分かってないようだな
0546デフォルトの名無しさん2009/09/01(火) 12:07:45
あと少し誤解されているようですが、私が書いているのは別に私がそういうミスをして恨んでいるといった事ではなく、
構造体のサイズが変わったことによって問題が起こった事例を多く見てきましたので、
そういう問題を誘発している定義なりドキュメントなりに改善すべき点があるというまでの話です。

>>545
未だにWindows98からVistaまで対応するプログラムを作ってますが?
0547デフォルトの名無しさん2009/09/01(火) 12:09:28
ここまで頭悪いやつ久々に見た
0548デフォルトの名無しさん2009/09/01(火) 12:20:28
「はいはいお前が正しいね」と返しとけよ。
相手にされなくなれば黙るよこの手の阿保は。

解決するかしないかじゃなくて褒めて欲しいだけだから。
0549デフォルトの名無しさん2009/09/01(火) 12:22:03
>>540のライブラリだと構造体が拡張される毎に
全ソースのHOGE_SIZEをHOGE_SIZE_V2にgrep置換するのか。

とても素晴らしいライブラリですね。
0550デフォルトの名無しさん2009/09/01(火) 12:26:02
 相 手 に す る な
0551デフォルトの名無しさん2009/09/01(火) 12:30:00
きえろぶっとばされんうちにな
0552デフォルトの名無しさん2009/09/01(火) 12:49:11
お前が消えろ
0553デフォルトの名無しさん2009/09/01(火) 13:22:10
ゴミ虫はゾンビ化するとやっかいだから、煽らない方がいいよ...
0554デフォルトの名無しさん2009/09/01(火) 13:29:17
ここは性根腐ったクズのスクツですね
0555デフォルトの名無しさん2009/09/01(火) 13:38:02
よくみんな黙ってるよ
みんな大人だ
0556デフォルトの名無しさん2009/09/01(火) 13:50:36
そんじゃ蒸し返してあげるよ。

cbSizeとは??
0557デフォルトの名無しさん2009/09/01(火) 13:56:04
きえろぶっとばされんうちにな
0558デフォルトの名無しさん2009/09/01(火) 15:12:45
タスクマネージャのように指定したユーザの最上位の特権でプロセスを
起動するには(UACの反転なしで)どうすればよいのでしょうか?

ttp://www.codeproject.com/KB/vista-security/VistaSessions.aspx?msg=2750630
↑のサイトを参考にサービスから winlogon.exe のトークンを複製して
CreateProcessAsUser すると、SYSTEM ユーザとしてプロセスが実行されてしまいます.
0559デフォルトの名無しさん2009/09/01(火) 19:05:06
またマルウェアか
0560デフォルトの名無しさん2009/09/01(火) 20:40:29
>>549
書き換える必要は無いですが。
0561デフォルトの名無しさん2009/09/01(火) 20:48:26
もう.NETに面倒見てもらえよ
0562デフォルトの名無しさん2009/09/01(火) 20:56:25
>>558
タスクマネージャは起動時に最上位の特権を得ることはない。
0563デフォルトの名無しさん2009/09/01(火) 21:45:01
>>560
はいはいお前が正しいね
0564デフォルトの名無しさん2009/09/01(火) 21:48:56
>>560
お前天才だな
0565デフォルトの名無しさん2009/09/01(火) 22:00:52
スレッドがサスペンドされているか動的に取得する素敵な呪文を教えて下さい
お礼はトレニー銀貨1枚で
0566デフォルトの名無しさん2009/09/01(火) 22:05:21
結果を返す1クロックの間に動き始めたらどうすんの?
0567デフォルトの名無しさん2009/09/01(火) 22:06:23
私は別に演説がしたかった訳ではなく、>>505>>507の質問がしたかっただけです。
しかし、>>516でメンバが追加されて困ることがあるかどうかを聞かれたために、
>>517で>>541のリンク先にあるような問題が起こる事を書いたのですが、
>>542のように「私が」困っていると思われたために齟齬を生んだのだと思います。
私の文章力が拙くうまく伝えられなかったのであれば率直に反省します。
しかし、このスレッドを後で見返した時に、>>521>>529>>547のような書き込みと私の書き込みのどちらが有用でしょうか?
それは自明でしょう。もし仮に私の書いている内容に誤りがあるとしても、です。

問題の本質は、
WNDCLASSEX wcx;
wcx.cbSize=sizeof(WNDCLASSEX);
のような書き方が、構造体のサイズが変わった時に、ソースを全く変更していないにも関わらず
(密かに)バイナリ互換性が失われ、またそのことに気付きにくいという点です。

>>563>>564
私は天才でも何でもありません。
初心者を馬鹿にして優越感を得る趣味も、自分の考えを広く知らしめて自己顕示欲を満たす趣味もありません。
0568デフォルトの名無しさん2009/09/01(火) 22:08:31
ResumeThread掛ける場所は1箇所なので無問題です
0569デフォルトの名無しさん2009/09/01(火) 22:09:51
ちゃんとターゲット環境に合わせてWINVER等を定義しましょうってことで。
0570デフォルトの名無しさん2009/09/01(火) 22:12:40
>問題の本質は、
>WNDCLASSEX wcx;
>wcx.cbSize=sizeof(WNDCLASSEX);
>のような書き方が、構造体のサイズが変わった時に、ソースを全く変更していないにも関わらず
>(密かに)バイナリ互換性が失われ、またそのことに気付きにくいという点です。

これが質問スレの本質か? 何にも聞いてないじゃないか。
本質は
>最後のメンバlpReservedをわざわざ追加しているのはなぜでしょうか。
じゃないのか。それに対する回答は、>>506, 520 で終わってるだろ。
それ以外のことをgdgd書いているからこうなってるんだと思わないか?
0571デフォルトの名無しさん2009/09/01(火) 22:24:18
>>567
> wcx.cbSize=sizeof(WNDCLASSEX);
> のような書き方が、構造体のサイズが変わった時に、ソースを全く変更していないにも関わらず
> (密かに)バイナリ互換性が失われ、またそのことに気付きにくいという点です。

ソースを全く変更していない?嘘をつくなよ。

お前がPlatformSDKを更新したりWINVERや_WIN32_WINNTの宣言を変えない限り
バイナリ互換性が失われることはない。
0572デフォルトの名無しさん2009/09/01(火) 23:15:20
まあ、FlagsExが増えたOPENFILENAMEのように、意味のあるメンバの追加ならともかく、
lpReservedだなんて使えないメンバが増えるだけの拡張にはちょっと疑問を抱くね。
もう少しなんとかならなかったかなあとは思う。
0573デフォルトの名無しさん2009/09/01(火) 23:23:10
TOOLINFO::lpReservedは構造体のサイズを変えるため。
TOOLINFO::cbSizeがlpReservedを含んだサイズだったら
TOOLINFO::uFlagsに設定されたTTF_PARSELINKSが「正しい」と判断できる。

TOOLINFO ti = { TTTOOLINFO_V2_SIZE, TTF_PARSELINKS }; //V2時代にTTF_PARSELINKSは存在しなかったので誤り
TOOLINFO ti = { TTTOOLINFO_V3_SIZE, TTF_PARSELINKS }; //正しい

comctl32.dllを逆汗すると内部で確保したヒープにTOOLINFOをコピーしたのち
lpReservedを使っているので、XPがβ版だった頃にはreservedでなかったのかも知れんが。
0574デフォルトの名無しさん2009/09/02(水) 00:01:32
OPENFILENAMEだってpvReservedとdwReservedが増えてるだろ。
0575デフォルトの名無しさん2009/09/02(水) 00:46:26
GetDesktopWindow()し、使い終わった場合ハンドルを破棄する必要はありますか
0576デフォルトの名無しさん2009/09/02(水) 01:20:21
あるに決まってるでしょ。
05775582009/09/02(水) 01:56:00
>>562
すいませんタスクマネージャではなくタスクスケジューラの間違いです
0578デフォルトの名無しさん2009/09/02(水) 01:58:44
起動したいexeをタスクスケジューラに登録しとけ
0579デフォルトの名無しさん2009/09/02(水) 07:54:58
>>575
どうやって破棄するつもりだ?
0580デフォルトの名無しさん2009/09/02(水) 07:57:18
ダブルバッファリングについて質問します。
変数の宣言やhMemDC = CreateCompatibleDC(hDC);などの部分は行数の関係で省略します。
今、下のようなソースがあるとします。今hMemDCのメモリデバイスコンテキスト内で描画を段階的に行い、
そこの描画が完成すると、hDCに転送して画面に描画するということをやりたいと思っています。
ところが、このソースでは画面に何も表示されてません。�@の部分を仮にhDCではなくhMemDCとしたところ
問題なく画面が表示されるため、転送部分やなんらかのメモリデバイスハンドルの扱い方の部分で間違いがある気がします。
どなたか解決方法がわかるかたがいらっしゃれば教えてください。もしくはこのソースがわかりにくい場合は、
何かソースを提示して、ダブルバッファリングの解説などしていただけませんか。よろしくお願いいたします。

case WM_PAINT:
 hDC = BeginPaint(hWnd, &ps); //�@

 hBrush = CreateSolidBrush(RGB(255, 255, 0));
 InvalidateRect(hWnd, NULL, TRUE); 
 SelectObject(hMemDC, hBrush);
 ExtFloodFill(hMemDC, 1, 1, RGB(255, 255, 255), FLOODFILLSURFACE);
 SetBkMode(hMemDC, TRANSPARENT);
 GetTextMetrics(hMemDC, &tm);
 GetClientRect(hWnd, &rt);
 DrawText(hMemDC, EndBuf, -1, &rt, DT_CENTER);

 BitBlt(hDC, 0, 0, 640, 480, hMemDC, 0, 0, SRCCOPY);

 DeleteObject(hBrush);
 break;

0581デフォルトの名無しさん2009/09/02(水) 08:09:15
バグというのは大抵は自分が関係ないと思って省略している部分にあるんだよ
0582デフォルトの名無しさん2009/09/02(水) 08:30:52
省略とか以前にむちゃくちゃ
0583デフォルトの名無しさん2009/09/02(水) 08:38:12
ごめん 適当にいじってたらできたw
やっぱ俺天才だわ
0584デフォルトの名無しさん2009/09/02(水) 09:05:34
>>567
明白な答えが、ここで出せるわけ無いんだから。
あなたが欲しいのは同意なんじゃないの?だから荒れる。
0585デフォルトの名無しさん2009/09/02(水) 09:06:23
>>581-582
わからないなら正直にいっても誰もおこりやしないよ

ちなみに今回のバグのポイントはメモリデバイスコンテキストハンドルのhMemDCに
実は最初にHBITMAPのhMemBMPを割り当てとけよってな感じの話でした
ついでにCALLBACK関数内で定義してWM_PAINTは簡素な感じにしておきました
WM_PAINTで無効リージョン更新してたことがそもそもの間違いだったw
つっても何のことか君たちにはわからないか
0586デフォルトの名無しさん2009/09/02(水) 09:59:27
WM_PAINTなんて文字列は、ここ数年書いてねえな
0587デフォルトの名無しさん2009/09/02(水) 10:20:40
InvalidateRectだけじゃなく
hMemDCは何処から来たのかとか
EndPaintが無いとか
元のブラシを戻していないからブラシの削除にも失敗してGDIオブジェクトリークするとか

他にもありそうだな
0588デフォルトの名無しさん2009/09/02(水) 11:18:01
初心者がわけもわからずサンプル改造しながら構築したようなコードだな。

>つっても何のことか君たちにはわからないか
初歩の初歩すぎる内容をこんなこと言うのは覚えたばかりだと丸わかり。
0589デフォルトの名無しさん2009/09/02(水) 18:53:49
>>587
InvalidateRectは無効リージョン作ってWM_PAINT呼ぶためよ
間違ってWM_PAINTの中に書いてるからおかしなことになったけど

>>588
涙拭けよ
05905802009/09/02(水) 19:00:00
え〜と ようするのにだ
まずHBITMAP型のハンドル一個つくってそれに適用するための縦横の範囲のピクセルもったものをつくらにゃならん
そのあとにこれをSelectObjectで例えばhMemDCと宣言した、つまりメモリデバイスコンテキストに設定するものに
これを適応させる。よって、これでメモリデバイスコンテキストに縦横ピクセル範囲の仮想のビットマップがメモリ上に形成されるわけだ
ここからは普通のデバイスコンテキストハンドルに描画していくかたちでhMemDCに描画していく
描画が完成したらこのメモリ上の仮想的なビットマップを、ウィンドウのデバイスコンテキストにコピーするわけだ
もちろん、これらは互換性がないとだめだから最初にちゃんとデバイスコンテキストハンドルをメモリデバイスコンテキストハンドルに
合致させておけよって話しね。そしてまあ、あれこれ改良がいるわけでありますが、結局のところ、ここで問題になるのは
InvalidateRect関数ねこれはWM_PAINTのそとにやる。なぜならこれがWM_PAINTを呼ぶきっかけだからね。
これでおk。綺麗にちらつきなしのダブルバッファリングの完成よ。
0591デフォルトの名無しさん2009/09/02(水) 19:38:59
とにかく解決したみたいだからめでたし。
0592デフォルトの名無しさん2009/09/02(水) 21:07:03
★初心者にVisual C++を教えるスレ★ Part34
http://pc12.2ch.net/test/read.cgi/tech/1245382769/475
0593デフォルトの名無しさん2009/09/02(水) 22:20:02
>>590
お願いだから社会に出てこないでくれよ
0594デフォルトの名無しさん2009/09/02(水) 22:41:14
延々と書いてる割に肝心な部分がわかってなくてワロタw
05955802009/09/02(水) 22:59:53
わかってないのはお前でそ。
俺の言ったことの半分も理解してないくせに。
0596デフォルトの名無しさん2009/09/02(水) 23:08:09
もう終わった話題ですから
0597デフォルトの名無しさん2009/09/02(水) 23:24:35
opera10のウィンドウタイトルを取得したいんですが
opera9までは FindWindow と GetWindowText で
得られました。10になってからは得られません。
一体どう考えればいいんでしょうか?MDI、親ウィンドウとか
検索してますがさっぱり分かりません。
0598デフォルトの名無しさん2009/09/02(水) 23:37:42
>>597
FindWindowでちゃんとハンドルが取得できているかどうか確認して下さい。
とれているなら、spy++等で実際のopera10のウィンドウハンドルをチェックして
同じかどうかを比較して下さい。

0599デフォルトの名無しさん2009/09/02(水) 23:46:40
>>597 です。
>>598
ハンドルは得られてます、OpWindowです。

タブを子ウィンドウと見なして親ウィンドウをどうこうって
考え方は間違ってるんですかね?
0600デフォルトの名無しさん2009/09/02(水) 23:52:46
OperaとかFirefoxのMDI、TDIは独自仕様だからWin32APIで何とかできる代物じゃ無いと思うが。
IEはCOMを駆使すれば何とかできるけど。
0601デフォルトの名無しさん2009/09/03(木) 03:39:27
xp、2k以降で一般的なデバック検知につかわれるAPIおよびその使われ方と、
リバエン、対リバエンに役立ちそうなAPI教えてください。

それからこういう特殊なAPIの知識はゲーム改造本とかの実例をみて学ぶ以外他に手はないんでしょうか?
何処かリストをあげてくれているHPとかありませんか?
0602デフォルトの名無しさん2009/09/03(木) 03:55:17
ゲーム改造が目的の方はお引き取りください。
0603デフォルトの名無しさん2009/09/03(木) 04:03:00
ゲーム改造が目的じゃなくてゲーム改造の本しか参考になるテキストはないんでしょうか?
って質問だったんですがわかりづらくてすみませんでした。
残りのデバック検知のAPI等についてもおねがいします。
0604デフォルトの名無しさん2009/09/03(木) 04:04:10
本当はゲーム改造が目的のくせにwww
0605デフォルトの名無しさん2009/09/03(木) 04:10:29
草はやすなやキモイ
0606デフォルトの名無しさん2009/09/03(木) 04:15:24
お前のほうがキモイよwwwwwwwwwwwwwwwwww
0607デフォルトの名無しさん2009/09/03(木) 04:27:21
さっさと教えろ!!コラ!!!
0608デフォルトの名無しさん2009/09/03(木) 04:35:43
606 :デフォルトの名無しさん:2009/09/03(木) 04:15:24
お前のほうがキモイよwwwwwwwwwwwwwwwwww


607 :デフォルトの名無しさん:2009/09/03(木) 04:27:21
さっさと教えろ!!コラ!!!

騙りたいなら他でやれ
0609デフォルトの名無しさん2009/09/03(木) 04:45:57
デバック用のレジスタ扱うapiでなんとかするんじゃないの?

msdnみてみれば
0610デフォルトの名無しさん2009/09/03(木) 04:55:42
調べても分からなかったので質問させてください。
自作のカーソルをリソースから読み込んでSetCursorで設定した場合
カーソルに影が付かないのですが、影を付ける方法はありますでしょうか?
SystemParametersInfoにSPI_GETCURSORSHADOWを指定すると
カーソルに影を付けるかどうかを取得できると思いますが、
この設定に合わせてカーソルに影を付けたいと思っています。
0611デフォルトの名無しさん2009/09/03(木) 04:57:24
ttp://dsas.blog.klab.org/archives/51434186.html
ここらへん参考になりそう
読んでみ
0612デフォルトの名無しさん2009/09/03(木) 04:58:47
ゲーム改造したい奴やマルウェア作りたい奴にまともなレスなんて付かないよ
0613デフォルトの名無しさん2009/09/03(木) 05:05:49
604〜608までアボーンになってるがもう夏は終わったんだぞ
新学期にそなえてはよ寝れ
0614デフォルトの名無しさん2009/09/03(木) 05:14:23
草がキモイっていわれたのがよっぽどショックだったんだよ。
スルーしといてやれ。

>>610
最初から影付きのカーソル自作じゃだめなのか?
0615デフォルトの名無しさん2009/09/03(木) 05:49:18
草がキモイw
0616デフォルトの名無しさん2009/09/03(木) 06:32:58
>>614
やはりそうするしか無いのでしょうか。
ただ、Windows2000が32ビットのカーソルに対応していなかったと思います。
あと将来Windowsに影の濃さや大きさをカスタマイズする機能が付いたりしたら困るので、
Windowsの機能で実現できればベストなのですが。
純粋に見た目だけの問題なので、無理ならば仕方ないです。
0617デフォルトの名無しさん2009/09/03(木) 06:41:19
>あと将来Windowsに影の濃さや大きさをカスタマイズする機能が付いたりしたら困るので、
>Windowsの機能で実現できればベストなのですが。

ww
0618デフォルトの名無しさん2009/09/03(木) 06:58:48
ユーザーは独自カーソルに影がついてないぐらい気にしないよ
神経質だねキミ
0619デフォルトの名無しさん2009/09/03(木) 07:05:35
>>617
OSをカスタマイズしてカーソルを変えちゃうのが一番てっとりばやいんじゃないの?
そーすればやりたいようなことはできる。
ただ今後の拡張についてはノーコメント。
0620デフォルトの名無しさん2009/09/03(木) 07:14:32
>>611
参考になります。
それとやっぱりデバッグ検知につかうAPIの一覧がのったサイトとか
技術tipsのサイトはないのでしょうか?

基本的なことは理解できるので応用例集があれば一番いいのですが、
書籍でもかまいませんので他にありませんか?
0621デフォルトの名無しさん2009/09/03(木) 08:01:58
デバック検知って何だよ
自分のプロセスがデバッギーである事を調べたいのか、
特定のデバッガが起動しているかを調べたいのかハッキリしろ

それと改造したいゲームのデバッガチェックを回避するのが目的で質問してるなら消えろ
0622デフォルトの名無しさん2009/09/03(木) 08:10:08
>>620
ttp://dsas.blog.klab.org/archives/51434186.html
ここらへん参考になりそう
読んでみ
0623デフォルトの名無しさん2009/09/03(木) 08:15:24
>>622
参考になります。
それとやっぱりデバッグ検知につかうAPIの一覧がのったサイトとか
技術tipsのサイトはないのでしょうか?

基本的なことは理解できるので応用例集があれば一番いいのですが、
書籍でもかまいませんので他にありませんか?
0624デフォルトの名無しさん2009/09/03(木) 08:35:06
>>618
確かに細かい事が気になる方です。

>>619
調べてみたらSetSystemCursorなんてAPIがあるんですね。
これを使用してカーソルを変えてみたところ、確かに影が表示されました。
ただ慎重に使わないと他のアプリのカーソルまで変わってしまうので、気をつけないといけないですね。
どうもありがとうございます。
0625デフォルトの名無しさん2009/09/03(木) 08:43:19
>>624
誰も気にしない事まで神経質になってアクセシビリティが失われたら本末転倒
そういうおせっかいなプログラムは自分専用にしとけよ。
0626デフォルトの名無しさん2009/09/03(木) 10:13:13
難しいことは質問しないで下さい。
ここの人はレベルが低いので、すぐ「ウイルスうんたら」とか言い出して
誤魔化すだけなので意味が無いのです。
これはもう何年も前から同じ状態。
0627デフォルトの名無しさん2009/09/03(木) 10:17:24
馬鹿は黙っててね
0628デフォルトの名無しさん2009/09/03(木) 10:21:55
>>626
そう思ってるのはお前だけ
0629デフォルトの名無しさん2009/09/03(木) 10:25:30
嘘だと思うなら過去ログ漁ってみろ
ず〜と同じやりとりが繰り返されている
>>627-628 みたいなのも含めてな
0630デフォルトの名無しさん2009/09/03(木) 10:33:25
ウイルス作ろうとしてる奴が質問するからだろ
0631デフォルトの名無しさん2009/09/03(木) 10:36:38
デバッガ検知はデバッガ自体やSEH、APIフックはABIやアセンブラなどの基礎知識が必要なだけで極めて簡単単純な技術
ここで無視されるのはAPI以下のレベルの話だから
不正行為を疑われるのは質問者が基礎知識すら身に付けていないから
0632デフォルトの名無しさん2009/09/03(木) 10:37:24
>>629
質問に答えられなくて誤魔化すために「ウイルスうんたら」と言い出した例を挙げてよ。
0633デフォルトの名無しさん2009/09/03(木) 10:45:18
いくらでもあるだろw
0634デフォルトの名無しさん2009/09/03(木) 10:47:28
例を挙げろ → 自分で探せ or いくらでもある

は無い証拠
0635デフォルトの名無しさん2009/09/03(木) 11:30:20
>>623
ttp://dsas.blog.klab.org/archives/51434186.html
ここらへん参考になりそう
読んでみ
0636デフォルトの名無しさん2009/09/03(木) 11:37:37
そんな屑サイト参考にならねえよ
0637デフォルトの名無しさん2009/09/03(木) 12:29:05
初心者はIsDebuggerPresentでも使ってればいい
名前がそのものズバリだろ
それに飽きたらパッカーとハッシュでも使え

ここでも読んでろ
http://hp.vector.co.jp/authors/VA028184/
0638デフォルトの名無しさん2009/09/03(木) 13:06:51
結局、デバッガにアタッチされてるかが知りたいだけなの?
だったらIsDebuggerPresentで出来るしこんなのググればすぐ見つかるよね。

デバック検知なんて意味不明な単語を使ってる上にゲーム改造うんぬん言えば煽られても仕方ないでしょ。
0639デフォルトの名無しさん2009/09/03(木) 13:58:25
デバッ「ガ」検知でググればいろいろ出てくる。

ttp://www.securityfocus.com/infocus/1893
0640デフォルトの名無しさん2009/09/03(木) 14:48:50
こんなレベルの低い質問者が自作ソフトにデバッガ検知を組み込みたくて質問してるとは思えない。
デバッガ検知してる有償ソフト等をクラックしたくて質問してると考える方が妥当である。
06416372009/09/03(木) 15:16:01
初めから
「IsDebuggerPresentで足りなくなったらまたおいで」
とでも言っておけば良かったような気がするがな。
下手に煽らないで。

そこらへん君らの悪い癖だ。
0642デフォルトの名無しさん2009/09/03(木) 15:51:16
>>641

>>621が分からん事にはアドバイスしようが無いだろ。
0643デフォルトの名無しさん2009/09/03(木) 16:03:08
>>601の質問からしてIsDebuggerPresentが目当てとは思えない
nProの動作原理が知りたいとかそんな所じゃね
0644デフォルトの名無しさん2009/09/03(木) 18:18:06
nProとか名前聞くだけで反吐が出る
0645デフォルトの名無しさん2009/09/03(木) 20:32:26
無駄な所でばかりエスパーしてんじゃねーぞ役立たず共
0646デフォルトの名無しさん2009/09/03(木) 20:59:54
645 :デフォルトの名無しさん:2009/09/03(木) 20:32:26
無駄な所でばかりエスパーしてんじゃねーぞ役立たず共

質問もせず会話にもさんかせずただ煽って荒らすだけの粘着に存在価値はない。
0647デフォルトの名無しさん2009/09/03(木) 21:14:21
>>645 = >>601なんだろ
よくあるパターン
0648デフォルトの名無しさん2009/09/03(木) 22:48:27
スパーハカーさんのおでましか?
0649デフォルトの名無しさん2009/09/03(木) 22:51:49
妄想馬鹿です
0650デフォルトの名無しさん2009/09/03(木) 22:56:00
WM_PRINTを使用して、画面キャプチャを取得するプログラムを
作成しています。
画面がフォアグラウンドで表示される場合にはタイトルなどの
非クライアント領域を含めたキャプチャが取得できるのですが、
バックグラウンドで動作している場合には、クライアント領域
しか取得することが出来ません。うまく取得出来る方法はあり
ますでしょうか?
以下がソースとなります。

IntPtr pUnk = GetDC(hWnd);
Graphics memg = Graphics.FromImage(tmp);
IntPtr dc = memg.GetDC();
//IntPtr dc = memg.GetWindowDC(); //これでも取れない
SendMessage(hWnd, WM_PRINT, dc, (IntPtr)(0x02 | 0x04 | 0x08 | 0x10));
0651デフォルトの名無しさん2009/09/03(木) 22:57:10
>>646、648、649
かまってちゃんなんだからいい加減スルーしろよ
このまま反応してたら延々と粘着してくるぞ
0652デフォルトの名無しさん2009/09/03(木) 23:03:47
>>650

バックグラウンド時に描画されてるんかな?
0653デフォルトの名無しさん2009/09/03(木) 23:09:30
>>652
すいません。あまり詳しくないのですが、
クライアント領域のキャプチャは取れるため、クライアント領域
については、描画されているようです。
0654デフォルトの名無しさん2009/09/03(木) 23:10:51
>>650
使ったことないけど、PrintWindow とか

0655デフォルトの名無しさん2009/09/03(木) 23:53:43
>>654
ありがとうございます。
PrintWindowを試してみましたが、うまくいきませんでした。
真っ黒な画像が取得されてしまうようです。

現在作成しているプログラムは、ブラウザを画面上には
表示させない状態でWebページのキャプチャを取得する
ものとなります。
0656デフォルトの名無しさん2009/09/04(金) 00:17:14
なにしたいのかよく分からんが、IEで表示したページを画像として取りたいとかいうならOleDrawあたり使うべきじゃなかろうか
0657デフォルトの名無しさん2009/09/04(金) 00:34:30
質問です

while(1)
{
dword = WaitForSingleObject( mutex0 );
if ( dword == WAIT_OBJECT_0 || dword == WAIT_ABなんとか )
{
break;
}
Sleep(0);
}

上記のスピンロック系?の処理と
INFINITEを指定した処理ではどっちが処理速度速いのでしょうか?
0658デフォルトの名無しさん2009/09/04(金) 00:53:35
判らないから聞かないで下さい。うざいだけです。
0659デフォルトの名無しさん2009/09/04(金) 01:25:58
WaitForSingleObjectの引数が足りないし
WAIT_ABなんとか って何だよ

質問するならちゃんと書け
0660デフォルトの名無しさん2009/09/04(金) 02:05:49
知らないならレスしないで下さい系?
0661デフォルトの名無しさん2009/09/04(金) 02:21:44
>>657
たしか経験的に、しばらくスピンロックで待って、それでダメなら待ち状態に入るのが平均的には性能が良いのだったと思う。
Advanced WindowsのOptexがたしかそういう実装。
もちろん、プロセス内だけで同期を取る場合はクリティカルセクションを使えばいい。すでにそういう実装になっている。

あとそのコード、個人的には、WAIT_ABANDONEDが返ってきたら、
例外投げるなりエラー値返すなりして、とっととループから脱出してエラー処理に向かわせたほうがいいと思う。
0662デフォルトの名無しさん2009/09/04(金) 02:35:04
この場合どのみちWaitForSingleObjectでカーネルモードに切り替えてるんだから性能は変わらんだろ
クリティカルセクションはWaitForSingleObjectのオーバーヘッドを減らすためにスピンロック使ってるから話が全然違う。
0663デフォルトの名無しさん2009/09/04(金) 18:35:22
通常のアプリレベルでスピンロックとか普通使わなくね
06646572009/09/04(金) 21:31:11
>>661
回答ありがとうございます。
WAIT_ABなんとかに関していえば、
今回はどの同期オブジェクトを握って処理中の
プロセスが死んだ(WAIT_AB発生)したとしても他の
プロセスは走り続けなければいけない実装なので処理させています。
※小賢しい事にWAIT_ABなんとかを返したとしても非シグナルしてくるのでこのAPI

>>662
やはりクリティカルセクションのようにユーザモードでの実行じゃないので
あまりかわらないのでしょうか。ただ、今回はプロセス間の同期を目的としているので
セマフォなどのカーネル側に切り替えるハンドルを使わないとダメみたいです
※メータード実装するなら話は別ですがめんどくさいので。。

>>663
やはり使いませんかw
06656572009/09/04(金) 21:34:27
>>659
mutex0
ではなくて
mutex, 0
ですね。直書きしたので入力ミスしてたみたいです
0666デフォルトの名無しさん2009/09/05(土) 02:18:24
>>664
メータードが面倒て、MSDNのソースコピペでいいだろ

・・・なんかバグがあるらしいがw
06675802009/09/05(土) 05:58:56
>>587
>元のブラシを戻していないからブラシの削除にも失敗してGDIオブジェクトリークするとか
詳しく
0668デフォルトの名無しさん2009/09/05(土) 06:16:35
>>580
で、お前さんの立場は何なの?
0669デフォルトの名無しさん2009/09/05(土) 06:53:39
詳しくも何もそのまんまじゃん。
0670デフォルトの名無しさん2009/09/05(土) 06:59:42
終わった話題を蒸し返すなよウゼェ
06715802009/09/05(土) 07:45:34
>>669
わからないならだまっとれ
06725802009/09/05(土) 07:46:17
いいか?
俺は>>587にレスをしてる
>>587以外のゴミクズは俺の質問にこたえんじゃねえ
わかったか?
06735802009/09/05(土) 07:47:48
>>668
神だよ
お前らザコは俺にレスをするな
>>587にのみレスする権利を与えてやる

>>670
お前がウゼェよ顔面池沼
06745872009/09/05(土) 08:06:33
死ねよ
06755802009/09/05(土) 08:16:52
お前がな
06765802009/09/05(土) 08:17:44
>hMemDCは何処から来たのかとか

おいwwwwwwwwwなんだこいつwwwwww

やっぱただのアホだったか
わからんなら だまっとれいっ
0677デフォルトの名無しさん2009/09/05(土) 09:53:37
おまえが だまっとれいっ
0678デフォルトの名無しさん2009/09/05(土) 10:12:49
タスクバーに領域を確保して情報を表示するアプリケーションを作っています。
この手のアプリでは、COMを使ったDeskBandを使うのが定石だと思うのですが、

・一々デバッグするのにregsvr32を使って登録して、ダメならもう一度regsvr32で
 登録解除して…とめんどくさい(そもそも、登録解除してもexplorerがdllを保持
 し続けていて、再ビルドで失敗する (´・ω・`))

・なんとなく重たそう

ということで、COMを使わないで似たようなことができないかと色々調べてみた
のですが、ちょうどCodeProjectに
ttp://www.codeproject.com/KB/statusbar/taskbarctrl.aspx
なる記事を見つけ、まさにやりたいことだ!と思って早速ソースを見てみました。

ここで、WinXPですとタスクトレイの拡張?ボタン(“<”てやつ)を押下した場合
どうやって検知して移動とかしてるのかと思ってたら、タイマーを張ってタスクトレイの
サイズを監視しているようです。
ここ、なんとなくかっこ悪いなぁと思ってるんですが、他にいい方法ないでしょうか?
explorerにフックをしかける方法も考えたのですが、本末転倒な気もしてて…
0679デフォルトの名無しさん2009/09/05(土) 10:27:54
dllならctrl+shift+alt押しながらキャンセルでアンロードできるだろが

そんな事も知らないで行儀の悪い方法に手を出すのもどうかと思うよ。
0680デフォルトの名無しさん2009/09/05(土) 10:42:31
>>679
Windows7からはその方法が使えなくなってる
0681デフォルトの名無しさん2009/09/05(土) 10:47:13
だったらビルド時に
taskkill /f /im explorer.exe
でも実行しとけ
0682デフォルトの名無しさん2009/09/05(土) 10:49:54
ってかWindows7を開発環境にするのもどうかと思うw
0683デフォルトの名無しさん2009/09/05(土) 11:00:47
>>680
XP/2003までしか想定してない記事見て作ってるのに、
Windows7からは〜 とか関係あんの?
0684デフォルトの名無しさん2009/09/05(土) 12:10:18
知らん
0685デフォルトの名無しさん2009/09/05(土) 12:35:27
俺も知らん
0686デフォルトの名無しさん2009/09/05(土) 12:42:08
SiH4
0687デフォルトの名無しさん2009/09/05(土) 15:26:14
なんという糞スレ
0688デフォルトの名無しさん2009/09/05(土) 15:31:04
なんという糞レス
0689デフォルトの名無しさん2009/09/05(土) 16:25:13
なんという糞板
0690デフォルトの名無しさん2009/09/05(土) 23:43:27
なんという糞タイ
0691デフォルトの名無しさん2009/09/06(日) 03:21:33
なんという糞俺
0692デフォルトの名無しさん2009/09/06(日) 11:26:48
なんという糞酒
0693デフォルトの名無しさん2009/09/06(日) 11:35:24
なんという糞酉
0694デフォルトの名無しさん2009/09/06(日) 11:39:31
だまっとれいっ
0695デフォルトの名無しさん2009/09/06(日) 11:41:12
だまっとれいっ

でググるとこのスレが2件目にヒットするw
0696デフォルトの名無しさん2009/09/06(日) 15:57:01
少し上でDeskBandの話題が出てるので便乗質問だけど、
自作のIDeskBandを エクスプローラだけ(もしくはIEだけ) でしか読み込まないようにする方法って無い?
06975872009/09/06(日) 16:13:54
>>696
レジストリに設定書き込んどけばOK
0698デフォルトの名無しさん2009/09/06(日) 16:22:33
?
0699デフォルトの名無しさん2009/09/06(日) 17:10:32
わからんなら だまっとれいっ
0700デフォルトの名無しさん2009/09/06(日) 18:47:27
>>696
DllMainでexe名を判断しTRUEかFALSEを戻す
0701デフォルトの名無しさん2009/09/06(日) 19:26:27
>>700
その方法だと「見た目はIEだけどプロセスはexplorer.exe」の場合に対応できない。
0702デフォルトの名無しさん2009/09/07(月) 20:08:28
explorerにタブをつけるソフト数種類を見てみたら、>>700の方法っぽいね。
んで、「見た目はIEだけどプロセスはexplorer.exe」だとバグって誤動作してるw

うーん、何かいい方法は無いものか・・・。
0703デフォルトの名無しさん2009/09/07(月) 20:40:33
DrawTextって延々描画してるとなんかだんだん遅くなっていくんだけどなんで?
実際のテキストアニメーションの現場では用いられない関数?
0704デフォルトの名無しさん2009/09/07(月) 21:01:18
まずはその遅くなるコードを晒せ
0705デフォルトの名無しさん2009/09/07(月) 21:17:46
嫌です
0706デフォルトの名無しさん2009/09/07(月) 21:20:07
>>703
メモリやDCやfontとかの何らかのリソースを解放してないんじゃないの?
タスクマネジャで、メモリ、ハンドル、スレッド、USERオブジェクト、GDIオブジェクトなどを
監視して、増加しつづけてるものがないか見てみるとか
0707デフォルトの名無しさん2009/09/07(月) 21:45:12
延々描画してると
0708デフォルトの名無しさん2009/09/07(月) 22:04:04
タスクマネジャ
0709デフォルトの名無しさん2009/09/07(月) 22:26:07
フックのコールバック関数の中から、どのフックハンドルに対応するか一意に識別する方法はあるんですか。
0710デフォルトの名無しさん2009/09/07(月) 22:53:35
難しい事はここの人は判りません。
0711デフォルトの名無しさん2009/09/07(月) 23:00:01
>>709
グローバル変数かTLSスロットに保存しとけ
0712デフォルトの名無しさん2009/09/07(月) 23:01:44
グローバル変数使ってアクセスしようとすると、実質一つのコールバック関数を
同時にセットして使うことは不可能ですよね。
TLSセットについては良く知らないので、調べてみます。
ありがとうございます。
0713デフォルトの名無しさん2009/09/07(月) 23:29:36
わからんなら だまっとれいっ
0714デフォルトの名無しさん2009/09/08(火) 12:32:39
>>702
リソースを見るとか
0715デフォルトの名無しさん2009/09/08(火) 15:10:46
わからんなら だまっとれいっ
0716デフォルトの名無しさん2009/09/08(火) 15:23:46
知らないならレスしないで下さい。ウザいだけです。
0717デフォルトの名無しさん2009/09/08(火) 15:26:35
>>716
deprecated: 知らないならレスしないで下さい。ウザいだけです。

今後は「わからんなら だまっとれいっ」を使用すること。
0718デフォルトの名無しさん2009/09/08(火) 15:41:12
Oi fatty. shut up. And grab another pie.
0719デフォルトの名無しさん2009/09/09(水) 00:38:15
早く質問に答へてくれなゐかなー
かれこれ一ヶ月待ってるんだが
0720デフォルトの名無しさん2009/09/09(水) 00:41:08
何の質問かスレさかのぼるのも面倒臭い
0721デフォルトの名無しさん2009/09/09(水) 00:47:36
質問です。
Windows のサービスって、音を鳴らすことって
できるのでしょうか?

マシンにサービスを走らせて
たとえば時報とか鳴らしたいのです。
0722デフォルトの名無しさん2009/09/09(水) 00:56:36
ok
0723デフォルトの名無しさん2009/09/09(水) 01:02:09
>>721
タスクスケジューラでいいだろ
07247212009/09/09(水) 01:06:45
>>723
検討しましたが、セキュリティ的に好ましくないのですよ。
Administrator 権限でないとだめらしい。
0725デフォルトの名無しさん2009/09/09(水) 01:11:08
音を鳴らす為だけにAdministrator権限かよ
0726デフォルトの名無しさん2009/09/09(水) 01:16:45
真の目的は、音を鳴らしたいのではなくAdmin権限を手に入れる事にある。

・・・とか?w
0727デフォルトの名無しさん2009/09/09(水) 01:18:51
サービスじゃもっと権限高いじゃん
07287212009/09/09(水) 01:18:56
まぁもうちょい研究してまた戻ってきます。
いやいや、時報を鳴らしたり、自動ビルドの結果を
ゆっくりしゃべらせたいだけです。
0729デフォルトの名無しさん2009/09/09(水) 01:21:58
もしかして目覚ましか?
0730デフォルトの名無しさん2009/09/09(水) 01:36:37
デスクトップとの対話を許可にチェック入れときゃたぶにける
0731デフォルトの名無しさん2009/09/09(水) 03:25:01
>>724
そのアプリの実行に管理者権限が必要ということ?
そうだとして、ユーザが管理者権限を持っているのであれば、
タスクスケジューラでも管理者権限で実行できるよ(もちろんVista/7でも)。
(一般ユーザでも実行できるようにしたいならサービスの出番だろうけど)
0732デフォルトの名無しさん2009/09/09(水) 12:23:58
例えばVGA解像度のデスクトップをキャプチャしたとする
そのキャプチャした画像にどれくらいのピクセル数で赤系統の色が含まれているか調べたいとする
しかも、高速で

そういった場合、画面、または画像の色情報を取得するwin32apiはどんなものがあるだろうか
0733デフォルトの名無しさん2009/09/09(水) 13:11:04
>>732
そういう便利なAPIは無いから
GetDIBitsとかでピクセルデータ取得してマルチスレッドで走査線追うのがたぶん一番速いんじゃないのかなー
赤系統となると、あとはColorRGBToHLSなどでHue(色調)を調べるとかするのかな
0734デフォルトの名無しさん2009/09/09(水) 13:38:34
SIMDマジおすすめ
0735デフォルトの名無しさん2009/09/09(水) 20:11:42
>>732
GetDIBitsで全体のピクセル取得したあと、
ピクセル単位に評価関数を使って判定するまではいいとして、
高速化のポイントは評価関数をテーブル化することかな

色に対して厳密な精度を求めないなら、
RGBの各8ビットのうち、下位4ビットをマスクするとRGB各4ビットになるから
(2^4)^3=4096
要素数4096のサイズの判定テーブルがあれば全色評価できることになる
判定テーブル自体は事前にColorRGBToHLSでも類似の関数でも使って作成しておけばよい
0736デフォルトの名無しさん2009/09/09(水) 20:56:44
まずは高速の定義を明確にしろ。
どの程度のCPUでどの程度の時間なら高速なんだ?
0737デフォルトの名無しさん2009/09/09(水) 21:12:11
そこまで行くとスレ違い
0738デフォルトの名無しさん2009/09/09(水) 21:34:32
SetWindowTextでタイトルを変えたのはいいのですが、
ステータスバー(っていうんでしたっけ?下の部分)に表示されているタイトルが変わりません。
これを変える方法を教えてください。
0739デフォルトの名無しさん2009/09/09(水) 21:42:20
http://msdn.microsoft.com/en-us/library/bb760726%28VS.85%29.aspx
0740デフォルトの名無しさん2009/09/09(水) 21:55:41
>>739
日本語でおk
0741デフォルトの名無しさん2009/09/09(水) 22:09:51
http://msdn.microsoft.com/ja-jp/library/w68tt87w.aspx

0742デフォルトの名無しさん2009/09/09(水) 23:14:21
>>741
ありがとうございます。。。しかしなんか大変なのがわかりました
というよりも意図が違ってるかもしれません
例えばゲームを起動するじゃないですか、そのときにステータスバーにタイトルが表示されますよね?
あのステータスバーのタイトルとゲーム画面のタイトルが同じタイミングに近い感じで変わって欲しいんですが>>741のやり方が必要なのでしょうか?
ゲーム画面を動したり最小化するとステータスバーのタイトルが更新させるのでこれを上手く使えばできそうなんですが
0743デフォルトの名無しさん2009/09/09(水) 23:19:56
タスクバーのこと?
0744デフォルトの名無しさん2009/09/09(水) 23:23:07
またゲームを改造したいとかそういう系か
0745デフォルトの名無しさん2009/09/09(水) 23:24:05
すみませんそれです
0746デフォルトの名無しさん2009/09/09(水) 23:28:06
ステータスバーなんて何も難しくないぞ
ステータスバーのウインドウクラスはSTATUSCLASSNAMEだからこれをCreateWindowに与えてやればよい
そんで、タイトルの設定はステータスバーのウインドウにSB_SETTEXTを送ればよい
ステータスバーはメインウインドウを表示する前に作成しおくこと
0747デフォルトの名無しさん2009/09/09(水) 23:39:12
>>746
タスクバーはどうしたらいいでしょうか?
0748デフォルトの名無しさん2009/09/09(水) 23:39:40
ゲーム改造したいクソガキはスルーで
0749デフォルトの名無しさん2009/09/09(水) 23:43:24
パソコンの授業中にゲームしてるのを先生にバレないようタスクバーをカムフラージュしたいだけだろ?
監視ソフトが動作プロセス一覧を吸い上げて筒抜けになってるから無駄無駄
07507212009/09/09(水) 23:46:58
>>729
>>730
>>731

ちょっと試行錯誤した結果、
リモートログインをした後にタスクが起動されると
タスクで起動した Media Player 系が
MCI の初期化に失敗する模様です。

リモートログイン → 切断 → タスク起動
  「MCI の初期化に失敗」エラーダイアログ。
リモートログイン → ログオフ → タスク起動
  エラーダイアログは出ないが、音は鳴らず。
マシンにキーボードをつないでログイン → ログオフ → タスク起動
  音が鳴る。

次はサービスアプリケーションを作って試してみます。
ではまた後ほど。
0751デフォルトの名無しさん2009/09/09(水) 23:48:46
MediaPlayerなんか使うからだろ
sndPlaySoundを呼ぶだけのプログラムを作ってタスクスケジューラに入れとけ
07527212009/09/09(水) 23:54:58
どちらもマルチメディア系の API だと思いますケド
winmm.dll の。
でも試してみますね。
0753デフォルトの名無しさん2009/09/09(水) 23:56:08
高レベルAPIと低レベルAPIがあるのを知らんのか
0754デフォルトの名無しさん2009/09/10(木) 01:26:08
Win32APIを使って、ダブルバッファリングで、秒間に一定回数描画する際の、なるべく高速な方法について伺いたいのですが
オフスクリーンバッファにはDDB、DIB、DIBSectionのどれを使うべきなのでしょうか
ググってみたところ、それぞれについて他より高速であるという記述が見つかってしまい、よく分かりません
ディスプレイDCへの転送時に掛かる時間を考えると、DDBが高速な気がしますが、バッファの編集はDIBが高速なようにも思えます
使い分けが必要ならば、そのあたりも含めて教えていただければ幸いです
0755デフォルトの名無しさん2009/09/10(木) 01:30:05
それぞれで実装して速度を実測
0756デフォルトの名無しさん2009/09/10(木) 07:14:08
内容が随時変更されるのだったら、DIBSection一択じゃないか?
補間付き拡大縮小描画やYUV変換も絡むならDirect3Dか。
0757デフォルトの名無しさん2009/09/10(木) 09:56:57
無線lanの設定(ssidやパスフレーズ)を登録するapiはありますか?

あったら教えてください。
0758デフォルトの名無しさん2009/09/10(木) 15:46:36
あります
0759デフォルトの名無しさん2009/09/10(木) 17:28:05
あるよ
0760デフォルトの名無しさん2009/09/10(木) 17:59:08
あるかもよ
0761デフォルトの名無しさん2009/09/10(木) 18:07:47
あったとしたら
0762デフォルトの名無しさん2009/09/10(木) 18:10:26
wlanapi.dll
0763デフォルトの名無しさん2009/09/10(木) 18:30:19
>>757
RegisterWirelessLanSSIDAndPassphraseでググれ
0764デフォルトの名無しさん2009/09/12(土) 01:01:21
ウィンドウ内に表示される文字列Strに別の文字列を送信
したいんですが
SendMessage((HWND)lp,WM_SETTEXT,0,(long)Str);
でできます?WM_SETTEXTはウィンドウタイトルへの
送信しかできないんですか?
0765デフォルトの名無しさん2009/09/12(土) 01:04:55
ウィンドウが何を指すかできまる。例えばスタティックコントロールなどはそれでいける。
ていうかやってみろよ。1行なんだからさ。
0766デフォルトの名無しさん2009/09/12(土) 01:11:49
わからんなら だまっとれいっ
0767デフォルトの名無しさん2009/09/12(土) 01:26:02
>>765
いや、すいません。いろいろ問題あるらしくてひとつずつ
解決してる最中なんです。
ウィンドウは自作のふつーのウィンドウです。ボタンなんか
配置してあるだけの。
0768デフォルトの名無しさん2009/09/12(土) 01:35:23
>>767
は取り消し、失礼しました。
>>765
ありがとうございました。
0769デフォルトの名無しさん2009/09/12(土) 01:36:53
WM_SETTEXT使うよりかはWM_APPの系統使えよ、と思った
0770デフォルトの名無しさん2009/09/12(土) 02:11:19
はじめまして
CreateDesktopで作成したでデスクトップを
画面には非表示のままキャプチャしたいのですが
うまくいきません。
もちろんSwitchDesktopでアクティブにすれば
キャプチャできるのですが SetThreadDesktopで
割り付けてもキャプチャされた画面は黒いままです

そもそもこれは 仕組みとしてキャプチャできるのでしょうか?
仮想デスクトップの 非アクティブのプレビュー的な事が
したいのですが 難しいでしょうか?
0771デフォルトの名無しさん2009/09/12(土) 02:13:42
>>764
longではなくLPARAMへのキャストにしておきなさい、64ビット対応のために。
0772デフォルトの名無しさん2009/09/12(土) 02:32:17
>>771
なんで偉そうなんだよ
0773デフォルトの名無しさん2009/09/12(土) 03:00:55
えらいからに決まってるじゃないか。
少なくともlong使うような
0774デフォルトの名無しさん2009/09/12(土) 05:24:53
>>770
SetThreadDesktopを実行するのは正しいと思う
それによってGetDesktopWindowが返すハンドルがそのデスクトップのものになるだろうし
問題はこのデスクトップのHDCを取得して使用してもいいのかということだよね
画面が真っ黒なら無理ってことなのだろうけどキャプチャのコードを見ないことにはなんとも

というか、見えてないデスクトップのイメージがほしいなら見えなくなる前に保存するのはだめ?
0775デフォルトの名無しさん2009/09/12(土) 08:58:15
厳密にはAPIの質問ではないような気もするのですがお願いします。

C#2008EEでスクリーンセーバーを作っています。
モニターの電源を切る方法は検索してわかったのですが、↓
PostMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
HDDはどうやって止めるのでしょうか?
0776デフォルトの名無しさん2009/09/12(土) 10:05:17
Direct2DとDirectWirteってWin7におけるGDI/GDI++の置き換えAPIらしいけど
これをコンパイルしたアプリってVISTA以前、というかXPでもWindowsアップデートやDirectXアップデート
すれば実行できるんだよね?
0777デフォルトの名無しさん2009/09/12(土) 10:42:30
>>776
いや、できんよ。Win7専用バイナリになるよ。
0778デフォルトの名無しさん2009/09/12(土) 11:02:49
Vistaはいずれ追加コンポーネントとして提供されるんじゃね?
0779デフォルトの名無しさん2009/09/12(土) 20:38:09
APIというかメッセージについての質問かもしれませんが、
ステータスバーでボーダー等の大きさは取得することができますが、
グリップの大きさを求めるにはどのようにすればいいのでしょうか。
0780デフォルトの名無しさん2009/09/12(土) 21:14:49
ステータスバーの高さから適当に計算する
0781デフォルトの名無しさん2009/09/12(土) 21:30:23
>>774
返事おそくなってすみません
仮想デスクトップは切り替える直前のスナップショットを表示しているようですね
業務でそれぞれの仮想画面をリアルタイムで監視したいものですから
ありがとうございます。
0782デフォルトの名無しさん2009/09/13(日) 13:23:14
Windows標準のフォント選択ダイアログで、
フォントの文字セットごとに異なったサンプル文字列が表示されますが、
あの文字列を取得する方法はあるのでしょうか。
単にダイアログが全部リソースで持ってるだけなのかもしれませんが。
0783デフォルトの名無しさん2009/09/13(日) 13:36:11
単に英語と日本語だけだと思ったが
0784デフォルトの名無しさん2009/09/13(日) 13:42:38
どこにあるのかちょっと使ってるWindowsで調べてみたよ。
日本語版だとSystem32\ja-JP\comdlg32.dll.muiの文字列リソースに入ってるね。
0785デフォルトの名無しさん2009/09/13(日) 13:50:45
っと、>>784はVista64で、XP見たらcomdlg32.dllの文字列リソースだった。
0786デフォルトの名無しさん2009/09/13(日) 14:46:06
そういえばメイリオはフォント内部にサンプル文字列を持ってたような・・・
0787デフォルトの名無しさん2009/09/13(日) 16:05:35
>>784-786
ありがとうございます。
同じ文字列を自分のプログラムでもリソースで持つようにします。
0788デフォルトの名無しさん2009/09/13(日) 23:50:10
WindowsXPでファイルの配置位置を取得することは可能なんですか?
細かいファイルをシーケンシャルで読み込むため配置順にしたいです。
0789デフォルトの名無しさん2009/09/14(月) 00:15:48
ハァ?
0790デフォルトの名無しさん2009/09/14(月) 00:18:05
デフラクソフトは配置求めています
0791デフォルトの名無しさん2009/09/14(月) 00:59:40
ハァ?
0792デフォルトの名無しさん2009/09/14(月) 01:03:20
物理的なHDD位置の求め方。
0793デフォルトの名無しさん2009/09/14(月) 01:05:17
dd
0794デフォルトの名無しさん2009/09/14(月) 01:12:50
>>788
無理、Windows自体は場所を求める方法を公開していない。
なのでやるとしたら、ドライブを直に開いてFAT/NTFSを自分で読み取って場所を調べることになる。
そして、順番に並べ替えまでしたら、>>790も言っているように、もはやデフラグソフトの域。

ほか、代案。
1. 1ファイルに固める、ZIPとかTARとか。
2. Superfetchとかに期待して自分は何もしない。
0795デフォルトの名無しさん2009/09/14(月) 01:20:45
WindowsXPでって書いてるのにSuperFetchって、>>794は馬鹿なの?
0796デフォルトの名無しさん2009/09/14(月) 01:21:34
デフラグ用API使えばいいのかも。まぁでも下手な考え休むに似たりってことで、
>788が考えてることは根本的に無駄無意味だな。普通にパフォーマンス優先で
データ構造から考え直せ。
0797デフォルトの名無しさん2009/09/14(月) 01:22:02
>細かいファイルをシーケンシャルで読み込むため

NTFSならきにせんでよろし
0798デフォルトの名無しさん2009/09/14(月) 01:23:55
でもWindowsのショートカットとか明らかに効率悪そうだよねぇ。
0799デフォルトの名無しさん2009/09/14(月) 09:55:05
Visual Studio2008でwindows のサービスアプリを作成しています。

サービスアプリ自体を各クライアントから操作、データの送受信を行いたいのですが、
プロセス間通信のところで少し悩んでいます。ご教授お願いいたします。

サービスアプリでクライアントとの通信をメッセージ"WM_COPYDATA"を送受信して行うことは可能でしょうか?
サーバ側は、StartServiceCtrlDispatcher()で自作でサービスを作成していますが、この場合ウインド(非表示)
を作成してクラインととの通信をSendMessage()で行うことは可能でしょうか?
また、サービスアプリでウィンドを作成する自体は問題はないのでしょうか?
0800デフォルトの名無しさん2009/09/14(月) 10:17:51
やっちゃだめ
08017992009/09/14(月) 11:12:49
>> 800
返信ありがとうございます。
ダメというのは、サービスプログラムでウィンドを作成することがダメなのでしょうか?
0802デフォルトの名無しさん2009/09/14(月) 11:42:58
SendMessage()で行うこと
0803デフォルトの名無しさん2009/09/14(月) 14:05:26
サービスでウィンドウ作る(デスクトップにアクセス)するのは
サービスのプロパティのログオンのとこで
デスクトップとの対話をサービスに許可にチェック入れる必要あるよ
0804デフォルトの名無しさん2009/09/14(月) 15:17:51
パイプ、メールスロット、ソケットなどカーネルよりの仕組みのほうがサービスでも気兼ねなく使えると思う。
0805デフォルトの名無しさん2009/09/14(月) 15:32:17
> ウィンドを作成

?
0806デフォルトの名無しさん2009/09/14(月) 15:44:46
つまり風を起こすって事だ
0807デフォルトの名無しさん2009/09/14(月) 16:01:02
>>805はどこレスを持ってきてほざいてるの?
0808デフォルトの名無しさん2009/09/14(月) 16:07:46
>>807
少し上のレスも読まんのか
0809デフォルトの名無しさん2009/09/14(月) 16:26:47
いやいやwwwwwwwwwwwww
少し上ならアンカーつけろよww
ああ、アンカー付け方知らない初心者でしたか
まずは1年くらいロムる事をお勧めする
0810デフォルトの名無しさん2009/09/14(月) 16:30:53
何このキチガイw
0811デフォルトの名無しさん2009/09/14(月) 16:32:03
キチガイはお前だよwwwwwwwwwwww
0812デフォルトの名無しさん2009/09/14(月) 16:39:44
sageを知らない初心者は一生ロムる事をお勧めする
0813デフォルトの名無しさん2009/09/14(月) 16:48:20
まだsage厨っていたんだwwwwwwwwwwwwwwwww
初心者丸出しワロタwwwwwwwwwwwwwwww
0814デフォルトの名無しさん2009/09/14(月) 16:49:28
専ブラ使わない奴がここ利用してるんだ… ちょいと意外だな
08157992009/09/14(月) 16:53:29
>>802,803,804

ありがとうございます。
現状はパイプで通信を行っているのですが、サーバに対して複数のクライアントがメッセージを送信するため
”WM_COPYDATA”に変更できないかと思いましたがあきらめます。
パイプによるイベントドリブン式のクラスを自作して、対処したいと思います
0816デフォルトの名無しさん2009/09/14(月) 16:57:57
sageろって言う人って大抵IEでみてるからね。
0817デフォルトの名無しさん2009/09/14(月) 16:59:11
まだ専ブラ使ってる奴っているんだwww
そっちの方が意外だよ
0818デフォルトの名無しさん2009/09/14(月) 17:00:44
sageろ
専ブラ使え

いつの時代だよwwwwwwwwwwwwwwwwwwww
0819デフォルトの名無しさん2009/09/14(月) 17:03:30
過去ログから正規表現でサーチできたりするんで専ブラ重宝してるんだけど…
他の手段で探してるのかな? ググレカスの1択 ってことは無いよな?
0820デフォルトの名無しさん2009/09/14(月) 17:09:51
過去ログなんてどうでもいい。分からなければここで質問すればいいし。
0821デフォルトの名無しさん2009/09/14(月) 17:17:48
わざわざBuild1〜Build80まで調べるとかどんだけ暇人だよ。
0822デフォルトの名無しさん2009/09/14(月) 17:20:44
何の努力もせずに教えてもらおうという態度が気に入らない
せめて努力してみたけどわかりませんでしたというフリをしろ
0823デフォルトの名無しさん2009/09/14(月) 17:22:14
まあまあsage厨は意味もわらかずにほざいてるだけだから大目にみてやってくれよ

さてAPIの話に戻るか
0824デフォルトの名無しさん2009/09/14(月) 17:24:12
> 意味もわらかず

?
0825デフォルトの名無しさん2009/09/14(月) 17:26:14
>>824はどこレスを持ってきてほざいてるの?
0826デフォルトの名無しさん2009/09/14(月) 17:39:53
もうこれ以上sage信者を責めないで下さい><
0827デフォルトの名無しさん2009/09/14(月) 17:41:59
age厨の馬鹿を責めてるんだけど?
0828デフォルトの名無しさん2009/09/14(月) 17:52:09
意味もわらかずにウィンドを作成するから荒れるんだよ
0829デフォルトの名無しさん2009/09/14(月) 17:53:48
sage厨って知らないのにレスする奴だよね。
0830sage厨2009/09/14(月) 17:55:01
正解!
0831デフォルトの名無しさん2009/09/14(月) 17:57:12
sageて何が悪いの?馬鹿なの?死ぬの?
お前等みたいなクズにいわれたくねーよゴミのくせに
0832デフォルトの名無しさん2009/09/14(月) 17:59:25
意味もわらかずにレスしないで下さい。ウザイです><
0833デフォルトの名無しさん2009/09/14(月) 18:01:19
>>799
ググれクズ
0834デフォルトの名無しさん2009/09/14(月) 18:07:00
>>833=>>807
少し上のレスを読まなかったお前が悪いんだから質問者に逆ギレするなよ。
0835デフォルトの名無しさん2009/09/14(月) 18:10:53
sageてる奴ってこんなクズしかいないの?w
0836デフォルトの名無しさん2009/09/14(月) 18:12:54
>>835=>>833=>>807
ハイハイsage厨のフリしなくていいよ坊や
0837デフォルトの名無しさん2009/09/14(月) 18:16:56
レスの勢いで検索するから問題ない
0838デフォルトの名無しさん2009/09/14(月) 18:28:03
sage厨必死すぎワロタ
0839デフォルトの名無しさん2009/09/14(月) 18:28:39
>>838
顔真っ赤ですよ
0840デフォルトの名無しさん2009/09/14(月) 18:34:02
わ、笑って赤くなったんだからね!
0841デフォルトの名無しさん2009/09/14(月) 23:00:39
どうしてこうなった
0842デフォルトの名無しさん2009/09/14(月) 23:41:45
もうだめだこのスレ
0843デフォルトの名無しさん2009/09/14(月) 23:57:58
Win32を潰して.NETに移行させる為の工作だろうか
0844デフォルトの名無しさん2009/09/15(火) 04:23:29
移行?
Windowsでは.NetもWin32の上で動いてんだけど
0845デフォルトの名無しさん2009/09/15(火) 08:00:12
もう.NETでいいよ
0846デフォルトの名無しさん2009/09/15(火) 10:00:25
.NET(笑)
0847デフォルトの名無しさん2009/09/15(火) 10:01:27
ちょっとでもシステム寄りの質問すると「またウイルスか!また改造か!死ね!死ね!」だもんな
0848デフォルトの名無しさん2009/09/15(火) 10:08:57
>>847
そういう嘘はいいから。
0849デフォルトの名無しさん2009/09/15(火) 10:16:07
>>847
Win32APIで出来ない事はスレ違いだと理解しろ
0850デフォルトの名無しさん2009/09/15(火) 10:16:32
まともな質問がウイルスだ改造だって叩かれる例は無いな。

システム寄りの知識を持ってないクソガキがそういう質問して叩かれてるのはよく見るがw
デバッグ検知?ステータスバー??
0851デフォルトの名無しさん2009/09/15(火) 10:18:08
↑まさにこういう人たちw
0852デフォルトの名無しさん2009/09/15(火) 10:20:20
>>851
なあ、叩かれて悔しかっただけだろ?

叩かれるのが嫌なら自分で勉強しようよ。
せめて用語は正しく使えるようになってから質問しようね。
0853デフォルトの名無しさん2009/09/15(火) 10:22:50
馬鹿な質問者ほど逆恨みするという法則
0854デフォルトの名無しさん2009/09/15(火) 10:45:25
またsage厨が荒らしてるのか
0855デフォルトの名無しさん2009/09/15(火) 11:00:24
いいえage厨が荒らしております
0856デフォルトの名無しさん2009/09/15(火) 11:05:16
sage厨必死すぎワロタ
0857デフォルトの名無しさん2009/09/15(火) 11:15:56
>>847-853
基地外sage厨はもうこのスレに来るな
0858デフォルトの名無しさん2009/09/15(火) 11:20:10
ワロタ
お前がもうこのスレに来るなよw
0859デフォルトの名無しさん2009/09/15(火) 16:46:08
きえろぶっとばされんうちにな
0860デフォルトの名無しさん2009/09/15(火) 16:51:10
布団が吹っ飛んだ
0861デフォルトの名無しさん2009/09/15(火) 16:53:14
          トv'Z -‐z__ノ!_
        . ,.'ニ.V _,-─ ,==、、く`>>859
      ,. /ァ'┴' ゞ !,.-`ニヽ、トl、:. ,
    rュ. .:{_ '' ヾ 、_カ-‐'¨ ̄フヽ`'|:::  ,.、
    、  ,ェr<`iァ'^´ 〃 lヽ   ミ ∧!::: .´
      ゞ'-''ス. ゛=、、、、 " _/ノf::::  ~
    r_;.   ::Y ''/_, ゝァナ=ニ、 メノ::: ` ;.
       _  ::\,!ィ'TV =ー-、_メ::::  r、
       ゙ ::,ィl l. レト,ミ _/L `ヽ:::  ._´
       ;.   :ゞLレ':: \ `ー’,ィァト.::  ,.
       ~ ,.  ,:ュ. `ヽニj/l |/::
          _  .. ,、 :l !レ'::: ,. "
0862デフォルトの名無しさん2009/09/15(火) 20:48:15
ダイアログボックスを作ってそこからCreateWindowでウインドウを作るケースなんですけど、
GetMessage/DispatchMessageは無しでダイアログにお任せでよいのでしょうか、よく分からんです
0863デフォルトの名無しさん2009/09/15(火) 20:57:02
>>862
ダイアログの表示にDialogBox類を使っているならそう。
DialogBoxの中でGetMessage/DispatchMessageが呼ばれていると思えばいい。
0864デフォルトの名無しさん2009/09/15(火) 21:01:02
>>863
|・ω・)ノ どもです
0865デフォルトの名無しさん2009/09/15(火) 21:10:39
>>861
|・ω・)ノ どもです
0866デフォルトの名無しさん2009/09/15(火) 21:11:25
>>852
|・ω・)ノ どもです
0867デフォルトの名無しさん2009/09/15(火) 21:35:14
なんだ、目覚ましが帰ってきたのか
0868デフォルトの名無しさん2009/09/15(火) 22:42:04
​
0869デフォルトの名無しさん2009/09/15(火) 23:05:40
>>867
|・ω・)ノ どもです
0870デフォルトの名無しさん2009/09/16(水) 00:08:47
さっさと目覚ましと時計をうpしろよ。
0871デフォルトの名無しさん2009/09/16(水) 00:11:58
ザメハ
0872デフォルトの名無しさん2009/09/16(水) 01:03:05
ホナ�T
0873デフォルトの名無しさん2009/09/16(水) 13:56:39
目覚まし君の作った"目覚まし時計 for .NET"使ってみたいな
1000円で買うからうpしてくれないかな
0874デフォルトの名無しさん2009/09/16(水) 14:00:45
きえろぶっとばされんうちにな
0875デフォルトの名無しさん2009/09/16(水) 18:08:37
目覚ましと時計のうpよろしく。
0876デフォルトの名無しさん2009/09/18(金) 03:30:27
|ω・) ジー
0877デフォルトの名無しさん2009/09/18(金) 06:08:53
http://pc11.2ch.net/test/read.cgi/tech/1226575789/231
> 231 名前:221[sage] 投稿日:2008/11/18(火) 00:11:20
> あるよ。
> 時間も指定できるし。
>
> あと俺は指定した時間にMP3を再生する目覚ましと時計を作ったよw
> フリーソフトにすら公開してねーけどw
0878デフォルトの名無しさん2009/09/18(金) 15:24:45
>>874
なんで怒るんだよ、Win32APIにコンプレックス持ちすぎじゃねーか
.NETで目覚まし時計作れるなんてたいしたもんだと思うぞ
おれの友達で偏差値平均65ある奴いたけどそいつは結局何も作れずに挫折してるしさー
.NETだってむずかしくて挫折する奴多いんだから自信持ちなよ
API使いに茶化されたくらいでファビョるなよな
0879デフォルトの名無しさん2009/09/18(金) 15:41:28
きえろぶっとばされんうちにな
0880デフォルトの名無しさん2009/09/18(金) 16:02:49
.NET使い始めてすぐWin32API使い始めた
だって.NETに使いたい機能がなかったんだもん
0881デフォルトの名無しさん2009/09/18(金) 19:43:56
目覚まし君は自作ソフトの目覚ましと時計をうpすること。
うpできないならスレに書き込まなくて結構です。
0882デフォルトの名無しさん2009/09/18(金) 21:27:55
>>794
> 無理、Windows自体は場所を求める方法を公開していない。
ふぅん
0883デフォルトの名無しさん2009/09/18(金) 21:30:24
些末な煽りレスに取られそうなことに気づいたので一応アンカ
http://msdn.microsoft.com/en-us/library/aa364572(VS.85).aspx
0884デフォルトの名無しさん2009/09/18(金) 22:53:43
で?
0885デフォルトの名無しさん2009/09/19(土) 04:50:24
程度の低いスレだな。
俺よりも低いやつはいないと思いたいところだけど、怪しい
0886デフォルトの名無しさん2009/09/19(土) 04:54:19
で?
0887デフォルトの名無しさん2009/09/19(土) 05:52:48
>>885=>>886
0888デフォルトの名無しさん2009/09/19(土) 07:18:31
で?
0889デフォルトの名無しさん2009/09/19(土) 10:02:29
さっさとうpしなさい。
0890デフォルトの名無しさん2009/09/19(土) 10:54:08
ポカーン・・・?
0891デフォルトの名無しさん2009/09/19(土) 14:14:27
>>881 >>877
”目覚まし時計”だと思ってたら”目覚ましと時計”が正式名称だったのかよw
0892デフォルトの名無しさん2009/09/19(土) 14:26:05
指定した時間にMP3を再生する目覚まし と 時計
を別に作ったのでは?
0893デフォルトの名無しさん2009/09/19(土) 14:52:06
>>874
.NET遅い()笑
0894デフォルトの名無しさん2009/09/19(土) 14:56:40
目覚ましと時計のうpよろしく。
0895デフォルトの名無しさん2009/09/19(土) 19:39:46
誘導されてきました。
キャレット位置の取得の仕方について質問させて下さい。

使用しているエディタ(メモ帳、サクラエディタ等)のキャレットの位置に
ポップアップメニューを表示させたいのですが、
キャレット位置の取得の仕方が分かりません。
GetCaretPosという関数がそれに近いようなことをできるのかと思いましたが、
使ってみると、ポップアップメニューが毎回、画面左上に表示されます。

// キャレット位置
POINT pt;
//キャレット位置取得
GetCaretPos(&pt);

環境は
VC++2008 Express Editionです。

どのようにすればよいでしょうか。
よろしくお願いします。
0896デフォルトの名無しさん2009/09/19(土) 20:55:14
>>895
試したけど、GetCaretPos() を実行するスレッドがキャレット保持ウィンドウの入力状態を共有してればいけるみたい

int main(int argc, char* argv[]) {
 for (;;) {
  HWND hwndForeground = ::GetForegroundWindow();
  if (hwndForeground == NULL) continue;
  DWORD dwForegroundProcessID;
  DWORD dwForegroundThreadID = ::GetWindowThreadProcessId(hwndForeground, NULL);
  if (::AttachThreadInput(::GetCurrentThreadId(), dwForegroundThreadID, TRUE)) {
   POINT pt;
   if (GetCaretPos(&pt)) printf("%d, %d\n", pt.x, pt.y);
   ::AttachThreadInput(::GetCurrentThreadId(), dwForegroundThreadID, FALSE);
  }
  Sleep(500);
 }
 return 0;
}
0897デフォルトの名無しさん2009/09/19(土) 21:12:31
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/1269d060-ab69-4242-9234-480b5387eb93
この質問者さんと私は別人ですが同じ事で困っています.マイドキュメントのアクセス権は普通のフォルダにアクセス権を与えたのとは
また別の設定をしなければならないのでしょうか?
0898デフォルトの名無しさん2009/09/19(土) 21:27:50
リンク先を間違っていないか?アクセス権とか一言も出てこないのだが。
08998972009/09/19(土) 21:42:13
1>cl : コマンド ライン error D8022 : '\\xxx\Debug\RSP00000110322616.rsp' を開けません
1>一時ファイルを削除できませんでした。ファイルが開いていないこと、また書込み禁止になっていないことを確認してください。

このようなエラーが出たのでエラー番号で調べると下記URLで同じようなことで困ってる人がいました
http://social.msdn.microsoft.com/forums/en-US/Vsexpressvc/thread/71ff7f3f-48f3-44b1-b1a4-592409cae5f3/
Administratorでコンパイルすれば出来るはずみたいなことが書いていたのでアクセス権が関係するのかなと思い書きました.
リンク先は合っています.一度エラーで示されたフォルダまで行くとありました.しかし手作業でRSP〜〜.rspを消そうとすると
アクセスできませんと出ます.
0900デフォルトの名無しさん2009/09/20(日) 12:03:08
http://ime.nu/www1.axfc.net/uploader/Sc/so/37829.zip
Unicode化がうまくいかない。どうして?
0901デフォルトの名無しさん2009/09/20(日) 13:08:45
>>900
うまくいかない、って曖昧にも程があるだろ。

とりあえずソースから一寸試してみたけど、
この書き方だと、DirList関数を呼ぶまではCロケールのままだろ。
0902デフォルトの名無しさん2009/09/20(日) 13:13:23
>>901
どうすればいいんですか?
0903デフォルトの名無しさん2009/09/20(日) 13:19:18
>>901
これですね。
http://d.hatena.ne.jp/s-kita/20080712/1215827470
ありがとうございます。
0904デフォルトの名無しさん2009/09/20(日) 13:27:18
あれ、駄目だ。
Unicodeのファイル名が出力されない。
dirだと、出力できるのに。
0905デフォルトの名無しさん2009/09/20(日) 13:38:30
バイナリのインポートを眺めてみたがリンクが全て〜A
Unicodeでコンパイルしていない悪寒
0906デフォルトの名無しさん2009/09/20(日) 13:43:04
>>905
これでも駄目
http://www1.axfc.net/uploader/Sc/so/37857.zip
0907デフォルトの名無しさん2009/09/20(日) 14:39:41
どういう環境で、どうなることを期待して、どうなってるから駄目だと判断したのか。
0908デフォルトの名無しさん2009/09/20(日) 14:44:09
Win2kで、「フォルダ♫」というフォルダが表示されることを期待して、
sdirwを実行したら、音符のところが表示されないから駄目だと
判断した。
0909デフォルトの名無しさん2009/09/20(日) 15:24:30
デバッガで追ってみるとFindFirstFileで♫取れてるじゃない。
要は、_putts()でWindowsのコンソールに♫を出力するにはどうすればいいか、
という質問?
0910デフォルトの名無しさん2009/09/20(日) 15:30:06
WriteConsoleだと確実に通るのだけどねえ。
CRTが絡むと話がややこしくなるなあ。
ちなみに、今のコードだとマルチバイト文字に変換してから出力されることになるので、
Unicode側にしか無い文字があると、そこで出力が止められる。
0911デフォルトの名無しさん2009/09/20(日) 15:42:22
dir が何やってるのかねえ
同じ文字列をファイルにしてBOMつけるとtypeコマンドでも出るねえ
0912デフォルトの名無しさん2009/09/20(日) 16:18:39
何やってるかって
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE),...
やってるんじゃないの?
stdioとかiostream通す限りは無理なんじゃないの。
0913デフォルトの名無しさん2009/09/20(日) 16:54:58
ロケール絡みじゃないの
0914デフォルトの名無しさん2009/09/20(日) 18:06:06
setlocale( LC_ALL, "");
じゃだめか?
0915デフォルトの名無しさん2009/09/20(日) 18:48:32
そういう次元の話じゃないだろ
CP932に無いUNICODE文字をどう表示するかって話
0916デフォルトの名無しさん2009/09/20(日) 18:54:51
コンソールの文字コード指定てできなかったっけ
UTF-8だけかな
0917デフォルトの名無しさん2009/09/20(日) 19:06:38
指定できるけど意味ない
0918デフォルトの名無しさん2009/09/20(日) 19:23:00
C++のストリームでよければ、直接WriteConsoleWへ出力するストリームを作って、
それをstd::wcoutなどの代わりに使うことができる。
まあ、詳しいやり方はこのスレから外れる話だけど。
0919デフォルトの名無しさん2009/09/20(日) 20:37:54
マルチバイトじゃ ?(x266B) は表示できません
ってことでOK?
0920デフォルトの名無しさん2009/09/20(日) 23:09:24
いいえ
0921デフォルトの名無しさん2009/09/21(月) 01:17:32
EnumWindows(EnumWindowsProc,0);
ウィンドウ列挙で↑みたいな0入れてる例がネット検索
したらありました。何か入れないと動作しないんじゃない
んですか?
0922デフォルトの名無しさん2009/09/21(月) 01:20:17
はい
0923デフォルトの名無しさん2009/09/21(月) 01:20:40
もともとEnumWindowsProcの引数になるだけ
0924デフォルトの名無しさん2009/09/21(月) 01:29:55
>>921
何か入れないと動作しない(引数が足りなくてコンパイルできない)ので0を入れてます。
0925デフォルトの名無しさん2009/09/21(月) 01:35:02
>>921 です。
そうなんですか。ありがとうございました。
0926デフォルトの名無しさん2009/09/21(月) 11:52:05
コールバック関数とかにはよくあることです。

どこの誰から呼ばれたのかを識別するために、
呼び元でそれと分かる値をのせて区別したり。
0927デフォルトの名無しさん2009/09/21(月) 11:59:16
というかむしろ引数がないコールバックとか芯で欲しい
0928デフォルトの名無しさん2009/09/21(月) 12:18:27
サンクの出番だな
0929デフォルトの名無しさん2009/09/21(月) 12:25:49
>>927
WindowProcのことですね
0930デフォルトの名無しさん2009/09/21(月) 13:56:37
SetWindowsHookExのことですね
0931デフォルトの名無しさん2009/09/21(月) 15:10:29
過去にEnumCalendarInfoExで引数ないのかよ、と思った。
VistaからEnumCalendarInfoExExが出来たけど。
0932デフォルトの名無しさん2009/09/21(月) 15:59:02
>>912
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), ...)
で成功しました。ありがとうございます。
0933デフォルトの名無しさん2009/09/21(月) 16:09:54
ウイルススキャンをファイルにたいしてかけたいのですが、
インストールされているアンチウイルスソフトの種類によらず
ファイル名を指定してウイルススキャンをかけられるAPIって
ありませんか?
0934デフォルトの名無しさん2009/09/21(月) 16:15:19
>>933
ありません
0935デフォルトの名無しさん2009/09/21(月) 17:48:43
っていうか、普通に
locale::global( locale( "Japanese_Japan.65001" ) );
が通ってくれれば、Unicodeについて悩む必要ないのにね。
VC++ではJIS、EUC-JP、JISは使えるのにUTF系はどれも使えない。
0936デフォルトの名無しさん2009/09/21(月) 18:02:59
utf-16leあたりはすんなり使えても良さそうなのにね
0937デフォルトの名無しさん2009/09/21(月) 18:29:11
本質的には
・WriteFileではコンソールにUnicodeを出力できない
・WriteConsoleではリダイレクトされた場合にまともに扱えない
という問題だろう?
0938デフォルトの名無しさん2009/09/21(月) 19:19:54
もともと標準規格ではwchar_tは
charより大きければよいとしか書かれてないから
UTF-8を納められるとは限らない。
ゆえにwstringやwfstreamなど、wchar_tを扱うどのライブラリも
せいぜいwchar_t = char = 1バイトがマトモに動けばいいくらいの作りになってる。
アルファベットを使う言語圏の人間による文字セットへの認識はその程度なのだ^^
0939デフォルトの名無しさん2009/09/21(月) 21:26:11
いや、wchar_tもUnicodeも、自身は内部処理用で、外部とのやりとりの際には
マルチバイト文字に変換するってモデルを想定していたように感じる。
C/C++以外では、.NET以前のVBもそんな感じだったし。

とりあえず多言語間で単一のソースコードを使えるようにするという点では、
それで一歩進んだつもりだったんだろう。
0940デフォルトの名無しさん2009/09/21(月) 23:44:04
ユニコードについての質問です。

コンパイラbcc5.5
DrawTextWでユニコード文字列のデコードがうまくいかない。

関数に渡した文字列がL"日本語"のようにLを付けた奴で2バイト文字だと一文字も出力されなくなる
おまけにchar*をmbstowcs関数でwchar_t*に変換したものを渡すと、文字列の描画はされるが、一文字ごとに改行されて表示される(DT_WORDBREAK付きの場合)

一応プログラムの最初で
std::locale loc( std::locale( "" ), "C", std::locale::numeric );
std::locale::global( loc );
ということはしていますが、他にもロケールを正しく指定しなきゃいけないところがあるのでしょうか?
宜しくお願い致します。
0941デフォルトの名無しさん2009/09/21(月) 23:58:16
940です。
プログラムのバイナリを覗いたら、char*の文字列は正しく出力されてましたが、ワイド文字の方は
やけに無茶苦茶な値で出力されてました。本来 "97 63"と出力されるべき文字が"00 00 00 63"のように
出力されるといった感じです。もしかしてコンパイラのスレに行くべきなのだろうか・・・
0942デフォルトの名無しさん2009/09/22(火) 00:02:54
>>941
DrawTextWはデコードなんてしない
L"文字列"
と
mbstowcsの変換結果
が違うならコンパイラの問題と思うけど
0943デフォルトの名無しさん2009/09/22(火) 00:52:43
>>942
うっ・・・変換結果と違いました・・・。
BCCスレに行ってきます・・・ありがとうございました。

[←樹海]  トボトボ…
 ||     λ...
0944デフォルトの名無しさん2009/09/22(火) 01:31:16
BCC5.5ってワイド文字列リテラルをWORDアラインしないバグがあるので
一部のW系APIが失敗するとか聞いたことある
0945デフォルトの名無しさん2009/09/22(火) 01:49:31
BCC5.5 は他にもハマりがちなバグというか、
規格を満たしてないところがあったりするので、
可能なら乗り換えた方がいいよな。

switch(0){putchar('A');}

で A が表示されてしまうとか。

スレ違いスマソ。
0946デフォルトの名無しさん2009/09/22(火) 02:33:21
switch(0){putchar('A');}



('A');

顔文字にしか見えん
0947デフォルトの名無しさん2009/09/22(火) 03:10:21
それって出力されたらだめなの?
フォールスルーしそうなもんだけど
0948デフォルトの名無しさん2009/09/22(火) 05:03:56
    |       |       |
    |      |     |
    | ガンッ!! |      |
    |     ,l     ヽ
    |     /      /
    | 从/ /      |
    | _.,/ ,   /   lノ
    |_ //__' ,   i
  / (_(_`/- ,_, ノ
/     ゝ(  丿
0949デフォルトの名無しさん2009/09/22(火) 06:40:50
VC++が有償だった時代なら兎も角、今時BCCなんて使う必要無いでしょ
0950デフォルトの名無しさん2009/09/22(火) 08:40:44
BCCの手軽さはいまでも有用だよ
0951デフォルトの名無しさん2009/09/22(火) 08:55:25
VC++の方が手軽だろ
0952デフォルトの名無しさん2009/09/22(火) 09:41:59
VCCの方が楽だよ
0953デフォルトの名無しさん2009/09/22(火) 09:54:30
VBにきまってるだろjk
0954デフォルトの名無しさん2009/09/22(火) 09:56:05
VBの手軽さを知っちゃうとC言語系なんて使う気が起きない。
0955デフォルトの名無しさん2009/09/22(火) 09:57:34
古いシステムのメンテナンスとかだとコンパイラを変えるわけにいかないから
仕事で使ってるマシン、10種類以上コンパイラが入ってる
0956デフォルトの名無しさん2009/09/22(火) 10:02:17
10種類程度で自慢かよ

俺のマシンなんて100種類以上コンパイラが入ってる
0957デフォルトの名無しさん2009/09/22(火) 10:16:17
小学生かよw
0958デフォルトの名無しさん2009/09/22(火) 10:32:49
俺なんて 1000 種類だぜ。
0959デフォルトの名無しさん2009/09/22(火) 12:17:55
VC6、VC6SP1、VC6SP2、VC6SP3、VC6SP4、VC6SP4+PP、VC6SP5、VC6SP5+PP、VC6SP6

VC6だけで9種類なんだが
VC5以下orVC2002以降とVC以外のコンパイラ加えると100種類ぐらい簡単に超えるよ
09605872009/09/22(火) 12:45:16
よかったね。
09615802009/09/22(火) 12:48:34
わからんなら だまっとれいっ
0962デフォルトの名無しさん2009/09/22(火) 13:32:59
VCだけだと20種類弱かなあ。
VC6は異様に多いけど、2003/2005/2008なんてSP1だけだし。
MS系でWin32に対応したC/C++コンパイラはVC2.0からだっけか、たしか。
0963デフォルトの名無しさん2009/09/22(火) 13:42:31
2003以降はDDKの奴を含めるともう少し多い
0964デフォルトの名無しさん2009/09/22(火) 15:18:28
昔面接した会社の奴が

「GUIプログラムはC言語では組めませんVC++(MFC)でしか組むことが出来ません。」
とかほざきやがって「それは違います」って言った事を思い出しちまったぜ


そこは内定もらえなかったw
0965デフォルトの名無しさん2009/09/22(火) 15:20:49
普通の会社はイエスマンしか雇わない。
よかったなあなた
09669642009/09/22(火) 15:22:43
>>965
いやぁ、あまりに物知り顔で言われてさw
少しイラっときてついつい・・
0967デフォルトの名無しさん2009/09/22(火) 15:25:03
わざとボケて突っ込み方を見るテストだw
0968デフォルトの名無しさん2009/09/22(火) 15:39:25
C言語だけでGUIってのは相当難易度高いんじゃないのか?
APIを使うなってことだろ?
インラインアセンブラとかでシステムコール呼ぶしかないのかな?
0969デフォルトの名無しさん2009/09/22(火) 15:47:19
>>968
最初は楽な方法でやるがほしい機能がないと
せこせことAPIを調べはじめ自分でドンドンハードルを高くしたしまう。
出来ないと突っぱねると、会社からはじき飛ばされ、世間からもはじきとばされる。
0970デフォルトの名無しさん2009/09/22(火) 15:52:38
システムコールがよくてAPIがだめって?
0971デフォルトの名無しさん2009/09/22(火) 16:07:31
じゃあ他にどうやんの?
0972デフォルトの名無しさん2009/09/22(火) 16:18:28
いまだにMFCなんか使うなよな。わけわからん。
0973デフォルトの名無しさん2009/09/22(火) 16:33:50
いまだにってことないだろ
MFCもバージョンアップしてるんだぜ、いまだに
0974デフォルトの名無しさん2009/09/22(火) 16:35:57
だれが964の相手し始めたんだよ
0975デフォルトの名無しさん2009/09/22(火) 18:44:21
100種類入れるのはいいけど使ってんの?
次にWindowsを再インストールするまで、一度も起動しないやつのが多そう。
環境の再構築やってますって言いながら使いもしないコンパイラのインストールで何日もサボる言い訳か。
0976デフォルトの名無しさん2009/09/22(火) 22:50:38
100種類はどうかと思うが、必要になったときにすぐ使えるって言うのが重要なんだよ。
0977デフォルトの名無しさん2009/09/23(水) 00:09:45
>>975
コンパイラなんてコピーして環境変数設定するだけで動くだろが。
お前馬鹿じゃねーの?
0978デフォルトの名無しさん2009/09/23(水) 00:22:35
100がなんだが知らないけど、ウインドウ作成時ImmAssociateContextした戻り値のHIMCは
ウインドウ破棄のとき、ImmAssociateContextしなおす必要あるの、ないの、どっち
09795872009/09/23(水) 00:25:00
ない。
0980デフォルトの名無しさん2009/09/23(水) 00:26:21
ども
0981デフォルトの名無しさん2009/09/23(水) 17:52:06
次スレだめだった
誰かよろ
0982デフォルトの名無しさん2009/09/23(水) 18:11:34
立ててきた
0983デフォルトの名無しさん2009/09/23(水) 18:54:33
別の板に立てたみたいだから、俺が立てるね
09845872009/09/23(水) 18:57:20
頼んだ。
0985デフォルトの名無しさん2009/09/23(水) 18:59:53
いろいろ間違えて、正直すまんかった
http://pc12.2ch.net/test/read.cgi/tech/1253699773/
0986デフォルトの名無しさん2009/09/23(水) 19:03:28
立ってなくね?
0987デフォルトの名無しさん2009/09/23(水) 19:04:45
立ってるよ。
0988デフォルトの名無しさん2009/09/23(水) 19:07:06
ume
0989デフォルトの名無しさん2009/09/23(水) 19:16:02
>>987
エッチね♪
0990デフォルトの名無しさん2009/09/23(水) 19:45:23
なんてことを!
0991デフォルトの名無しさん2009/09/23(水) 19:54:44
ちょっと!
0992デフォルトの名無しさん2009/09/23(水) 21:37:07
ずきゅ〜ん!
09939642009/09/23(水) 23:04:34
>>968
亀だけどAPIはあり
つまりあっちはWindowsSDKのことを知らなかったんだよ

因みにそれを説明したら「ふーん」とちょっと引きつった感じの顔してたかな
その時「ああ、落とされたか」と思ったけど前述のC言語でGUIは組めないと
言われた時点で内定貰うもらわないにかかわらずその会社に行く気はなくなってた。
0994デフォルトの名無しさん2009/09/23(水) 23:08:40
まぁ、変なところに行かなくてよかったな。
0995デフォルトの名無しさん2009/09/23(水) 23:10:00
いくぅ
0996デフォルトの名無しさん2009/09/23(水) 23:19:10
クソ会社ume
0997デフォルトの名無しさん2009/09/23(水) 23:21:03
                _,, ─=ニ二 ̄ "'- 、
            _,..-'''"__ ※  `"'- 、  \
           />゙⌒ヽ ̄ ̄ ̄"'- 、 ※ \.   \
         / ./   : :\ : :\ : : \    ∨   \
.         /  /     : :ハ  : :\ : : ヘ ※ ∨ _〆)
        / : :i    : i: : :ト、   : : ヘ : :ヘ.   | イ__/
         /  : :i   : : /,イ イ: :ト、\__,: :∧ : : :| ※゙|.八
       l l : : :l_ // ル゙i: :ノィr‐─< 〉: :.,'  .l: : \
       l l. : :tノ.厶イ  ル゙  (て刀ア.,': :./ ※ .l: :    \
       |∧ : :∨ (てカ`     ゞ—゙ /: :/   .ト、 : :     \
.          ゝ : : \.ゞ┘ ,   ////,.イ ※  l: \ : :     \
.         `(>┬-ゝ//  r 、      个   ∧.: : \ : :     '.,
.           ) 人.X゙\   `‐'   / .| ※ /.: :',: :   \: :   l ですぅ
            /./ : : )゙※/゙テ=r‐ャ<.___人.  /: :  ',: :    \: :  l
        /./ : :/ /゙f .〉〉刀, 〉 〕    `X乃ミY)∧: :      \/
          /./ : :/./_「| Y|    /\  ∧ ヘ\  ̄ハ.: :      \
       /./ : : ,イ 辷竺ミY   .∧  》 ∧ノ  〉 \. l.: :        ヘ
.       /./., -'"/ノ 廴_辷竺ミ乃ゝノ∧ノ  / ※ /  |.: : : :       ',
      /./  /  ./^''^''廴___) ∧ノ  〈   〈   l: : : :      l
.    / ※ / Y /    人^''^''^∨ノ∠_.',    ', l',.: : : :       |
.   /   .弓ミxrュ/    /((∧.    ',       ', ※゙∨ ',.: : : :       |
 / ※ 〈ゞ〃rr/     ,イ))/ ∧   てハ二) ヘ.   ∨ l.: : : :     |
     /∨》 |.ト、   /|.|((廴_.∧    |.|.|ヘ.   | ※ | |.: : : :     /
 \ /   _∨゙|.| ゝノ |.|^Y^Y^人 .ノ|.|.|〉〉.   |    |.丿: : : :   /
0998デフォルトの名無しさん2009/09/23(水) 23:22:37
1000なら .NET
0999デフォルトの名無しさん2009/09/23(水) 23:22:51
社名晒そうぜ
1000デフォルトの名無しさん2009/09/23(水) 23:24:26
>>2なら・・・
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。