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

Win32API質問箱 Build66

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2008/05/14(水) 23:33:42
スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

Win32API質問箱 Build65
http://pc11.2ch.net/test/read.cgi/tech/1208847084/
0002デフォルトの名無しさん2008/05/14(水) 23:33:57
- MSDN ホームページ
http://www.microsoft.com/japan/msdn/
- MSDN ライブラリ
http://msdn.microsoft.com/library/
http://msdn.microsoft.com/library/ja/
- MSDN2 ライブラリ
http://msdn2.microsoft.com/en-us/library/
http://msdn2.microsoft.com/ja-jp/library/
- MSDN ライブラリ (ローカル版)
http://www.microsoft.com/downloads/details.aspx?familyid=6FF3BC60-32C8-4C22-8591-A20BF8DFF1A2&displaylang=ja
http://www.microsoft.com/downloads/details.aspx?familyid=B8704100-0127-4D88-9B5D-896B9B388313&displaylang=ja
- 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
0003デフォルトの名無しさん2008/05/14(水) 23:34:12
- Google
http://www.google.com/
- 猫でもわかるプログラミング
http://www.kumei.ne.jp/c_lang/
- Win32 API入門
http://wisdom.sakura.ne.jp/system/winapi/
- Win32 プログラミング入門
http://www7.plala.or.jp/keny01/

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

-おまけ
Build19が見たい人で余裕のある人は●でも買ってくれ。
0004デフォルトの名無しさん2008/05/14(水) 23:34:48
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/
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/
0005デフォルトの名無しさん2008/05/14(水) 23:35:01
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/
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/
0006デフォルトの名無しさん2008/05/14(水) 23:35:12
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
0007デフォルトの名無しさん2008/05/14(水) 23:43:30
>>1-6乙
0008デフォルトの名無しさん2008/05/15(木) 00:13:19
大雑把に言って、WM_PAINTでべたべた描画するときはCreateWindow(Ex)。
コントロールをペタペタ乗せるときはダイアログ。

どっちも使うぜってときは、俺の場合CreateWindow(Ex)で作ったウィンドウに
子ウィンドウとしてダイアログを貼り付けることが多いかな。
ただし、うまくやらないとコントロールとの通信がやや煩雑になるかもしれない諸刃の剣。
0009デフォルトの名無しさん2008/05/15(木) 00:17:29
ボタンを貼り付けようと思ったら
独立したボタン扱いになって画面外に置き去りになったことは良い思い出
0010デフォルトの名無しさん2008/05/15(木) 01:35:28
>>9
?
0011デフォルトの名無しさん2008/05/15(木) 02:04:27
ボタン
 ↓
 口

┏━━━━━━┓
┃
┃ window
┗━━━━━━┛
0012デフォルトの名無しさん2008/05/15(木) 02:06:07
ぼタン「一人でできるもん」
0013デフォルトの名無しさん2008/05/15(木) 03:43:32
>>8
おいらどんなときでもダイアログで作ってた…
0014デフォルトの名無しさん2008/05/15(木) 07:30:05
>>11
ダイアログエディタでボタンを配置していてそんな事になるか?
0015デフォルトの名無しさん2008/05/15(木) 07:59:59
エディタなんて使わないモン
0016デフォルトの名無しさん2008/05/15(木) 16:40:56
BlockInput(TRUE);
これで制御停止させても Ctrl+Alt+Delete で解除されてしまう

BlockInput(TRUE);の間Ctrl+Alt+Deleteを無効にするにはどうすればいい?

RegisterHotKeyではダメだった
0017デフォルトの名無しさん2008/05/15(木) 16:49:10
>>15
ExpressEditionを使ってる貧乏人ですか?
0018デフォルトの名無しさん2008/05/15(木) 16:53:08
Ctrl+Alt+Deleteで解除されたら何か困るのか
0019デフォルトの名無しさん2008/05/15(木) 16:56:28
内部でkeyevent発生させてるから処理終わるまで解除されないようにしたいんだよ
0020デフォルトの名無しさん2008/05/15(木) 17:11:06
BlockInput(TRUE);の間お前のアプリがバグって再起動するまでCtrl+Alt+Deleteできなくなったらどうするんだよ
0021デフォルトの名無しさん2008/05/15(木) 17:45:28
そう簡単に誤操作するような組み合わせでもないんだから
そこまで無効にする必要ないだろ
0022デフォルトの名無しさん2008/05/15(木) 17:58:26
キーボードを引っこ抜けばいい
0023デフォルトの名無しさん2008/05/15(木) 17:59:42
Ctrl+Alt+Deleteを無効にして
別のキーストロークでBlockInputを解除する設定にしたいんだ

自分しか解除できないように

デフォでCtrl+Alt+Delete=解除・再起動
とか設定されてるから他の誰かがCtrl+Alt+Delete押すかもしれないし
0024デフォルトの名無しさん2008/05/15(木) 18:17:33
いますぐカーネルコードにパッチでも当てるんだな。
そんなあほな事がしたければ。
0025デフォルトの名無しさん2008/05/15(木) 18:18:19
それいじるとセキュリティに問題出るからなあ
0026デフォルトの名無しさん2008/05/15(木) 19:52:27
方法言ったらいいだけなのに何わけわからん質問してんだ?
ここの住人はアホか?
0027デフォルトの名無しさん2008/05/15(木) 19:55:32
質問に答える方も機械じゃないんだから
不可解だと思う場合は理由を聞きたくもなる
そんなところでしょ
0028デフォルトの名無しさん2008/05/15(木) 19:58:38
ウィルス製作の手助けなんてしたくないしな
0029デフォルトの名無しさん2008/05/15(木) 20:01:35
グループポリシーで無効にしたらどうなるんだろ。
0030デフォルトの名無しさん2008/05/15(木) 20:19:31
GINA差し替えればいいよ。
0031デフォルトの名無しさん2008/05/15(木) 20:36:38
ctrl+alt+delをフックするにはGINAを差し替える。Vistaは知らん。
再起動とかのボタンを無効にするだけならグループポリシー。
0032デフォルトの名無しさん2008/05/15(木) 20:37:03
if(WaitForSingleObject(handle, 0) == WAIT_OBJECT_0){
/* 処理 */
}

こんな感じにスレッドの終了を感知したいんですがうまくいきません。
WaitForSingleObjectの返り値を見てみたら258などとなってしまいます。
待ち時間をINFINITEにすれば感知できるのですが、
0にして毎フレーム調べる、などはどうすればいいんでしょうか?
0033デフォルトの名無しさん2008/05/15(木) 20:40:08
>>32
GetExitCodeThread
0034デフォルトの名無しさん2008/05/15(木) 20:49:20
1. 他人のPCでウイルスまがいの自作アプリをこっそり走らせる
2. Ctrl+Alt+Deleteを押しても解除できない
3. 「PCがおかしいんだ!助けてくれ」と言われる
4. 自分だけが知ってる方法で解除
5. 「やっぱ○○さん凄いね」と周囲から尊敬の眼差し
0035デフォルトの名無しさん2008/05/15(木) 20:58:32
ただ単にBlockInputを解除するボタンを変更したかっただけ
GINAかグループポリシー調べてみる、ありがとう
0036デフォルトの名無しさん2008/05/15(木) 21:15:33
WinAPIにある関数を使ってCTRL+ALT+DELETE無効は無理なんだな
0037デフォルトの名無しさん2008/05/15(木) 21:18:45
>>27
なるほどなぁと思ったよ
>>26みたいに「ただただ回答してれば良いのに」
っておもってたけど、そういう考え方もあるよな

Win32APIとなんも関係ないけど感動した
0038デフォルトの名無しさん2008/05/15(木) 21:23:04
WinAPIでは無理って言うだけで済んだのにな
>不可解だと思う場合は理由を聞きたくもなる
わかるけど、己の欲望でレスするなよと
0039デフォルトの名無しさん2008/05/15(木) 21:44:57
それは欲望とは言わん
0040デフォルトの名無しさん2008/05/15(木) 21:46:49
なら知りたい欲望もここに書かなければ君のライフは万全だ
0041デフォルトの名無しさん2008/05/15(木) 21:49:56
>>38
欲望というか「質問には全く関係ない事」な
0042デフォルトの名無しさん2008/05/15(木) 22:07:26
>>32
258はWAIT_TIMEOUTだよ。スレッドがまだ終了してないってだけ。
0043デフォルトの名無しさん2008/05/15(木) 22:10:48
怪しい質問か対エスパー質問が大半だからツッコミを入れたくなる
0044デフォルトの名無しさん2008/05/15(木) 23:43:52
>>42
試しに
while(1){
  if(WaitForSingleObject(handle, 0) == WAIT_OBJECT_0){
    break;
  }
}
としてもずっと検出できず、どうも上手くいきませんでした。
スレッド自体は1秒Sleepするだけなので終わらないはずはないのですが。

>>33
別に状態を見る関数があったんですね。
試してみます。
0045デフォルトの名無しさん2008/05/16(金) 00:00:23
http://imepita.jp/20080515/861710
CreateWindowEx関数で作ったリストコントロールとタブコントロールの拡張ウィンドウスタイルに
WS_EX_CLIENTEDGEを指定しているのですが、タブコントロールがリストコントロールのようになりません。
原因が分からず苦労しておりまして、
どのようにすればリストコントロールのような縁になるのかご教授お願いします。
0046デフォルトの名無しさん2008/05/16(金) 00:03:49
知らないならレスしないでください
0047デフォルトの名無しさん2008/05/16(金) 00:12:01
知らないのでレスしません
0048デフォルトの名無しさん2008/05/16(金) 01:35:11
>>44
それで検出できないはずはないんだが。
もしかして_beginthreadでスレッド作ってないか?
それだとスレッドが終了すると自動でハンドルが閉じられて使えなくなるぞ。
0049デフォルトの名無しさん2008/05/16(金) 08:00:41
>>48
ああ、なるほど。
確かに_beginthreadでした。
exのほうで試してみます。
0050デフォルトの名無しさん2008/05/16(金) 11:20:39
すいません、VBスレよりこっちのほうがいいかと思って来ました。
VB6でメニューコマンドを太字にしようと思って、
ポップアップだったら組み込みで入ってたんですが通常メニューはできないので
hMenu = GetMenu(Me.hWnd)
hFileMenu = GetSubMenu(hMenu, 0)

Dim MII As MENUITEMINFO
MII.cbSize = Len(MII) ' Len = sizeof
MII.fMask = MIIM_STATE

GetMenuItemInfo hFileMenu, 0, MF_BYPOSITION, MII ' 場所は仮
MII.fState = MII.fState Or MFS_DEFAULT ' Or = |
SetMenuItemInfo hFileMenu, 0, MF_BYPOSITION, MII
て書いて実現させました。
ところが、太字を解除しようと思って、上記の下から2行目を
MII.fState = MII.fState And Not MFS_DEFAULT
にしてみたのですが解除されません。
どうしたら解除できますか?
0051デフォルトの名無しさん2008/05/16(金) 11:53:45
>>50
DrawMenuBarしてみた?
0052デフォルトの名無しさん2008/05/16(金) 19:34:14
ホットキーとkeybd_event使ってJoyToKeyみたいなん作ってみたんだが
オンラインゲームではJoyToKeyみたいに発動しないんだ

なんで?
0053デフォルトの名無しさん2008/05/16(金) 19:46:21
keybd_eventは古臭いから使うなアホ。
SendInputでKEYEVENTF_SCANCODE使って送れ。
DirectInputでも使える。

//実は昔JoyToKeyを調べたことがあって、JoyToKeyはkeybd_eventを使っている。
//ドキュメント化されていないが、第二引数にスキャンコードを渡すと、
//SendInputでスキャンコードを渡したのと同じ動作をする。
//ただし、ドキュメントにない仕様だから絶対使うな。SendInputを使え。

酷いゲームは、チート防止機能と称して、ルートキットまがいのことをやっているがな。
まあそんなWindowsがバージョンアップしたら自爆するようなゲームは無視していいだろ。
0054デフォルトの名無しさん2008/05/16(金) 20:05:11
ありがとう

別プログラムで、IEプロパティ内の「**削除」をキー操作でやらせてるんだけど
削除中もキー送信してしまう
削除処理が終わるまで待つのって可能?
0055デフォルトの名無しさん2008/05/16(金) 20:46:29
ネイティブなSendMessageの方がよくね?
0056デフォルトの名無しさん2008/05/16(金) 21:33:00
こんばんは。

テキストかバイナリのベクタデータを、
一エレメントを長方形にしてベクタを連続して表示させ、
かつエレメントの値を色で表現・表示したい(短期ゴール)のですが、
どのようにコーディングすれば、またどのような関数を使えばいいのでしょうか。
例:
8ビット幅のエレメントについて、これを8ビットグレースケールに対応させて、
0h0000
0h0001
0h0002
......
0hFFFF
で256個のエレメントを256個のモノトーン長方形
□
.
.
.
■
で表示させたいのです。参考になるサイトや本をご存知でしたら教えていただけないでしょうか。
よろしくお願いいたします。
0057デフォルトの名無しさん2008/05/16(金) 21:47:18
ベクタデータって具体的に何?truetype?

エレメントって何?ベクタデータを構成する部分曲線ってこと?
0058デフォルトの名無しさん2008/05/16(金) 21:53:12
>ベクタデータって具体的に何
単なる値をエレメント、同じビット幅(レンジ)でその連続したデータをベクタといっています。
ベクトル演算とかのベクタです。
曲線データではなく、単なる値です。
0059デフォルトの名無しさん2008/05/16(金) 22:08:49
わかった。間違い探しだな。
0060デフォルトの名無しさん2008/05/16(金) 22:22:18
APIの質問なのか・・・
宿題スレに行った方がよくね?
0061デフォルトの名無しさん2008/05/16(金) 22:24:36
SendInputの使い方msdn見てもわからんorz

サンプルplz
0062デフォルトの名無しさん2008/05/16(金) 22:28:20
>>60
はじめそう思いましたが、上記は第一歩目ということで。。。
はじめは単なるプロットするだけですが、
それを最終的に各エレメント(要素)毎に操作できるようにしたいので、
よろしくお願いいたします。
0063デフォルトの名無しさん2008/05/16(金) 22:34:47
貴方の考えを反映できるのは貴方だけ
0064デフォルトの名無しさん2008/05/16(金) 22:36:52
っていうか配列って言えばいいじゃん紛らわしい
SetPixelでも使えばいいよ
0065デフォルトの名無しさん2008/05/16(金) 22:41:35
SetPixelは遅い
0066デフォルトの名無しさん2008/05/16(金) 22:43:55
第一歩目なら遅くても問題ないだろ
0067デフォルトの名無しさん2008/05/16(金) 22:49:37
>>61
MSDNを読め。構造体と共用体を深く学べ。
ここでサンプルを与えてしまうのはためにならん。
実際、それほど難しくない。
戸惑うとしたら、Cの知識が十分ではない場合だけだ。

スキャンコードはMapVirtualKeyで取得できる。
0068デフォルトの名無しさん2008/05/16(金) 22:57:00
>>67
SendInputが宣言されてるヘッダ見た
→構造体とさらにunionが使われてるのを知る
→それらの値を設定
→キーストローク設定
→SendInput呼び出しでストローク実行

INPUT name[N];
SendInput(N, name, sizeof(name));

ありがと、なんとかなりそう
0069デフォルトの名無しさん2008/05/16(金) 23:11:32
すみません、ハード屋なのでベクタといってしまいます。
SetPixelですか。調べてみます。最低数千の長方形(内側色付き)をプロットすることになるのですが、
その遅さはネックにならないでしょうか。
正直遅いと聞いたら使う気にはなれませんが・・・。
0070デフォルトの名無しさん2008/05/16(金) 23:25:30
名無しには要件の詳細なんぞわからんのですよ
0071デフォルトの名無しさん2008/05/16(金) 23:28:51
だったら、メモリ上にDIB(聞いたことない言葉ならBMPのことだと思え)を
作ってそれを描画するって形にすればいい。
0072デフォルトの名無しさん2008/05/16(金) 23:45:48
仕事ならこんな所で聞くなよ
0073デフォルトの名無しさん2008/05/16(金) 23:57:47
こんなんやってみたけど無理だったorz 1/2

#include<stdio.h>
#include<windows.h>

#define NUMBER 2

int main(void)
{
int i;
MSG msg;
INPUT SendKey[NUMBER];

for(i=0;i<NUMBER;i++) {
SendKey[i].type = INPUT_KEYBOARD;
SendKey[i].ki.wVk = 'A';
SendKey[i].ki.wScan = MapVirtualKey('A', 0);
if(i == 0) {
SendKey[i].ki.dwFlags = 0;
}
else {
SendKey[i].ki.dwFlags = KEYEVENTF_KEYUP;
}
SendKey[i].ki.time = 0;
SendKey[i].ki.dwExtraInfo = 0;
}

RegisterHotKey(NULL,0,NULL,'B');
RegisterHotKey(NULL,1,NULL,'A');
while(0<GetMessage(&msg,NULL,0,0)) {
0074デフォルトの名無しさん2008/05/16(金) 23:58:36
2/2
switch(msg.message) {
case WM_HOTKEY:
switch(msg.wParam) {
case 0:
i=SendInput(NUMBER, SendKey,sizeof(SendKey));
printf("B %d\n",i);
break;
case 1:
puts("A");
i=1;
break;
}
break;
}
if(i==1) break;
}
UnregisterHotKey(NULL,0);
UnregisterHotKey(NULL,1);

return 0;
}

SendInputが0を返してしまう、なんで?
0075デフォルトの名無しさん2008/05/17(土) 00:07:13
ソース貼るな馬鹿
どこかにうpしろ
0076デフォルトの名無しさん2008/05/17(土) 00:13:05
じゃあテンプレにソース貼るなって入れろよ

なんであかんのかkwsk
0077デフォルトの名無しさん2008/05/17(土) 00:17:40
知らないならレスしないでください
0078デフォルトの名無しさん2008/05/17(土) 00:21:21
とりあえず変数の使い回しは止めようよ
バグが怖いから
0079デフォルトの名無しさん2008/05/17(土) 00:23:31
世の中にはソースコードを貼り付けられる、無料のWebアプリがたくさんあってだな。

dwFlagsにKEYEVENTF_SCANCODEを忘れている。
0080デフォルトの名無しさん2008/05/17(土) 00:27:10
貼るにしても最小コードにして貰いたいものだ
0081デフォルトの名無しさん2008/05/17(土) 00:30:43
そうすると、そこだけ張られても分からねえってなる予感。
話逸らしてすまんが。
0082デフォルトの名無しさん2008/05/17(土) 00:38:37
回答以外のレスは不要です
0083デフォルトの名無しさん2008/05/17(土) 00:57:35
>>74
puts("A");
↑
なにこの顔、ふざけてるの!?
0084デフォルトの名無しさん2008/05/17(土) 01:03:12
>>83
ちょwww
0085デフォルトの名無しさん2008/05/17(土) 01:18:35
>>83
不覚にもワロスwwwwwwwwwwwwwwwww
0086デフォルトの名無しさん2008/05/17(土) 02:44:45
while('A') { }
0087742008/05/17(土) 02:55:03
>>75
ごめん次から気をつける

>>78
わかった、この場合は大丈夫と思って

>>79
ありがとう

>>80,81
悩んだ
0088デフォルトの名無しさん2008/05/17(土) 03:16:08
'A'
'c'
'o'
'-'

こういうのが顔文字に見えないようなフォント誰か教えてくれ
0089デフォルトの名無しさん2008/05/17(土) 04:05:01
いっそのこと歌舞伎にしか見えないフォントとか
0090デフォルトの名無しさん2008/05/17(土) 04:06:34
馬鹿にしか見えない文字?
0091デフォルトの名無しさん2008/05/17(土) 07:20:14
ボタンとかリストビューとかのコントロールで、
Set/GetWindowLongPtr を使って GWLP_USERDATA をいじってよいのでしょうか?

MSDNには一応
「This data is intended for use by the application that created the window.」
と書いてあるのですが、WM_USERと同じで使っちゃいかんと言う人もいるみたいで……
0092デフォルトの名無しさん2008/05/17(土) 07:36:55
気になるならSetProp/GetPropを使えばいい
サブクラスならSetWindowSubclassが安全
0093912008/05/17(土) 11:43:21
>>92
ありがとうございます
SetPropを使ってみます
0094デフォルトの名無しさん2008/05/17(土) 16:56:51
SendInput使ってコマンド登録してもオンラインゲームでは発動しなかったorz
0095デフォルトの名無しさん2008/05/17(土) 17:02:25
だまれ
0096デフォルトの名無しさん2008/05/17(土) 17:15:26
だからSendInputなんて使わないでSendMessage使えよって話
0097デフォルトの名無しさん2008/05/17(土) 17:23:47
>>96
ありがと 次それやってみる
0098デフォルトの名無しさん2008/05/17(土) 17:36:28
結局BOTかよ芯でこい
0099942008/05/17(土) 18:11:43
別にいいんじゃね?「使う事」より「作る過程」の方が
楽しいと思えるならBOTでもなんでもいいと思うんだがな。(勉強という意味で)
実際俺がそうだったわけだしフック、APIフック、逆汗は
そういった「目的」があったからこそ覚えたわけで。


まあ、全てが俺みたいな考え方してるわけじゃないし、
やる上でどう感じるかは人それぞれか。
0100デフォルトの名無しさん2008/05/17(土) 18:14:49
明確にBOTだと言い切ってしまうとローカルルールに触れるかもしれない。

ま、俺はどうでもいいがね。
0101デフォルトの名無しさん2008/05/17(土) 18:16:15
>>99
アンカミス?
0102962008/05/17(土) 18:24:05
>>101
ミスってた

94×
96○
0103デフォルトの名無しさん2008/05/17(土) 19:43:46
オンラインゲームではなぜ反応しないのか
どうやれあ反応するのか

これに興味持ったからやってるだけだよ

JoyToKey+PPJoyじゃないとうまく動作しないのも関係あるんかな
0104デフォルトの名無しさん2008/05/17(土) 19:44:59
>どうやれあ ×
>どうやれば ○
ホットキーしてたかB認識しなかった
0105デフォルトの名無しさん2008/05/17(土) 19:48:02
俺なら例え知ってても教えないわ
0106デフォルトの名無しさん2008/05/17(土) 19:54:20
たまに独り言言うウザイ奴沸くけどスレに貼りついてるんか?
当事者以外にも不快感与えるから独り言は書き込むなよ
精神年齢幼いの曝け出してるようなもんだぞ
0107デフォルトの名無しさん2008/05/17(土) 19:58:01
うわ、あのキ●ガイが質問してたのか
0108デフォルトの名無しさん2008/05/17(土) 20:09:05
>>86
それ今度から使うわw
0109デフォルトの名無しさん2008/05/17(土) 21:30:23
>>106
それが独り言
0110デフォルトの名無しさん2008/05/17(土) 22:34:32
>>106は独り言ではない
>>109が独り言
0111デフォルトの名無しさん2008/05/17(土) 22:36:21
>>110
という独り言ですね。 わかります。
0112デフォルトの名無しさん2008/05/17(土) 22:37:12
ここまで俺の独り言
0113デフォルトの名無しさん2008/05/17(土) 22:45:46
指定したウィンドウを不可視状態にする(最小化ではなく、タスクバーからも消える)関数って作れますか?
0114デフォルトの名無しさん2008/05/17(土) 22:47:17
>>113
簡単に出来るよ。
0115デフォルトの名無しさん2008/05/17(土) 22:48:16
とりあえずこれでも実行してストレス溜めろ

while('A'){
BlocInput(TRUE);
Sleep(500);
BlocInput(FALSE);
Sleep(500);
}
0116デフォルトの名無しさん2008/05/17(土) 22:59:33
>>113
MSがだいぶ前にそれ作ってるよ
0117デフォルトの名無しさん2008/05/17(土) 23:08:07
>>113
ShowWindow(hwnd, SW_HIDE);

>>115
BlocInput(笑)
0118デフォルトの名無しさん2008/05/17(土) 23:59:20
BlocInputは引数に笑も取れるのか
0119デフォルトの名無しさん2008/05/18(日) 00:04:33
>>109-111
ワロスwwwwwwwwwwwwwwwwwwwwwwwww
0120デフォルトの名無しさん2008/05/18(日) 00:10:44
お前らそんなしょうもない事してる暇あるなら
社会に貢献するようなソース書けよ
0121デフォルトの名無しさん2008/05/18(日) 00:30:18
>>120
ExitWindowsEx(EWX_SHUTDOWN, 0);

実行すると自動でPCをシャットダウンしCO2削減に貢献
(SeShutdownPrivilegeの取得等は省略)
0122デフォルトの名無しさん2008/05/18(日) 01:01:58
指定されたフォルダ内のファイルが作成、削除、更新されたら
そのファイルの名称等を知りたい。
検索してみたところ、ReadDirectoryChangesW() や
SHChangeNotifyRegisterあたりを使えば良さそうな感じ。
winXP+vb6.0でもいけるだろうか?
0123デフォルトの名無しさん2008/05/18(日) 01:38:25
ためしてみればわかるだろうか?
0124デフォルトの名無しさん2008/05/18(日) 01:58:06
ためしていただけないだろうか?
0125デフォルトの名無しさん2008/05/18(日) 02:41:22
( ゚ω゚ ) お断りします
0126デフォルトの名無しさん2008/05/18(日) 04:24:08
>>120
TerminateThread( http://pc11.2ch.net/test/read.cgi/tech/1210775622/ );
0127デフォルトの名無しさん2008/05/18(日) 04:40:24
>>126
コンパイルエラー: 引数が足りません
0128デフォルトの名無しさん2008/05/18(日) 11:34:43
おまいら好きだwwwwwwwwwwwwwwwww
0129デフォルトの名無しさん2008/05/18(日) 13:50:13
VIP臭いんだけど
0130デフォルトの名無しさん2008/05/18(日) 13:53:22
お前がな
0131デフォルトの名無しさん2008/05/18(日) 14:50:29
ふうん
0132デフォルトの名無しさん2008/05/18(日) 17:24:37
AbornThread( "pc11.2ch.net", "tech", "1210775622.dat" );
0133デフォルトの名無しさん2008/05/18(日) 18:57:10
タスクバーとスタートメニューのプロパティってどうやれば開ける?
コンパネからショートカット引っ張り出して.lnkアクセスするしかない?
0134デフォルトの名無しさん2008/05/18(日) 19:05:51
すみませんDCOMについて質問させてください。

リモートPCのCOMを呼び出す簡単なコードを作成したんですが、
思ったように動いてくれませんでした。

CoCreateInstanceEx()にリモートPCのIPを渡してやるんですが
この関数から戻ってくるのに時間がかかって失敗します。
ためしにローカルのIPを渡してやると成功するんですが。

以下にソースを記載します。
どこかおかしなところがないか教えていただけないでしょうか。

::CoInitialize(NULL);

COSERVERINFO serverInfo = { 0, "192.168.1.2", NULL, 0 };
MULTI_QI qi = { &__uuidof(ITest), NULL, S_OK };

HRESULT hr = CoCreateInstanceEx(
__uuidof(Test),
NULL,
CLSCTX_REMOTE_SERVER,
&serverInfo,
1,
&qi);

ITestPtr p;
p.Attach(reinterpret_cast<ITest*>(qi.pItf));

p->func();

p = NULL;
::CoUninitialize();
0135デフォルトの名無しさん2008/05/18(日) 19:13:00
>>133
Shell32.Shell.TrayProperties
0136デフォルトの名無しさん2008/05/18(日) 19:34:42
>>134
サーバ側の用意ができていないんじゃね?
時間がかかって失敗といえば、たいてい接続のタイムアウトだし。
サーバ側のDCOM関連の設定を見直しだな。
0137デフォルトの名無しさん2008/05/18(日) 19:38:46
それじゃ使い方わからんと思うけど
0138デフォルトの名無しさん2008/05/18(日) 19:49:24
DCOM関連の設定というのがあるんですか。

そのあたりの詳しいやり方が説明されてるサイトとか知りませんか?
0139デフォルトの名無しさん2008/05/18(日) 20:12:11
dcomcnfg
0140デフォルトの名無しさん2008/05/18(日) 20:59:40
Vistaで追加されたBeginBufferedPaint等のAPIって何のために使うんでしょうか?
MSDNで探してもリファレンスは見つかるけど
これを使う目的やメリットがわからなくて・・・・
0141デフォルトの名無しさん2008/05/18(日) 21:03:32
>>133
START shell:::{0DF44EAA-FF21-4412-828E-260A8728E7F1}

0142デフォルトの名無しさん2008/05/18(日) 22:32:40
>>140
多分GDIがソフトウェアレンダラになったから、これまでみたいにGDIだけで同じ事をすると
XPより重くなるので専用のAPIを用意して誤魔化したのだと予想
0143デフォルトの名無しさん2008/05/18(日) 22:50:05
>>140
自動ダブルバッファリングみたいな感じ?
Vistaだとパフォーマンス上げるのに必須だから、楽に使えるAPIを用意した、ってところかな。
一通り目を通してみたが、Animation系は結構使えそうだ。
01441402008/05/18(日) 23:56:23
>>142,143
一応使ってみた感じだと画像がちらつかないのでダブルバッファリング用のAPIだと思うのだけど、
今までのようなメモリDCを使わずに、専用のAPIを用意した、という認識でいいのかどうかちょっと不安。
メモリDC使うのと大して手間はかからないような気がしないでもない。
Alpha値セット用のBufferedPaintSetAlphaとかも用意されてるみたいだけど。
こういう時に使うと便利!っていう説明が欲しいなぁ。
0145デフォルトの名無しさん2008/05/19(月) 00:01:15
>>143>>144
従来の方法(CreateCompatibleBitmapで作ったDDBに描画してからBitBltする)だと
XP以前のDDBは大抵VRAM上に確保されてVGAの恩恵を得られたが、Vistaではそうは行かなくなったので
その辺を解決する専用APIを用意したのじゃないかと
0146デフォルトの名無しさん2008/05/19(月) 13:35:23
>>145
なるほどね。

Animation系のも使ってみた。
アニメーションの前後のDCを一度のAPI呼び出しで取得できるんだ。
実際に描画してみたら軽いフェードアウト効果?みたいなぼわっとした残像も描画された。
VistaっぽいちゃぁVistaっぽいな。
0147デフォルトの名無しさん2008/05/19(月) 23:22:49
SetWindowsHookEx して注入したDLL内でCOMコンポーネントを使いたいのですが、
CoInitialize / CoUninitialize しても大丈夫なのでしょうか?
注入先のプロセス内ですでに呼ばれていたらまずそうな気がします。
0148デフォルトの名無しさん2008/05/19(月) 23:31:09
それらの関数は、上手くネストするように同じ回数だけ呼べば問題ない。

全く問題ないわけではないけど。
0149デフォルトの名無しさん2008/05/19(月) 23:36:03
ListViewで選択したリストが青くなってわかりやすくなるけどそのウィンドウがフォーカスを失うとき(Tab押下、windowsボタン押下など)灰色になるのですが、
これがフォーカスを失っても青のままにしたいのですがどのようにすればよいのでしょうか?
普通のWM_NOTIFYではフォーカスを失ったときブレークポイントにかからなくて、
WM_ACTIVATEではNMHDR構造体がなくてカスタムドローできません。
いい方法があったらご教授願います。
0150デフォルトの名無しさん2008/05/19(月) 23:58:14
別スレッドのキャレットを変更したいと思い

GetGUIThreadInfo(GetWindowThreadProcessId(NULL, &fwid), &gtinfo);
HideCaret(gtinfo.hwndCaret);
CreateCaret(gtinfo.hwndCaret, NULL, widht, height);
ShowCaret(gtinfo.hwndCaret);

とやってみましたが上手くいきません、
hwndCaretまでは取れいるようだし、
自プロセスであれば変更されます。

何が間違えているのか教えてください。
やはり、いくつかあるキャレット変更ソフトのように
DLLをフックさせなければ無利なのでしょうか?
0151デフォルトの名無しさん2008/05/20(火) 00:28:13
全然知らんから適当だが、
別スレッドのUIを操作するのは無理だと思う
0152デフォルトの名無しさん2008/05/20(火) 00:32:57
>>149
LVS_SHOWSELALWAYSスタイル付ければいいような気がする
0153デフォルトの名無しさん2008/05/20(火) 01:22:59
>>148
試したところ上手くいきました。ありがとうございます。

検証コード
#include <windows.h>
#include <msxml2.h>
#include <stdio.h>
#pragma comment(lib, "ole32")
#pragma comment(lib, "msxml2")
void examine() {
static int counter = 0;
IXMLDOMDocument* pv = NULL;
HRESULT hr = CoCreateInstance(CLSID_DOMDocument2, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument, (void**)&pv);
printf("%d : hr=%08lx\r\n", ++counter, hr);
if (SUCCEEDED(hr) && pv) { pv->Release(); }
}
void main () {
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoInitialize(NULL);
examine(); CoUninitialize();
examine(); CoUninitialize();
examine(); CoUninitialize();
examine();
}
0154デフォルトの名無しさん2008/05/20(火) 04:48:05
>>153
DllMainでCoInitializeを呼ばないように注意して書いた方がいいぞ
0155デフォルトの名無しさん2008/05/20(火) 20:02:02
>>152
それはすでにやっていて、フォーカスが外れても灰色にはなるのですが
その灰色になる時に青いままにしたいのですが無理でしょうか?
0156デフォルトの名無しさん2008/05/20(火) 20:08:52
できないことも無いけど、フォーカスが無いことをユーザーはどうやって知るの?
0157デフォルトの名無しさん2008/05/20(火) 20:17:54
教えてから訊いてやれよw
0158デフォルトの名無しさん2008/05/20(火) 21:32:45
>>151
そうなんですかね、
あきらめてフックしなきゃダメか。
0159デフォルトの名無しさん2008/05/20(火) 22:40:29
>153
それはアパートメントはどーなるんだ?
MTAとか混じってたら死亡でないのか?
0160デフォルトの名無しさん2008/05/20(火) 22:48:05
海外ドメイン規制で書き込めねー
>>51
やってみたんですがダメでした。成功したらまた来ます。
0161デフォルトの名無しさん2008/05/20(火) 23:02:34
>>159
エラーになってRPC_E_CHANGED_MODEが返ってくる。
http://msdn.microsoft.com/en-us/library/ms695279(VS.85).aspx
0162デフォルトの名無しさん2008/05/21(水) 09:34:44
BMPの描画でダブルバッファリングを行いたいのですが、
〔背景BMP+新BMP〕HDC hdcBmp = 背景BMP
HDC hdcBmp3 = CreateCompatibleDC(hdcBmp);
HBITMAP hBMP3 = CreateCompatibleBitmap(hdcBmp,300,300);
SelectObject(hdcBmp3,hBMP3);
BitBlt(hdcBmp3背景BMPの上に新BMPを描画);

case WM_PAINT:
BitBlt(GetDC(hWnd),hdcBmp3を描画);
背景BMPに新BMPをくっつけたものを描画したいのですが
背景BMPが黒で塗り潰されてしまいます。
┏━━━━━━━━━┓
┃背景BMP     ┃
┃┏━━━━━━━┓┃
┃┃新BMP ┃
0163デフォルトの名無しさん2008/05/21(水) 09:46:00
それでどうしたいんだ?
0164デフォルトの名無しさん2008/05/21(水) 09:48:55
背景BMPが黒になるのを防ぎたいです。
0165デフォルトの名無しさん2008/05/21(水) 09:53:39
>>162,164
その疑似コードだけ見ると、hdcBmp3に背景BMPを描画していないように
思えるが。

0166デフォルトの名無しさん2008/05/21(水) 09:58:47
>>165
BltBlt(hdcBMP3,背景BMP);
BltBlt(hdcBMP3,新BMP);
これで大丈夫でしょうか?
0167デフォルトの名無しさん2008/05/21(水) 10:50:26
>>162
CreateCompatibleBitmapにメモリDCを指定しては駄目。

あと
>case WM_PAINT:
>BitBlt(GetDC(hWnd),hdcBmp3を描画);
これは駄目だろ
0168デフォルトの名無しさん2008/05/21(水) 10:57:03
>>167
CreateCompatibleBitmapには何を指定すればよいのでしょうか?
0169デフォルトの名無しさん2008/05/21(水) 12:25:51
GetDC()あるいはCreateDC("DISPLAY")の結果あたりを渡すのが吉
0170デフォルトの名無しさん2008/05/21(水) 12:30:01
描画用バッファは面倒だから全部DIBSectionでいいよもう
0171デフォルトの名無しさん2008/05/21(水) 12:39:18
>>162
突込みどころ満載のソースだな
まぁ頑張れw
0172デフォルトの名無しさん2008/05/21(水) 12:43:18
>>162
背景と前景を自前で合成して描画すればおk
0173デフォルトの名無しさん2008/05/21(水) 12:50:05
GDIはあと何年くらい使われるんだろう
0174デフォルトの名無しさん2008/05/21(水) 13:05:19
俺はwin32APIで作れなくなったら、ウィンドウズソフト開発から身を引く。引退。
MFCとかプログラミングじゃねーよ。あれ
0175デフォルトの名無しさん2008/05/21(水) 13:44:17
>>171
突っ込んで下さい。
0176デフォルトの名無しさん2008/05/21(水) 14:33:55
なんでやねん
0177デフォルトの名無しさん2008/05/21(水) 15:00:09
>>174
MFCなんて一皮剥けばバリバリWin32APIじゃないか
0178デフォルトの名無しさん2008/05/21(水) 17:22:34
>>177
プログラミングスタイルが受け付けない
TODO:ここにプログラム書いてね。みたいなのばかり。
しかも、いちいち用意されてる関数調べて、くっつけるだけ。
それで動かしてみて、動いてよかった。で終わり。
こんな状況でバグが出たら、生き地獄だ。
0179デフォルトの名無しさん2008/05/21(水) 17:27:43
はあ?
0180デフォルトの名無しさん2008/05/21(水) 17:33:16
用意されてる関数しらべてくっつけるだけってそれ以外のぷりぐらみんぐおれしらねー
0181デフォルトの名無しさん2008/05/21(水) 17:39:51
>>178
Win32APIの勉強始めた頃は俺もそう思ってた。
今じゃGUIライブラリ無しで作る気起きませんサーセン
0182デフォルトの名無しさん2008/05/21(水) 18:01:25
>>172
HDC hdc, hdcBmp[1], hBack[1];
HBITMAP hBmp[1];
BITMAP bm;
hdc = GetDC(hWnd);
hdcBmp[0] = CreateCompatibleDC(hdc); //背景BMP
hdcBmp[1] = CreateCompatibleDC(hdc); //新BMP
hBack[0] = CreateCompatibleDC(hdc); //合成BMP
hBmp[0] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP1),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
hBmp[1] = (HBITMAP)LoadImage(hInst,MAKEINTRESOURCE(IDB_BITMAP2),IMAGE_BITMAP,0,0,LR_DEFAULTCOLOR);
SelectObject(hdcBmp[0],hBmp[0]);
SelectObject(hdcBmp[1],hBmp[1]);
// バックBMP
hBack[0] = hdcBmp[0];
BitBlt(hBack[0],0,20,bm.bmWidth,40,hdcBmp[1],0,20,SRCCOPY);
ReleaseDC(hWnd,hdc);
case WM_=PAINT:
BitBlt(hdc,0,100,bm.bmWidth,bm.bmHeight,hBack[0],0,0,SRCCOPY);
hdcBmp[0]とhdcBmp[1]に背景と新BMPを読み込み、背景と新BMPを合成したものをhBack[0]に読み込む。
そしてWM_PAINT時に合成した画像を描画する。という事ですか?
0183デフォルトの名無しさん2008/05/21(水) 18:15:46
標準関数も用意されてる関数だよなって突っ込みはなし
0184デフォルトの名無しさん2008/05/21(水) 19:16:48
 5月14日に民主党の円より子参議院議員から、ある嘆願が提出されました。内容は、「美少女
アダルトアニメやゲームを規制すべき」というものです。もしもこれらが規制されてしまうことに
なれば、全国のモテない童貞男子諸君にとって大打撃です。

 この嘆願が提出された理由ですが、ちょっとひどい。

  街中に氾濫(はんらん)している美少女アダルトアニメ雑誌やゲームは、小学生の少女を
  イメージしているものが多く、このようなゲームに誘われた青少年の多くは知らず知らず
  のうちに心を破壊され、人間性を失っており、既に幼い少女が連れ去られ殺害される事件
  が起きている。これらにより、幼い少女たちを危険に晒(さら)す社会をつくり出していること
  は明らかで、表現の自由以前の問題である。社会倫理を持ち合わせていない企業利潤追
  求のみのために、幼い少女を危険に晒している商品を規制するため、罰則を伴った法律
  の制定を急ぐ必要がある。

  ついては、美少女アダルトアニメ雑誌及び、美少女アダルトアニメシミュレーションゲーム
  製造及び販売規制の罰則を伴った法律を制定されたい。

 物凄く分かり易く要約すると、「エロゲーをする奴は心が壊れていて人間じゃないから幼女を
強姦する。だからエロゲーを規制しろ」ということになります。ええと、円議員あなたの血は何色
ですか?

 だいいち嘆願理由にしても私から言わせて貰えば、「ゲームをしているうちに心が破壊される」
のではなく、「現実世界で心が破壊されたからゲームに逃げた」のです。よくよく考えれば普通の
人は分かるはずです。あれはタダの絵だ、と。

 この「美少女アダルトアニメ雑誌及び美少女アダルトアニメシミュレーションゲームの製造・販
売を規制する法律の制定に関する請願」に賛同している議員は、円より子参議院議員のほかに
は、同じく民主党の下田敦子参議院議員がいます(5月21日現在)。増えないことを祈るばかりです。

http://digimaga.net/200805/adult-game-user-is-not-human.html
0185デフォルトの名無しさん2008/05/21(水) 20:09:47
>>182
まずは分かりやすい変数名を付ける事から学べ
0186デフォルトの名無しさん2008/05/21(水) 20:19:12
>>185
すみませんでした。
背景用変数 = 背景BMP;
貼付けるBMP用変数 = 新BMP;
上部二つの合成用変数 = 合成したBMP(背景BMP+新BMP);
BitBlt(上部二つの合成用変数);
0187デフォルトの名無しさん2008/05/21(水) 20:46:35
>>186
まずは分かりやすい変数名を付ける事から学べ
0188デフォルトの名無しさん2008/05/21(水) 20:50:50
>>187
>>186では不満ですか?
0189デフォルトの名無しさん2008/05/21(水) 20:55:16
>>188
お前はプログラマに向いていない
転職をおすすめする
0190デフォルトの名無しさん2008/05/21(水) 21:03:26
仕事でやってんならもう少しまともなコメントぐらいつけろよ
そのゴミソース引き継いだ奴はめちゃくちゃ苦労するんだよボケがw
0191デフォルトの名無しさん2008/05/21(水) 21:05:56
>>182
WM_PAINTがきたときに背景BMPと重ねるBMPを
自前で合成して一度のBiBlt呼び出しで描画するという意味。
それぞれのBMPはメモリ上にあるんでしょ?
とりあえずこれで動くものを作ってから原因とか考えながらゆっくりAPIの使いかた覚えればいいと思うよ。
0192デフォルトの名無しさん2008/05/21(水) 21:36:47
つい最近VC++2008ExpressEditionをいじり始めたものです。
テキストエディタまがいのものでもつくってみようと始めたはいいのですが、
GETOPENFILENAME 関数を使ってファイルを開くダイアログを作ろうとしたところ、
"OPENFILENAME構造体が定義されていない"
とエラーが出ます。
てっきり windows.h で定義されていると思っていたのですが、
これでないならなんのヘッダをインクルードすればいいのでしょうか?
0193デフォルトの名無しさん2008/05/21(水) 21:48:53
>>192
Declared in Commdlg.h, include Windows.h

てっか、WindowsSDK入れてる?
0194デフォルトの名無しさん2008/05/21(水) 22:00:45
>>192
WIN32_LEAN_AND_MEAN
0195デフォルトの名無しさん2008/05/21(水) 22:02:04
>>191
WM_CREATE等最初に合成したものを
WM_PAINT時に使うということですか?
0196デフォルトの名無しさん2008/05/21(水) 22:14:25
>>182
ソースが突込み所満載なんだがまさか釣りじゃないよな?
本気で書いたソースならC言語についてもやばいぞ
0197デフォルトの名無しさん2008/05/21(水) 22:20:08
>>196
早く突っ込んでくれ
01981922008/05/21(水) 22:22:28
>>194
自動で定義されていたそれをコメントアウトしたら解決しました。
ありがとうございます。
>>193さんもありがとうございました。
0199デフォルトの名無しさん2008/05/21(水) 22:27:37
>>197
なんでやねん
0200デフォルトの名無しさん2008/05/21(水) 22:39:34
>>197
じゃあケツ出せよ
0201デフォルトの名無しさん2008/05/21(水) 22:41:15
>>156
WM_ACTIVATEでフォーカスを失った時にブレークにはかかったのですが、
カスタムドローするのに必要なパラメータがなかったのでできませんでした。
オーナードローで頑張ればできるのでしょうか?
0202デフォルトの名無しさん2008/05/21(水) 22:52:33
聞きたいのですが、
BITMAPの合成はどうやればよいのですか?
0203デフォルトの名無しさん2008/05/21(水) 23:33:54
>>195
別にWM_CREATE時じゃなくていいよ。
ちらつきを抑えたいからダブルバッファしたいんだろうからBMPは常にメモリ上にあるという仮定で、
WM_CREATEがきたときに別途mallocでもnewでもいいからバッファを確保して
そのバッファに背景BMPと表示したいBMPを合成したものを作成。
それをBitBltやStretchDIBitsのような描画関数で表示。
0204デフォルトの名無しさん2008/05/22(木) 00:00:22
WindowsX.h にある
HANDLE_MSG() マクロを WM_COMMAND に対して使うとき、なんで return 0; になるんだ?

HANDLE_MSG() に渡すfn は void func(HWND...) でvoid型だし、HANDLE_MSG() 自体も

#define HANDLE_MSG(hwnd, message, fn) ¥
case message):return ((fn)(hwnd,...),0L)

でマクロ展開で「return 0;」が出てくる理由がよく解らん。

case message: return func(hwnd,...); //func() はvoid型

になるんじゃないの?
0205デフォルトの名無しさん2008/05/22(木) 00:10:42
カンマ演算子
return a, b;
returnされるのはbの値。
0206デフォルトの名無しさん2008/05/22(木) 06:15:18
メッセージクラッカって定義おかしくね?

WM_DRAWITEMとか、
> If an application processes this message, it should return TRUE.
って書かれてるのにvoidでreturn 0;されてるし
0207デフォルトの名無しさん2008/05/22(木) 06:17:56
さんくす>>205
カンマ演算子、か。K&Rの演算子の表の一番下に確かにそんなのあるな。いままで意識した事無かった

ありがと
0208デフォルトの名無しさん2008/05/22(木) 08:01:40
>>205
間違っています。
以上。
↓次の方どうぞ
0209デフォルトの名無しさん2008/05/22(木) 08:58:29
キモ
0210デフォルトの名無しさん2008/05/22(木) 09:05:15
キモ
0211デフォルトの名無しさん2008/05/22(木) 10:19:57
ゲーム作ってるんだけど、メモリ内のデータ書き換え防止する方法とかある?
外部アプリからメモリ内サーチして書き換えるやつ防止したい。助言よろ。
0212デフォルトの名無しさん2008/05/22(木) 10:34:36
PCの電源切れ
0213デフォルトの名無しさん2008/05/22(木) 11:03:18
>>211
オンラインゲームじゃないなら、改造対策は不要では?

俺もゲーム作ってるんだが、ブログで改造対策のこと書いたら、
「改造対策する時間があるなら、ゲームのボリュームを増やすこととか、
もっとまともなことに使って欲しい」ってコメントが多かったよ。
改造するかはユーザーの自由なんだし、ユーザーとしては当然のコメントだが。

あと、いまどきの改造は、プロセスメモリエディタ+ルートキットで
やるから、改造を防止するなら、ユーザーから非難されることを覚悟のうえで
ルートキットじみたことをするしかないでしょうね。
0214デフォルトの名無しさん2008/05/22(木) 12:37:49
VC++のリソースエディタでダイアログボックスが作れますが、
そのような外観の(ダイアログでない)ウィンドウを、
ウィンドウクラスで作ったウィンドウに、コントロールぺたぺた貼って作ろうと思ったら、
(CWndではなく、RegisterClassEx、CreateWindow使って)

・ウィンドウの背景色は何故かCOLOR_BTNSHADOWが(ダイアログと)等しい
・エディットボックスはCreateWindowExの第1引数にWS_EX_CLIENTEDGEにしないと立体の縁にならない
・フォントはWM_SETFONT使ってサイズを変更しないと文字がでかい
・そもそもデフォルトのフォントが当然MS shell dlgではないようで、よくわからない
 (ただ、画面のプロパティから、故意にダイアログとウィンドウのフォントを違うものにした覚えはない…)

実際CreateDialogマクロでダイアログが作られるとき、ここら辺の設定ってどうなっているのですか?
このマクロもCreateWindowExを使ってウィンドウを作ると書いてあるので、
同じようなことが再現できるのではと思ったのですが…

(CreateDialogがウィンドウの大きさを決めるとき、フォントを元に作ってあるのはわかったのですが…)
0215デフォルトの名無しさん2008/05/22(木) 13:05:33
Process Explorerで表示できるWindow Titleと同じものを取得したいと思っています。
どうもGetWindowTextで取得できるものとは別物らしく、
Process ExplorerでJuneブラウザのWindow Titleを見ると、
GetWindow〜で取得した名前とは違うものを表示しているのがわかります。

一体Process Explorerで表示できるWindow Titleとは何者か、
どうすれば取得できるのでしょうか?
0216デフォルトの名無しさん2008/05/22(木) 13:19:39
>>215
ttp://msdn.microsoft.com/en-us/library/ms633520.aspx
> GetWindowText cannot retrieve the text of a control in another application.
0217デフォルトの名無しさん2008/05/22(木) 13:34:18
使えないAPIなんですか。エディットコントロールじゃなければいいはず…ですよね。
そうするとWindow Titleってなんだろうという話になりまして、

たとえばJaneブラウザを表示したとき、以下のようになります。

・キャプションバー、およびProcessExplorer上WindowTile列の表示
 →”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”

・GetWindowText、およびタスクマネージャ上の表示
 →”Jane”

”Jane Doe Style 【プログラム】 - Win32API質問箱 Build66”の文字列を取得したいわけですが、
その方法はご存知でしょうか?
0218デフォルトの名無しさん2008/05/22(木) 13:44:31
Delphiアプリケーションには実は見えないアプリケーションウィンドウがあって・・・
0219デフォルトの名無しさん2008/05/22(木) 14:00:33
>>218
VBアプリもそんな感じだったな
だからタスクバーに表示しないプロパティなんてのがあるんだけど
0220デフォルトの名無しさん2008/05/22(木) 14:07:52
spy++ とか眺めてみるといいと思う
0221デフォルトの名無しさん2008/05/22(木) 14:14:12
あー…なんとなくイメージ掴めてきました
メインウィンドウに見えたのは子ウィンドウで、だから取得できなかったと。

子ウィンドウのウィンドウタイトルの取得とか、そのあたりを調べてみます。

ありがとうございます
0222デフォルトの名無しさん2008/05/22(木) 14:14:17
>>217
こんなんでいいのかな?
#include<windows.h>
#include<stdio.h>

int main(void){
char title_buf[256], *class_name="TMainWnd";
int title_len;
HWND hwnd;

hwnd=FindWindow(class_name, NULL);
if(hwnd==NULL){
printf("Window not found. class name [%s]\n", class_name);
return 1;
}

title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
if(title_len>=0) printf("%s\n", title_buf);

return 0;
}
0223デフォルトの名無しさん2008/05/22(木) 14:59:33
>>222
どうもです
実行結果とSpy++を併せて見て、おおよそ理解できました。

デルファイでもVBでもデフォルトのクラス名でウィンドウを検索したのち、
目的の名前を取得する事ができました

ありがとうございます
0224デフォルトの名無しさん2008/05/22(木) 15:05:00
WM_GETTEXTでいいのでは
0225デフォルトの名無しさん2008/05/22(木) 16:22:09
> title_len=GetWindowText(hwnd, title_buf, sizeof(title_buf)-1);
今時こんなソース書く奴はJavaか.NETで開発してろよと思う
0226デフォルトの名無しさん2008/05/22(木) 16:25:53
>>225
この場合同書くのがいいのかも示して欲しいです
0227デフォルトの名無しさん2008/05/22(木) 16:28:58
>>225
>>226に同意
どう書けばよいのでしょう?
TCHARの話でしょうか?
0228デフォルトの名無しさん2008/05/22(木) 16:29:51
TCHARじゃないとかARRAYSIZE, _countofを使えとかnullは考慮されてるから-1はいらないとか
あたりじゃない?
0229デフォルトの名無しさん2008/05/22(木) 16:54:54
grep で include 内を探したけど ARRAYSIZE と _countof とは無かった
(使用しているのは MinGW)
0230デフォルトの名無しさん2008/05/22(木) 16:59:28
>>229
ARRAY_SIZE と countof はあったの?
0231デフォルトの名無しさん2008/05/22(木) 17:01:22
>>230
無いです
0232デフォルトの名無しさん2008/05/22(木) 17:12:16
_countofはMFCで定義されていてVC2005ぐらいからCRTでも定義されてた気がする
SDKにはwinnt.hにRTL_NUMBER_OFがある

いずれにしろ>>222は人に教えられる立場で無いのは確か
0233デフォルトの名無しさん2008/05/22(木) 17:20:27
結局は、どう書くのが模範解答になるんでしょう?
0234デフォルトの名無しさん2008/05/22(木) 17:24:19
WinAPIはよく知らんのだが、GetWindowText()の戻り値ってエラーチェックくらいしか使い途ないのかな。
>222もエラーチェックにしか使ってないようだし、>228によればナルターミネートはしてくれているようだし。
つーか、溢れたかどうかは単純には判らないのね。
0235デフォルトの名無しさん2008/05/22(木) 17:27:19
>>222 は
if(title_len>=0) printf("%s\n", title_buf);
を
if(title_len>0) printf("%s\n", title_buf);
にしないとエラーチェックになってない
0236デフォルトの名無しさん2008/05/22(木) 18:18:19
>>234
GetWindowTextLengthで事前にバッファ長を調べておけば済むだろ
0237デフォルトの名無しさん2008/05/22(木) 18:27:58
GetGlyphIndices()という、文字列からグリフインデックスに変換するAPIがありますが、
この逆のことをするAPI、つまりグリフインデックスから文字列に変換する方法って解りますか?
0238デフォルトの名無しさん2008/05/22(木) 18:28:29
バッファ足りなくてもバッファサイズまでコピーする仕様なの?
そうだとしても戻り値にNULL文字は数えないって書いてあるから
指定サイズ==戻り値ならあふれてるのでは。
0239デフォルトの名無しさん2008/05/22(木) 18:31:24
>>238
馬鹿丸出し
0240デフォルトの名無しさん2008/05/22(木) 18:37:47
>>236
しかし長さを調べた直後には別のウィンドウタイトルに変わっているかもしれない
そのアプリケーションがどう振舞うか想定できない
0241デフォルトの名無しさん2008/05/22(木) 18:50:52
そんな事を気にするなら他プロセスのテキスト取得なんて考えないことだ

(そろそろフックネタ出す奴が現れる頃か)
0242デフォルトの名無しさん2008/05/22(木) 18:50:58
仮にバッファ長が100だったとして、GetWindowTextLength()が99を返した後GetWindowText()が99を返しても、
その間にタイトルが書き換わっていたら溢れたかどうかは判らないのね。
0243デフォルトの名無しさん2008/05/22(木) 19:10:58
>>240>>242
必要十分なサイズのバッファを渡せば溢れる可能性は無くなる。

LPTSTR buffer = (LPTSTR)malloc(sizeof(TCHAR) * 0x7fffffff);
if (buffer == NULL) {
  MessageBox(NULL, _T("この環境では使用できません"), _T("メモリ買いましょう"), 0);
  exit(-1);
}
GetWindowText(hwnd, buffer, 0x7fffffff);
0244デフォルトの名無しさん2008/05/22(木) 20:36:32
32bit環境だと/3GBスイッチ使っても厳しそうだ。
VirtualAllocのMEM_RESERVEでアドレスだけ確保して、
SEHで動的にメモリを割り当てるのが現実解だな。
0245デフォルトの名無しさん2008/05/22(木) 20:59:09
ヒント:APIフック
0246デフォルトの名無しさん2008/05/22(木) 21:19:35
>>245
ヒント:お前は馬鹿
0247デフォルトの名無しさん2008/05/22(木) 21:23:10
たまにはブローとかアッパーとかさぁ
0248デフォルトの名無しさん2008/05/22(木) 21:34:08
まずはジャブから
0249デフォルトの名無しさん2008/05/22(木) 21:51:37
このスレの質が低下したのは、優秀な人は.NETに移ったからかもな。
0250デフォルトの名無しさん2008/05/22(木) 21:58:09
正解
0251デフォルトの名無しさん2008/05/22(木) 22:06:48
今頃気付いたのか
0252デフォルトの名無しさん2008/05/22(木) 22:25:19
Advanced Windowsの著者だって.NETの本を書くこんな世の中じゃ
0253デフォルトの名無しさん2008/05/22(木) 23:38:50
poizun
0254デフォルトの名無しさん2008/05/22(木) 23:47:16
poison
0255デフォルトの名無しさん2008/05/22(木) 23:49:58
prison
0256デフォルトの名無しさん2008/05/22(木) 23:57:59
ぬるぽ
0257デフォルトの名無しさん2008/05/23(金) 00:07:37
ga
0258デフォルトの名無しさん2008/05/23(金) 00:35:25
てか、sizeof(title_buf)-1を最後の引数に指定してるから、
溢れる可能性など皆無だが?
溢れるとかなに言ってるんだ?
0259デフォルトの名無しさん2008/05/23(金) 00:47:09
↑理解していない何か
0260デフォルトの名無しさん2008/05/23(金) 06:45:56
↑話を理解している天才
0261デフォルトの名無しさん2008/05/23(金) 10:20:45
↑流れを読む天才
0262デフォルトの名無しさん2008/05/23(金) 10:22:11
↓通常の流れに戻すという偉業を成し遂げた天才
0263デフォルトの名無しさん2008/05/23(金) 10:30:46
#include<stdio.h>
#include<windows.h>

int main(void)
{
/**/MSG msg;

/**/while(0 < GetMessage(&msg,NULL,0,0)){
/******/switch(msg.message){
/**********/case WM_KEYDOWN:
/**************/puts("keydown");
/**************/break;
/******/}
/**/}
/**/return 0;
}

これで何かkey押してもダメなんだけどどうすればいい?
0264デフォルトの名無しさん2008/05/23(金) 11:01:41
ウィンドウが無いじゃんか
0265デフォルトの名無しさん2008/05/23(金) 11:06:59
コンソールに表示させたいん
0266デフォルトの名無しさん2008/05/23(金) 11:52:02
な ん で ( ´∀` ) や ね ん !
0267デフォルトの名無しさん2008/05/23(金) 12:31:48
プロシージャならメッセきたら処理するけど
コンソールの場合はどうやるのか気になって
0268デフォルトの名無しさん2008/05/23(金) 13:12:02
CreateWindowでスタティックテキストを作りました。
テキストの背景色を透過したいんだけど、いい方法ありませんか?

hStatic = CreateWindowEx(0, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);
0269デフォルトの名無しさん2008/05/23(金) 13:20:55
WS_EX_TRANSPARENTじゃダメ?
02702682008/05/23(金) 13:31:00
>>269
ダメでした。。
レバーコントロールに入れたツールバーにスタティックテキスト置いてます。

hStatic = CreateWindowEx(WS_EX_TRANSPARENT, "STATIC", cString, WS_VISIBLE | WS_CHILD | SS_SIMPLE,
X, Y, Width, Height, hWnd, (HMENU)Static, (HINSTANCE)hInst, NULL);
0271デフォルトの名無しさん2008/05/23(金) 13:39:40
ツールバー、もしくはメニューの背景にブラシを使う事は出来ますか?
0272デフォルトの名無しさん2008/05/23(金) 13:40:07
WM_CTLCOLORSTATICでNULL_BRUSHを返す
0273デフォルトの名無しさん2008/05/23(金) 14:12:15
あるプロセスが、自分を起動したプロセス(親プロセス)を知る方法はありますか。
0274デフォルトの名無しさん2008/05/23(金) 14:20:00
ある
0275デフォルトの名無しさん2008/05/23(金) 14:21:19
レバーじゃなくてリバーだと思う
0276デフォルトの名無しさん2008/05/23(金) 14:23:18
"レバーコントロール" の検索結果 約 1,270 件中 1 - 10 件目 (0.13 秒)
"リバーコントロール" の検索結果 約 185 件中 1 - 10 件目 (0.13 秒)
0277デフォルトの名無しさん2008/05/23(金) 14:27:41
>>276
それ「レバー」「コントロール」別単語として検索した結果だから
0278デフォルトの名無しさん2008/05/23(金) 14:27:45
どっちもすくな!
0279デフォルトの名無しさん2008/05/23(金) 14:28:42
リバーコントロールでググると

もしかして: レバーコントロール
と出るなw
02802682008/05/23(金) 14:28:43
>>272
どうも。WM_CTLCOLORSTATICメッセージ勉強してみます。
0281デフォルトの名無しさん2008/05/23(金) 14:41:49
>>277
馬鹿
0282デフォルトの名無しさん2008/05/23(金) 15:02:53
レバー ReBar に一致する日本語のページ 約 268 件中 1 - 30 件目 (0.03 秒)
リバー ReBar に一致する日本語のページ 約 277 件中 1 - 30 件目 (0.24 秒)
0283デフォルトの名無しさん2008/05/23(金) 15:28:05
rebarの発音はrí:bà:rだからリバーと読む方が実際の発音に近い
つまりレバーと読みたいならパーチーとかボデーとか言ってろってこった
0284デフォルトの名無しさん2008/05/23(金) 15:33:15
↑アホ
0285デフォルトの名無しさん2008/05/23(金) 15:35:16
↑話を理解してない馬鹿
0286デフォルトの名無しさん2008/05/23(金) 15:36:33
ReBarをレバーっていうのは斬新だなw
0287デフォルトの名無しさん2008/05/23(金) 15:39:09
↑馬鹿
0288デフォルトの名無しさん2008/05/23(金) 15:40:32
>>281=>>284=>>287=大馬鹿
0289デフォルトの名無しさん2008/05/23(金) 15:41:46
↑はずれ
0290デフォルトの名無しさん2008/05/23(金) 15:43:10
>>281,>>284,>>287∈大馬鹿
という意味だろ

さすが大馬鹿
0291デフォルトの名無しさん2008/05/23(金) 15:45:37
レバーという表現は日本語としても定着してるんだからいんじゃね?
0292デフォルトの名無しさん2008/05/23(金) 15:49:00
>>290
はずれ
0293デフォルトの名無しさん2008/05/23(金) 15:51:19
意味が通じるなら、それでおk。
0294デフォルトの名無しさん2008/05/23(金) 15:59:11
>>291
定着していません。
ほとんどの日本人はレバーと聞くと肝臓の事だと認識します。
0295デフォルトの名無しさん2008/05/23(金) 16:05:50
取っ手(lever)と認識する人も居るよ
0296デフォルトの名無しさん2008/05/23(金) 16:09:36
ReをReTryとかのReって解釈する人もいる
0297デフォルトの名無しさん2008/05/23(金) 16:11:51
Win API ReBar レバー 11件
Win API ReBar リバー 100件

Yahoo
0298デフォルトの名無しさん2008/05/23(金) 16:13:41
↑全角数字馬鹿
0299デフォルトの名無しさん2008/05/23(金) 16:17:03
>>296
語源的には同じ
0300デフォルトの名無しさん2008/05/23(金) 16:17:51
うーん、、、全角数字の時点で言い訳できないな
0301デフォルトの名無しさん2008/05/23(金) 16:19:22
ほとんどの日本人はリバーと聞くと川の事だと認識します。
0302デフォルトの名無しさん2008/05/23(金) 16:23:40
ReBarって書けばいいんだよ
カタカナ読みに拘ると面倒事になるだけだ
0303デフォルトの名無しさん2008/05/23(金) 16:27:03
このスレで「リバー」だとriverよりはrebarだろう。
このスレで「レバー」だとliverやleverよりは「rebarのことなんだろうなぁ」だろう。
0304デフォルトの名無しさん2008/05/23(金) 16:27:55
↑話を理解してない馬鹿
0305デフォルトの名無しさん2008/05/23(金) 16:35:18
え?あれ取っ手付いてるからレバーなんだと思ってたよ
別モノだったのかw
0306デフォルトの名無しさん2008/05/23(金) 16:44:39
http://msdn.microsoft.com/ja-jp/library/cc399282.aspx
では一応「リバー コントロール」でも他のページに見当たらない
0307デフォルトの名無しさん2008/05/23(金) 16:44:40
BitBltやStretchBltで表示した画像が解像度を変更すると消えてしまい困っています。
WM_DISPLAYCHANGEでWM_PAINTを投げたりInvalidateRectを投げたりしましたが再描画されません。
SW_MINIMIZEとSW_NORMALを立て続けに投げる方法は表示される時とされない時があり駄目なようです。
どうすれば解像度変更直後にきちんと再描画出来るようになるのでしょうか。
0308デフォルトの名無しさん2008/05/23(金) 16:52:59
おっ!質問きたぞ
雑談はこれまでだ
0309デフォルトの名無しさん2008/05/23(金) 16:55:21
>>307
WM_PAINTで描画してるんだよな?
再描画されないことは無いと思うが、いったいどうやってんの?
再描画されないとは具体的にどうなんのの?
>WM_PAINTを投げたり
まあこれ見て怪しいのはわかるが。
0310デフォルトの名無しさん2008/05/23(金) 17:01:56
InvalidateRectの後にUpdateWindow呼んでる?
03113092008/05/23(金) 17:02:18
一応書いておくけど
WM_PAINTを投げたくなったら、
InvalidateRect → UpdateWindow のコンボで。

InvalidateRect自体は投げてるみたいだから、この場合は解決策じゃないけど。
0312デフォルトの名無しさん2008/05/23(金) 17:10:39
>>311
RedrawWindowにRDW_UPDATENOWを指定すればいい
0313デフォルトの名無しさん2008/05/23(金) 17:17:34
なんちゃってAI作った人いる?
0314デフォルトの名無しさん2008/05/23(金) 17:21:43
>>313
const char* msg[] = {
"↑話を理解してない馬鹿",
"知らないならレスしないでください",
"それぐらい察してほしかったってのが本音"
};
for(;;) post2ch(msg[rand()%3]);
0315デフォルトの名無しさん2008/05/23(金) 17:32:59
>>313
スレタイ
03163072008/05/23(金) 18:17:10
InvalidateRect(hWnd, NULL, FALSE);
UpdateWindow(hWnd);
RedrawWindow(hWnd, NULL, NULL, RDW_UPDATENOW);
これらを投げても駄目でした。

画像のみを表示するソースはウィンドウを透過すれば(SetLayeredWindowAttributes)特に何もしなくても表示されました。
透過しないとやはり何も表示されません。

CreateWindowExでボタン、ステータスバー、ツールチップを追加している問題のソースではこれらコントロールは再描画されるのに画像が表示される場所はまるで非表示にしたかのように背景色のみになっています。
もう訳が分からないですo...rz。

もしかしたらウィンドウプロシージャの書き方に問題があるのかも知れませんが、以下の各caseのbreak;をreturn 0;に書き換えると何故かウィンドウの挙動も表示もおかしくなり、CPU使用率も100%になってしまいます。
因みに今回の場合はreturn 0;に書き換えても症状は改善しません。

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch (msg)
{
(中略)
case WM_PAINT:
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
break;
(中略)
}
return DefWindowProc(hWnd, msg, wp, lp);
}
0317デフォルトの名無しさん2008/05/23(金) 18:25:29
>>316
・・・BeginPaintとEndPaintは・・?
hDCはどこからきたの?
0318デフォルトの名無しさん2008/05/23(金) 18:28:02
やはり怪しかったのね
0319デフォルトの名無しさん2008/05/23(金) 18:34:01
>>317が正解だな
的を射ている
0320デフォルトの名無しさん2008/05/23(金) 18:44:10
WM_PAINTでBegin/EndPaint忘れって上にもあるし前スレにもあったな
いったい何を見て勉強してるんだ?
0321デフォルトの名無しさん2008/05/23(金) 18:45:07
猫だろ。どうせ。
0322デフォルトの名無しさん2008/05/23(金) 19:04:37
犬希望
0323デフォルトの名無しさん2008/05/23(金) 19:18:07
WM_PAINTワンBeginPaintワンワン
0324デフォルトの名無しさん2008/05/23(金) 19:19:40
MFC使えとまでは言わないけど、コンストラクタ・デストラクタでBegin/EndPaintをラップした
クラス程度は作っておくと便利よ。
0325デフォルトの名無しさん2008/05/23(金) 19:27:38
それならOnPaintをオーバーライドするだけで描画できるクラスを作った方が遥かに便利
0326デフォルトの名無しさん2008/05/23(金) 19:30:54
CpaintDC と OnDraw ですね
0327デフォルトの名無しさん2008/05/23(金) 19:33:07
つうか今時MFCやWTLを使わずに素のWin32SDKでアプリ作る奴なんているの?
死ぬほど面倒じゃん
03283162008/05/23(金) 19:39:21
static PAINTSTRUCT ps;
(中略)
BeginPaint(hWnd, &ps);
SetStretchBltMode(hDC, STRETCH_DELETESCANS);
StretchBlt(hDC, 10, 10, 256, 192, hCompatDC, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
EndPaint(hWnd, &ps);
return 0;

にしたら正常に表示されました。本当にありがとうございました。
一見正常に動いていたのはDefWindowProcに処理を回していたからなんですね。

因みに参考にしたサイトはこちらです。

Programing Place
ttp://www.geocities.jp/ky_webid/index.html

>>324-327
VC++2008EEでC及びC++の勉強中です。
まだC++はまともに使えないのでクラスの使い方も(VB.NETやC#はともかく)分かりません。
今後の課題としてクラスの勉強を始めようと思います。
0329デフォルトの名無しさん2008/05/23(金) 19:43:13
そのサイトにも、
>描画の処理を行うとき、必ずBeginPaint()とEndPaint()を使って、描画処理を挟み込む形を取っていましたが、これは必ずそうしなければなりません。
って書いてるじゃん
0330デフォルトの名無しさん2008/05/23(金) 19:44:22
>>328
そこ、前スレにもトンデモサイトとして出てたよ
特にこれ
ttp://www.geocities.jp/ky_webid/win32c/022.html


以下を次スレからテンプレ化キボン

●参考すべきでない所
Programing Place
ttp://www.geocities.jp/ky_webid/index.html
0331デフォルトの名無しさん2008/05/23(金) 19:44:23
>>328
志村!足りない!足りない!
0332デフォルトの名無しさん2008/05/23(金) 19:45:32
と思ったら、BitBltのあたりでいきなりはしょってるなw
0333デフォルトの名無しさん2008/05/23(金) 19:46:42
"Programing"の時点で糞確定だけどな
0334デフォルトの名無しさん2008/05/23(金) 19:47:04
>>328
hDCはBeginpaintの戻り値かps.hdc 使う
0335デフォルトの名無しさん2008/05/24(土) 06:15:24
本当の所、BeginPaintを必ず使わなければいけないという決まりはない。
ただ、これ一回の呼び出しで行われる処理内容を考慮すると、使わない理由が無いな。
0336デフォルトの名無しさん2008/05/24(土) 07:17:06
>>330
それよりお勧めサイト書いてくれたほうがうれしい
0337デフォルトの名無しさん2008/05/24(土) 07:52:52
>>336
英語版MSDN
0338デフォルトの名無しさん2008/05/24(土) 10:56:51
調べても分からなかったので質問させてください
CreateMenuでよくアプリケーション上部にあるFile(F)とか表示(V)のようなメニュー作成しています。
メインウィンドウのサイズを変更したとき、Menuのサイズを変更しないようにしたいです。
メニューの横幅固定で。この場合、メニューサイズを固定するAPIか、メニューの構造体に横幅指定することができるとか
方法がありましたら、ご教示ください。よろしくおねがいします。

環境はVC + SDKです。
0339デフォルトの名無しさん2008/05/24(土) 10:58:48
無理
0340デフォルトの名無しさん2008/05/24(土) 11:35:06
ツールバーで代用するとか
苦労の割に見返りがサイズ固定だけって泣けるけど
0341デフォルトの名無しさん2008/05/24(土) 11:44:03
標準と違う動きをするアプリって違和感があるよね。
03423382008/05/24(土) 11:48:09
単刀直入に言うと、ウィンドウサイズ変更時にメニューのちらつきをなくしたいです。
勉強中なので間違ってるかもしれないですが、CreateMenuで作成してもWNDCLASSEXで
wc.lpszMenuName=MAKEINTRESOURCE( IDR_MENU);登録にしても、
結局はメインウィンドウの再描画に巻き込まれる形になるので、ちらつきます。
Janeとかのメニューはどうやって実現してるのかなぁ。。
03433382008/05/24(土) 12:54:04
もうちょっと考えて見ます
お騒がせしました。
0344デフォルトの名無しさん2008/05/24(土) 12:57:53
>>341
IEのメニューはツールバーで出来てるが
コマンドバーって呼ばれてる

WTLにCCommandBarCtrlってクラスがあるけどこれはバグが多すぎてあまり使えない
0345デフォルトの名無しさん2008/05/24(土) 14:20:04
>>344
CCommandBarCtrlのバグって例えばどんな?
0346デフォルトの名無しさん2008/05/24(土) 15:09:32
>>345
とりあえず致命的なのを2点ほど

メニューをクリックするとCommandBarにフォーカスを持って行かれる
→フォーカスを元に状態設定を行っていると正常に機能しなくなる

IEのようなReBar上で右クリックメニューを出すようなのを作っていると
メニューが出ているときにメニュー項目上で右クリックすると落ちることがある
→DoTrackPopupMenuに再入してしまうのが原因なので適当にフラグ立てて回避するしかない


Donut系ブラウザはこの辺のバグを回避するためにCCommandBarCtrlを使っていない
俺もこの辺のバグを回避するためにDonutのソースを参考にして自作した
0347デフォルトの名無しさん2008/05/24(土) 15:10:10
>>338
>メインウィンドウのサイズを変更したとき、Menuのサイズを変更しない
??
ウインドウを小さくした時メニューがはみ出してもいいの?
変なアプリーw
0348デフォルトの名無しさん2008/05/24(土) 15:15:16
サイズ固定でシェブロン出すのよくあるけど。
0349デフォルトの名無しさん2008/05/24(土) 15:15:46
右端に >> を付けたいって事だろ
そういうのはコマンドバーって言うんだよっていうのが以後の流れ
0350デフォルトの名無しさん2008/05/24(土) 15:40:07
APIの話では無いのでスレ違いだと思いますが
Windows XPで外部信号に対して±10mS程度以内で
応答を返すことは可能なのでしょうか?
0351デフォルトの名無しさん2008/05/24(土) 15:51:28
エスパーじゃないしマイナスは厳しいんじゃないか。
0352デフォルトの名無しさん2008/05/24(土) 16:26:25
え、-10ms以内で応答を返せないの?
近頃のWindowsは糞だなぁ
0353デフォルトの名無しさん2008/05/24(土) 16:31:12
さすがのWINDOWSでも、時をかけるのは難しいんじゃないか?
0354デフォルトの名無しさん2008/05/24(土) 16:53:26
待ってられない信号がある。

それはさておき、「何らかのインターネット接続が存在するかどうか」を知る方法はありますか?
今は自分のグローバルIPアドレスに対してpingを打っているのですが、激しく間違っている気がします。
0355デフォルトの名無しさん2008/05/24(土) 16:58:33
それはすれ違いじゃないか?
ネットワーク相談室の方がいい気がする。。
0356デフォルトの名無しさん2008/05/24(土) 17:05:24
Network Managementで接続を列挙するとか
wininetでonline/offlineをとるとか
0357デフォルトの名無しさん2008/05/24(土) 17:31:55
wininet.dll が使えるなら(というか使えない環境のほうがレアだろうが)、
InternetGetConnectedStateEx だろう。
0358デフォルトの名無しさん2008/05/24(土) 17:50:12
>>357
インターネット環境が無いと使えない某ソフトが確かそのAPIでチェックしてたような
勿論nopで埋めうわ何をするやmくぁwせdrftgyふじこlp
0359デフォルトの名無しさん2008/05/24(土) 18:02:39
>>358
日本語でそっち関連の情報を提供してるとこある?
中国語とかならわんさかあるんだけど...
0360デフォルトの名無しさん2008/05/24(土) 18:06:37
そんな物自分で勉強しろよ
スレ違いな上にグレーゾーンな事をここで聞くな馬鹿
0361デフォルトの名無しさん2008/05/24(土) 18:09:26
>>359
英語を苦にしないならMSDN。
ていうか、なんで日本語版にはwininet関数が載ってないんだ。
0362デフォルトの名無しさん2008/05/24(土) 18:22:47
昔はWinAPIの日本語ヘルプが付いてたのに、今やWin95時代から更新止まってる古い情報しか無いのはどうよ
そもそもMSKBですら最近は機械翻訳だらけだし、中国語とかの方が翻訳されてるなんておかしい

もう日本のIT技術者は世界から見捨てられてるという事?
0363デフォルトの名無しさん2008/05/24(土) 18:23:14
>>350
デバイスドライバならともかく、
一介のアプリケーションで100%確実の保証は絶対無理だな。
0364デフォルトの名無しさん2008/05/24(土) 18:24:59
>>362
おかげで、英語を読むことの抵抗感がなくなったから感謝しているw
日本のIT技術者はもっと世界に羽ばたけということだよ。
0365デフォルトの名無しさん2008/05/24(土) 18:26:49
>>362
正解
0366デフォルトの名無しさん2008/05/24(土) 18:32:43
まぁIMEが中国で開発されてるぐらいだから仕方ないか
日本のプログラマはもう用済みなんだろうな
0367デフォルトの名無しさん2008/05/24(土) 18:39:15
英語も中国語もできる俺は勝ち組。

0368デフォルトの名無しさん2008/05/24(土) 18:41:12
>>367
すぐにプログラマから足を洗って商売でも始めるんだ。
03693502008/05/24(土) 18:41:48
>>351-353
ですな〜
信号を受けて50mS±10mSとかです。

皆さん親切だ。w

0370デフォルトの名無しさん2008/05/24(土) 18:47:08
Windows上であるいじょう、確実な保障はできないが、
そのくらいの精度なら、大抵の環境で余裕だろ。
0371デフォルトの名無しさん2008/05/24(土) 18:47:36
>>369
50±10ms ぐらいなら可能なはず。
Windows のタイマの精度が 16ms ぐらいだから結構ギリだがな。
リアルタイム性を Windows に求めるのは少しつらいかも知れん。
0372デフォルトの名無しさん2008/05/24(土) 18:48:52
そこでRTLinuxですよ、俺は使ったこと無いけど
0373デフォルトの名無しさん2008/05/24(土) 19:16:19
Windowsで精度を求めるなら。
http://msdn.microsoft.com/en-us/library/ms712704(VS.85).aspx
0374デフォルトの名無しさん2008/05/24(土) 19:34:05
ダイアログに関する質問です。
SS_BITMAPを指定してスタティックコントロールを作って画像を表示した場合、画像がウィンドウより大きいとはみ出しますが、StretchBlt()のように固定サイズ内での縮小表示は出来ますか。
事前に何処かで縮小処理を行ったビットマップを読むしかないのでしょうか。
0375デフォルトの名無しさん2008/05/24(土) 19:38:28
>>374
つ SS_REALSIZECONTROL

XP以降でダイアログのビットマップやアイコンが潰れてる元凶
03763502008/05/24(土) 19:50:25
やはり10mSの精度は無理っぽいですね。
出来たとしても15mSくらいが限界なんでしょうな。

全然分ってないけど、デバイスドライバーにすればタイムスライスの
壁は越えられるのでしょうか。。
0377デフォルトの名無しさん2008/05/24(土) 19:51:39
>>375
手書きでリソースファイルを修正したら出来ました、ありがとうございます。
ResEdit1.4.3のバグでSS_REALSIZECONTROLをtrueにしてもリソースファイルに反映されないのが原因だったようです。
0378デフォルトの名無しさん2008/05/24(土) 20:04:34
CreateWindow関数って使われなくなったのですか?
何故か、自動的にCreateWindowExAと解釈されてしまうのですが……。

ちなみに環境はVC++2008ExpOSはXP使ってます。
0379デフォルトの名無しさん2008/05/24(土) 20:08:38
すみません自己解決しましたorz
マクロのコンパイルエラーだった。
0380デフォルトの名無しさん2008/05/24(土) 20:21:55
>>376
タイムスライスの壁は越えられないこともないが下手な実装だと Windows 全体が不安定になるわな。
デバイス側から割り込みをかけられる機構があるなら手っ取り早い。(割り込みはほぼ最大優先度で処理されるため。)
0381デフォルトの名無しさん2008/05/24(土) 20:51:01
Webダウンローダー等でダウンロードしたファイル名に
?等が入っている場合があるのですが、これは問題ないのですか?
0382デフォルトの名無しさん2008/05/24(土) 20:58:11
>>381
問題あり
ウイルスに感染していると自動的に?等が入る仕組みなので中身を見る前に捨てましょう
0383デフォルトの名無しさん2008/05/24(土) 21:02:10
>>382
例えば
.cgi?name=abcd等では?
0384デフォルトの名無しさん2008/05/24(土) 21:07:51
せめてAPIの質問してくれよ
0385デフォルトの名無しさん2008/05/24(土) 21:12:11
>>384
ファイルの新規作成では?使えないのに
CreateFileが?使えるのは何故ですか?
0386デフォルトの名無しさん2008/05/24(土) 21:14:13
>>376
> Windows XPで外部信号に対して
今実装してる方法では、どうやって信号取得してるの?
もうちょっと話が具体的にならないと、これ以上アドバイスできない。
0387デフォルトの名無しさん2008/05/24(土) 21:14:41
>>385
Explorerのバグだろ
".htaccess"とかも作成できない
0388デフォルトの名無しさん2008/05/24(土) 21:17:57
>>387
バグですか、
?をファイル名に含むファイルをプログラムが生成する事に何か問題はありますか?
0389デフォルトの名無しさん2008/05/24(土) 21:19:35
そんな事知るか
MSに聞け
0390デフォルトの名無しさん2008/05/24(土) 21:20:20
>>389
あなたの予想で構いません
0391デフォルトの名無しさん2008/05/24(土) 21:21:51
>>387
それについてはこういう理由
ttp://blogs.msdn.com/oldnewthing/archive/2008/04/14/8389268.aspx
0392デフォルトの名無しさん2008/05/24(土) 21:25:46
>>391
ありがとうございます。
0393デフォルトの名無しさん2008/05/24(土) 21:34:14
>>391
以前その記事を見てバグだと確信した

・拡張子を表示しない設定にしていても".txt"のようなファイル名は拡張子含めて表示すればいい
・拡張子を表示する設定にしていれば".txt"のようなファイルを作成できるようにすればいい
・そもそも拡張子を表示しない設定なんて不要 (セキュリティ的に)

選択肢は色々あるし、.htaccessなんて比較的PCに詳しくない人間でも作る時代なのに
Win95以来から今に至るまで放置状態なんて開発者の傲慢だろ
自分でシェル拡張作れとか、もうアホかと
0394デフォルトの名無しさん2008/05/24(土) 21:39:21
・そもそも拡張子でのファイル識別がアホ
03953502008/05/24(土) 21:39:23
>>386
未だ具体的な実装レベルの話にはなっていません。
Windowsで10mS応答は無理(?)なのでリアルタイム処理が必要な
部分は機器側で実装しないと無理〜・・・のような話をしている段階です。
0396デフォルトの名無しさん2008/05/24(土) 21:41:23
>>394
Macみたいにファイルの先頭にゴミ付けて識別するのもどうかと思う
0397デフォルトの名無しさん2008/05/24(土) 21:41:52
この流れの中で質問するのは恐縮なのですが、「Wininet」を使用したFTP通信で困った状態になっています。

APサーバからファイルサーバ上の複数のFTPサイトに対して、ファイルをFTP PUTするサービスがあるのですが、
特定のFTPサイトだけ「550 access denied」になってしまいます。

ファイルサーバ上のFTPサイトは「書き込み:可」になっていますし、フォルダの権限も同様です。
新規ファイルのPUTなので上書きに失敗している訳でもありません。
使用しているユーザーは共通のものを使っているので、他のFTPサイトにPUTできることから、
権限は足りていると判断しています。でも、アクセス拒否エラーが発生してしまいます。
ファイルサーバを再起動しても改善しません。

このような場合、他にどの点を疑って調査すれば良いでしょうか?
0398デフォルトの名無しさん2008/05/24(土) 21:41:52
いい加減ファイルシステムにファイルタイプ情報持たせろよ
0399デフォルトの名無しさん2008/05/24(土) 21:42:41
>>396
いつの話?
0400デフォルトの名無しさん2008/05/24(土) 21:44:26
いまどき拡張子でタイプ判別なんてうんこプログラム書いてる奴はいないだろ…
0401デフォルトの名無しさん2008/05/24(土) 21:45:27
>>400
つExplorer
0402デフォルトの名無しさん2008/05/24(土) 21:47:09
>>398
Vistaで間に合わなかったアレか
0403デフォルトの名無しさん2008/05/24(土) 21:49:16
>>393
いやちょっとまて、一体どこを読んだらそういう解釈になるんだよ。
そりゃまあ、世の中には.htaccessぐらい余裕で書ける婆ちゃんがいるかもしれんさ。
でもな、世の中はそーじゃねーんだよ。
だから一番バカに合わせておくんだ。
0404デフォルトの名無しさん2008/05/24(土) 21:49:44
間に合わなかったっつーか、Windowsの機能として入れる計画は無くなった。
0405デフォルトの名無しさん2008/05/24(土) 21:54:14
>>401
いやMS以外で
0406デフォルトの名無しさん2008/05/24(土) 21:54:27
>>403
バカはPCを使わなくていい
バカに合わせると使いづらくなるだけ
バカは紙と鉛筆で十分
0407デフォルトの名無しさん2008/05/24(土) 21:55:39
バカにはTablet PCでも与えてとけばおk
0408デフォルトの名無しさん2008/05/24(土) 21:56:41
カプセルPCでおk
0409デフォルトの名無しさん2008/05/24(土) 22:03:45
>>405
Windowsのファイルシステム系APIを使うほぼ全てのアプリがそうじゃない?
バイナリフォーマットを扱うアプリであれば、最初に拡張子で選別して、次に中身を見るだろうけど。
(適切かつ安全に見ることができないアプリも多いが)
0410デフォルトの名無しさん2008/05/24(土) 22:09:35
あ〜もういいや
0411デフォルトの名無しさん2008/05/24(土) 22:16:11
やいいうも〜あ
0412デフォルトの名無しさん2008/05/24(土) 22:18:00
あぃいおまぁ
0413デフォルトの名無しさん2008/05/24(土) 22:21:45
>>398
NTFSなら副次ストリームとか使えるけど、
古いファイルシステムも捨てられない。
Windowsは互換性をけっこう気にするからな。
0414デフォルトの名無しさん2008/05/24(土) 22:27:31
古いファイルシステムってFATの事を言いたいのか?
USBメモリやSD/CFカードではまだまだ現役バリバリだろ
0415デフォルトの名無しさん2008/05/24(土) 22:30:02
>>378
CreateWindowとCreateWindowExだったら、
どっちでもいいときは好きなほうを使えばいい。

仮に、CreateWindowが実在したとしても、どうせ中でCreateWindowExを呼ぶだけ。
それだったらCreateWindowはヘッダでCreateWindowExに展開する今の方式なら、
システムDLLがCreateWindowの実装を省ける分サイズ削減できる。
0416デフォルトの名無しさん2008/05/24(土) 23:24:53
>>415
大抵内部で〜Exを呼んでる (LoadLibraryとか)
むしろマクロで済ませてるCreateWindowが特殊
0417デフォルトの名無しさん2008/05/24(土) 23:50:21
>>395
10mS精度ぐらいならおおむねできるけど、ほかの処理で数百ミリ遅れることは多々ある。だからリアルタイムを現実的に無理。デバイスドライバでも同じ。
でもHALでリアルタイム実行させたり、windowsを仮想化させてリアルタイム実行させるるソフトがあるから、リアルタイムHALやRTXでググってみれれ
0418デフォルトの名無しさん2008/05/25(日) 09:35:17
>>397
ほかのFTPソフトを使うとそのサイトにはうpできるんんか?
0419デフォルトの名無しさん2008/05/25(日) 09:53:00
んんか?
0420デフォルトの名無しさん2008/05/25(日) 10:01:00
できるんんか の検索結果 約 1,850,000 件
w
0421デフォルトの名無しさん2008/05/25(日) 10:02:13
よく見たら一つ上のレスを真似しただけかな

実行させるるソフト
ググってみれれ

今時カナ打ちかよw
0422デフォルトの名無しさん2008/05/25(日) 10:41:50
かな入力の方が日本語のタイピングは速い。
0423デフォルトの名無しさん2008/05/25(日) 10:45:00
というのは間違い。
0424デフォルトの名無しさん2008/05/25(日) 10:47:13
キーをタイプする回数が減るから事実。
0425デフォルトの名無しさん2008/05/25(日) 10:51:25
かな入力じゃ10分間で5000タッチできる気がしない
0426デフォルトの名無しさん2008/05/25(日) 10:56:24
それは慣れていないだけ。
0427デフォルトの名無しさん2008/05/25(日) 11:07:29
まあどうせ俺なんか入力速度に脳が追いつかないからどうでもいいんだけどね
0428デフォルトの名無しさん2008/05/25(日) 11:09:03
しかし日本語は読みから漢字に変換しなければならないので、
いくら読みがなを早く入力できたからといって、それほど早くはならない気がする。
完璧に変換してくれるIMEは存在しないし。
0429デフォルトの名無しさん2008/05/25(日) 11:28:27
そこでT-Code
0430デフォルトの名無しさん2008/05/25(日) 12:54:12
ライターじゃあるまいし日本語のタイピング速度なんてどうでもいいだろ
それともひまわりでプログラミングしてるのか?
0431デフォルトの名無しさん2008/05/25(日) 12:57:08
日本語のレスに対する突っ込みだったから。
0432デフォルトの名無しさん2008/05/25(日) 13:04:24
>>417=>>422=>>431って事でいいの?
とりあえず君がカナ入力マンセーなのは分かったからもういいよ
0433431 = 424 = 422;2008/05/25(日) 13:07:11
>>432
違う。俺はローマ字入力。事実を伝えただけ。スレ違いなので終わる。
0434デフォルトの名無しさん2008/05/25(日) 13:08:42
なんで怪しい日本語になるダヨ
0435デフォルトの名無しさん2008/05/25(日) 13:14:17

/* ここまで雑談 */
0436デフォルトの名無しさん2008/05/25(日) 13:15:51
>>433
431 = 424 = 422;
          ↑
こうやって反射的にセミコロンを付けてしまう事ってよくあるよねw
04374332008/05/25(日) 13:19:53
>>436
板を考慮して付けた。
0438デフォルトの名無しさん2008/05/25(日) 13:23:08
もういいから
0439デフォルトの名無しさん2008/05/25(日) 13:31:24
こういう空気読めない奴ってホントどこにでもいるな
リアルでも空気読めなくて周囲からウザく思われてるんだろうな
0440デフォルトの名無しさん2008/05/25(日) 13:34:53
>>439
いい加減ウザイよ君
0441デフォルトの名無しさん2008/05/25(日) 15:33:05
質問がないと暇を持て余すんだろう
質問来ても、その調子なら邪魔以外の何者でもないが・・・
0442デフォルトの名無しさん2008/05/25(日) 16:37:35
int 21Hとか割り込み命令って今でも使える?
Win32API使わないとだめ?
0443デフォルトの名無しさん2008/05/25(日) 17:05:30
試せば分かるだろ
0444デフォルトの名無しさん2008/05/25(日) 18:55:52
>>442
DOSアプリからなら使えるよ。32ビットアプリだとクラッシュ。
9x系だと確か一部のものはクラッシュしなかったような?
動かないだろうけど
0445デフォルトの名無しさん2008/05/25(日) 19:09:09
>>444
後半二行の不確かな情報は要りません
0446デフォルトの名無しさん2008/05/25(日) 20:43:34
>>444
DOSアプリのみということは、
Win32 コンソールアプリではだめなのか
なるほど
0447デフォルトの名無しさん2008/05/25(日) 20:46:32
Invalid icon format ってエラーが出るんですけど、アイコンの絵そのものが
問題あるってことですよね?XPのペイントで書いてみたのが問題ですか?

0448デフォルトの名無しさん2008/05/25(日) 20:48:03
アイコンって、大きさ正方形だったかサイズ固定だったか
決まりがあったような気がする。
0449デフォルトの名無しさん2008/05/25(日) 20:50:56
>>447
icon≠windows bitmap
そもそもフォーマットが違います
アイコンエディタを使いましょう
0450デフォルトの名無しさん2008/05/25(日) 20:57:13
>>448
それはgoogle検索で出てきたので、32×32にしてます。
>>449
そうなんですか、分かりました。

皆さんありがとうございました。
0451デフォルトの名無しさん2008/05/25(日) 21:23:51
そういえばVistaのPNG形式アイコンがあるとRC.EXEがエラー吐いたりしたけど
最近のバージョンのRC.EXEでは直ってるの?
0452デフォルトの名無しさん2008/05/25(日) 21:48:19
>>444
9xで、32ビットアプリケーションからファンクションコールをするとしたら、
DeviceIoControlを呼ぶのが正式な手段。全部使えるわけではないけど、
ディスクを直接読み書きするときとかに使った。
0453デフォルトの名無しさん2008/05/25(日) 22:00:33
9xの話を今頃されてもオッサン乙で終わるのだが
0454デフォルトの名無しさん2008/05/26(月) 00:19:42
ウィンドウプロシージャを差し替えたいんだけど、
なんかできないんだよね。

SetClassLong(hWnd, GCL_WNDPROC, (LONG)AnotherMyWindowProc);
この関数を用いる上でなんか注意点ある?
マウスやアプリのアイコン変更も反映されないんだけど。
0455デフォルトの名無しさん2008/05/26(月) 00:33:58
注意点 msdnをよく読む事
0456デフォルトの名無しさん2008/05/26(月) 00:43:49
>>453
そのオッサンのやりとりにお前が絡む必要はないのに、何が乙なんだ
0457デフォルトの名無しさん2008/05/26(月) 00:45:43
俺の家の玄関に「硫化水素発生中」って貼った奴、氏ねよ
0458デフォルトの名無しさん2008/05/26(月) 01:04:43
そのネタはもう旬を過ぎてるよ
0459デフォルトの名無しさん2008/05/26(月) 01:06:41
まじでか
0460デフォルトの名無しさん2008/05/26(月) 01:09:56
>>454
わろた
0461デフォルトの名無しさん2008/05/26(月) 01:17:49
わらっつぁらめぇー
04624542008/05/26(月) 01:24:30
http://homepage1.nifty.com/kazubon/progdoc/tclock/nagare2.html
ここみてる限り間違ってないと思うんだがナー
0463デフォルトの名無しさん2008/05/26(月) 01:33:14
>>462
それは良かったですね
0464デフォルトの名無しさん2008/05/26(月) 01:37:50
とってもよかったでーす^^^;
0465デフォルトの名無しさん2008/05/26(月) 01:53:01
>>462
赤字で書いてるとこと違う事をしてるのは、分かっててやってるの?
変更したクラスから新しくウィンドウを作るってんなら、それでいいんだけど。
0466デフォルトの名無しさん2008/05/26(月) 11:46:16
どこをどう見ると間違ってないんだよw

SetWindowLong、SetWindowLongPtr、SetWindowSubclass使えよ
0467デフォルトの名無しさん2008/05/26(月) 11:53:56
間違い探しかよw
ぱっと見てスルーしてたけど、SetClassLong使ってたのか
0468デフォルトの名無しさん2008/05/26(月) 12:56:47
>>451
VS2005なら、Windows SDK6.0だか6.1入れてCLやRCをそちら付属品を
使うようにすればVista圧縮形式に対応できる。
VS2008はRCでもMSDEVリソースエディタでも標準サポート
0469デフォルトの名無しさん2008/05/26(月) 15:43:24
>>452
9xだと本当にDOSが動いてるからね。
NTだと単なるエミュだし
0470デフォルトの名無しさん2008/05/26(月) 15:52:02
>>468
さんくす
RC.EXEだけでも入れ替えておけばビルド後のイベントでゴニョゴニョする必要は無さそうだw
IDEのリソースエディタでアイコンなんて作らないからそっちはまぁいいや
0471デフォルトの名無しさん2008/05/26(月) 16:26:48
>>470
VS2005だと、圧縮形式アイコンが含まれる.rcファイルがMSDEVで開けないんで注意
0472デフォルトの名無しさん2008/05/26(月) 16:35:26
VC2005はmsdevじゃなくてdevenvだったと思うが。
そんな俺はVC6ユーザー
0473デフォルトの名無しさん2008/05/26(月) 17:01:52
http://imepita.jp/20080526/612210
このような四角いボタンってどうやって作るんですか?
0474デフォルトの名無しさん2008/05/26(月) 17:03:04
言い忘れました。×ボタンです。
0475デフォルトの名無しさん2008/05/26(月) 17:09:14
クローズボタンのことが聞きたいのかオーナードローのボタンのことが聞きたいのか
0476デフォルトの名無しさん2008/05/26(月) 17:25:53
1. Toolbar を作る
2. ImageList を作る
3. [×] のビットマップを作る
4. 3. のビットマップを 2. の ImageList に追加する
5. ImageList を Toolbar にセットする
6. Toolbar に 3. のビットマップを持つボタンを追加する
0477デフォルトの名無しさん2008/05/26(月) 18:08:23
指定したiniファイルのキーを削除するapiを教えてください
0478デフォルトの名無しさん2008/05/26(月) 18:08:57
やだ
0479デフォルトの名無しさん2008/05/26(月) 18:55:43
WritePrivateProfileStringで
lpAppNameにセクション名
lpKeyNameにキー名
lpStringにNULL
lpFileNameにiniファイルのパスを指定すると
指定したセクション内のキーが消える
0480デフォルトの名無しさん2008/05/26(月) 19:04:01
>>479
まじっすか^^
WritePrivateProfileStringで値をNULLにすると消えるんですね
これは知らなかった。ありがとうございます!
04814792008/05/26(月) 19:04:52
ってかMSDN読めよ
0482デフォルトの名無しさん2008/05/26(月) 19:05:09
MSDNも読まずにWin32APIを使おうとする奴の気が知れない
0483デフォルトの名無しさん2008/05/26(月) 19:05:36
つーか引数どうやって知ったのかw
そこに説明もあると思うんだがなあ
0484デフォルトの名無しさん2008/05/26(月) 19:33:34
MSDNなんて読まなくていい
ここで質問するだけで丁寧な解説が日本語で得られる
お人好しな人間ほどうまく扱えば便利なものは無い


というのが俺の妄想

一応言っとくが俺はちゃんとMSDNで調べる派だからな
0485デフォルトの名無しさん2008/05/26(月) 19:36:57
俺みたいに嘘を教える奴も居るから気をつけないと
0486デフォルトの名無しさん2008/05/26(月) 19:40:39
俺みたいにかく乱する奴もいるからry
0487デフォルトの名無しさん2008/05/26(月) 19:45:04
お前ら必死でワロタ
0488デフォルトの名無しさん2008/05/26(月) 20:31:16
VC.net2003 + SDKで、ImageList使える?
ビルドは通るが、CreateWindowExでウィンドウ作成した時点で、'hoge, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' から
型 '_IMAGELIST' を読み込めません。って出て落ちるんだけど・・・
0489デフォルトの名無しさん2008/05/26(月) 20:37:28
DiskcopyコマンドってどういうAPI使ってフロッピーに出力してるの?
このコマンドに限らずブート領域を書き込めるのって同じやり方だと思うんだけぢ
少なくともfoutやCopyFileではなさそう。
0490デフォルトの名無しさん2008/05/26(月) 20:39:08
> 思うんだけぢ
どこの方言でぢか?
0491デフォルトの名無しさん2008/05/26(月) 20:43:52
アマゾン地方の方言が出てしまいました
0492デフォルトの名無しさん2008/05/26(月) 20:47:15
DeviceIoControlとかじゃないの
知らんけど
0493デフォルトの名無しさん2008/05/26(月) 20:55:32
>>489
DDKを見ましょうね。
0494デフォルトの名無しさん2008/05/26(月) 21:04:43
やだ
0495デフォルトの名無しさん2008/05/26(月) 23:06:57
>>489
NTならCreateFileで"\\\\.\\A:"のようにすると生のドライブを開ける。SDKにも書いてある。
9xなら>>452。KB125712やKB174569など。
0496デフォルトの名無しさん2008/05/26(月) 23:10:48
あした試してみよう
0497デフォルトの名無しさん2008/05/26(月) 23:27:50
もうすぐ明日だろ
0498デフォルトの名無しさん2008/05/26(月) 23:56:37
関数を動的に作ってウィンドウプロシージャとして渡す事ってできないんですか?

クラスのメンバ関数をウィンドウプロシージャにできないのが、
理屈ではよくわかるんですけど、なんか納得できなくてw
static使って場合分けするのもなんか反則的というか、やりたいことと違う気がして…
クラスのコンストラクタで関数を動的に作ってコントロールのプロシージャとして使い、
デストラクタでコントロールは期すると共に関数も破棄できないかなぁと。


…ゴメンナサイ、なんかもう投げやりです。
0499デフォルトの名無しさん2008/05/27(火) 00:06:12
グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?
0500デフォルトの名無しさん2008/05/27(火) 00:09:06
つーか自分でラッパー書けばいいだけじゃね
0501デフォルトの名無しさん2008/05/27(火) 00:10:07
僕ハッカー!!!
05024892008/05/27(火) 00:11:11
CreateFile
DeviceIoControl
WriteFile
でなんかフロッピーに出してるのは判った
しかしこの方法でフロッピーの中にファイルを作る方法がわからなう
0503デフォルトの名無しさん2008/05/27(火) 00:13:47
FAT32の仕組みでも覚えろ
0504デフォルトの名無しさん2008/05/27(火) 00:14:44
>>498
http://web.archive.org/web/20070810174250/http://techtips.belution.com/ja/vc/0009/
ようするに、静的メンバ関数の中から
何らかの方法でウィンドウに対応するオブジェクトを得て、
そのオブジェクトの非静的メンバ関数に処理を渡せばいい。

ウィンドウクラスの場合、次のようなものを使って
オブジェクトへのポインタを保存する例が多い。
Get/SetProp
Get/SetWindowLongPtrとウィンドウクラスごとの追加データ
Get/SetWindowLongPtrとGWLP_USERDATA

ちなみに、ATLは本当に動的に関数を作って対処している。
http://hp.vector.co.jp/authors/VA022575/c/msgmap.html

0505デフォルトの名無しさん2008/05/27(火) 00:16:02
>>502
逆に、ファイルがある状態のフロッピーディスクを
吸い出して中身を眺める、もちろんFATの構造の解説と一緒に。
0506デフォルトの名無しさん2008/05/27(火) 02:10:13
アプリケーションへのアイコン設定は、
検索で調べると必ず .rc への記述方法が紹介されてますが、
.rc を経由せずに .cpp のプログラムのみで設定って出来るんでしょうか?
よろしくお願い致します。
0507デフォルトの名無しさん2008/05/27(火) 03:17:45
>>502
何がしたいのかよくわからんが
フロッピーの中にファイルを作るのならばCreateFileでいいと思うが。
diskcopyだったらセクタを全部コピーすればいい
0508デフォルトの名無しさん2008/05/27(火) 07:09:57
あるウィンドウがHWND_TOPMOSTで最善面になっているかどうかを判断するにはどうすればいいのでしょうか?
0509デフォルトの名無しさん2008/05/27(火) 07:58:26
GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST
0510デフォルトの名無しさん2008/05/27(火) 08:25:20
>>504
atlthunk.cppが凄い
てかこんなのMSの中の人でないと書けないだろw
0511デフォルトの名無しさん2008/05/27(火) 08:45:38
書ける奴はいくらでもいるだろうが、実際に、書こう思う奴は、それほどいない。
MFCはHWNDとベースクラスへのポインタを、
いわば、std::map< HWND, Hoge >的なもので管理していて、メッセージが来るたびに検索してると聞いたが。
0512デフォルトの名無しさん2008/05/27(火) 09:33:10
>>511
実際に中身を見てから言って欲しいね
0513デフォルトの名無しさん2008/05/27(火) 09:46:49
コード生成はWindowsより前なら常套手段だから昔の人なら楽勝
0514デフォルトの名無しさん2008/05/27(火) 09:52:23
そんな話はしていない
いいから当該ソースを見ろ
0515デフォルトの名無しさん2008/05/27(火) 10:24:54
WinMainからDialogBoxでモーダルダイアログを作成しております。
DialogProc内から例外をthrow(あるいはRaiseException)したところ、
WinMainで正常にcatch出来ました。

ところがDialogProcからさらに孫ダイアログを作成し、
孫ダイアログのDialogProc内から例外をthrowしたところ、
子ダイアログのDialogProcでcatch出来たのですが、
return後にAccess violationで落ちてしまいました。

どうすればreturn後に処理を続行できるのでしょうか?
0516デフォルトの名無しさん2008/05/27(火) 10:27:53
長くて恐縮ですがソースを貼らせて頂きます。
INT_PTR CALLBACK proc2(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     EndDialog(wnd, LOWORD(w));
     throw std::exception("HOGE!"); // 例外をthrow
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
INT_PTR CALLBACK proc1(HWND wnd, UINT msg, WPARAM w, LPARAM) {
 switch (msg) {
  case WM_INITDIALOG: return TRUE;
  case WM_COMMAND:
   switch (LOWORD(w)) {
    case IDOK:
     try {
      DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_2), wnd, proc2);
     } catch (const std::exception&) {}
     return TRUE; // return後にAccess violation
    case IDCANCEL: EndDialog(wnd, LOWORD(w)); return TRUE;
   } break; } return FALSE;
}
int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
 try {
  DialogBox(GetModuleHandle(0), MAKEINTRESOURCE(IDD_1), 0, proc1);
 } catch (const std::exception&) {
 } catch (...) {} return 0;
}
0517デフォルトの名無しさん2008/05/27(火) 10:44:00
>>515
C++以外のスタックフレームを飛び越えるthrow〜catchって
頭の悪いlongjmpと同じだと思うがどうか
0518デフォルトの名無しさん2008/05/27(火) 11:01:23
文字列の"123.45"をfloatに変換するAPIを教えてくだせえ
0519デフォルトの名無しさん2008/05/27(火) 11:07:35
なんでわざわざAPI使うん?
0520デフォルトの名無しさん2008/05/27(火) 11:11:36
wsprinf があるんだから wsscanf もあるにちがいないw
0521デフォルトの名無しさん2008/05/27(火) 11:13:22
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。
0522デフォルトの名無しさん2008/05/27(火) 11:17:36
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど
0523デフォルトの名無しさん2008/05/27(火) 11:36:08
VarR4FromStr
VarR8FromStr
0524デフォルトの名無しさん2008/05/27(火) 12:23:01
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん
0525デフォルトの名無しさん2008/05/27(火) 12:30:58
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?
0526デフォルトの名無しさん2008/05/27(火) 12:52:43
msvcrt.dllならいいんじゃね
0527デフォルトの名無しさん2008/05/27(火) 13:07:36
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?
0528デフォルトの名無しさん2008/05/27(火) 14:28:31
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ
0529デフォルトの名無しさん2008/05/27(火) 15:10:26
うるせークズ
0530デフォルトの名無しさん2008/05/27(火) 15:13:58
>>528
キモいよ
0531デフォルトの名無しさん2008/05/27(火) 15:14:00
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?
0532デフォルトの名無しさん2008/05/27(火) 15:16:09
試せばいいだろハゲ
0533デフォルトの名無しさん2008/05/27(火) 15:23:22
そんなの関係ねーだろクズが
0534デフォルトの名無しさん2008/05/27(火) 15:31:18
関係ねー事聞くなカス
0535デフォルトの名無しさん2008/05/27(火) 15:35:03

            ノ
           (゚Д゚)
           ( (7
           < ヽ
0536デフォルトの名無しさん2008/05/27(火) 15:38:25
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの
0537デフォルトの名無しさん2008/05/27(火) 15:44:25
>>535
なんだその態度は!!
0538デフォルトの名無しさん2008/05/27(火) 16:42:51
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く
0539デフォルトの名無しさん2008/05/27(火) 18:25:05
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。
0540デフォルトの名無しさん2008/05/27(火) 18:26:36
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?
0541デフォルトの名無しさん2008/05/27(火) 18:28:35
正しくはどのメッセージを送ればよいのでしょうか?
0542デフォルトの名無しさん2008/05/27(火) 18:29:27
>>541
MoveWindow 関数で
0543デフォルトの名無しさん2008/05/27(火) 18:30:30
ありがとうございます。
0544デフォルトの名無しさん2008/05/27(火) 18:32:30
SetWindowPosとかもあるし、好きなので。
0545デフォルトの名無しさん2008/05/27(火) 19:17:01
>>540
WM_SIZEを送ると動くウィンドウならあるよ
0546デフォルトの名無しさん2008/05/27(火) 19:29:00
動かないウィンドウもあるってことですね。
0547デフォルトの名無しさん2008/05/27(火) 19:49:39
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。
0548デフォルトの名無しさん2008/05/27(火) 19:50:20
STLが○| ̄|_にみえたのは俺だけですか?
0549デフォルトの名無しさん2008/05/27(火) 19:53:30
>>548
面白くないよ
0550デフォルトの名無しさん2008/05/27(火) 20:02:12
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような
0551デフォルトの名無しさん2008/05/27(火) 20:07:35
>>549は大爆笑して悔しかったんだろうなぁ
0552デフォルトの名無しさん2008/05/27(火) 20:09:17
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない
0553デフォルトの名無しさん2008/05/27(火) 20:09:49
>>548=>>551
はいはいわろす
0554デフォルトの名無しさん2008/05/27(火) 20:11:58
>>535,537
ワロタw
0555デフォルトの名無しさん2008/05/27(火) 20:41:01
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい
0556デフォルトの名無しさん2008/05/27(火) 20:56:03
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い
0557デフォルトの名無しさん2008/05/27(火) 20:57:48
VCなんてもう終わってるだろうがw
0558デフォルトの名無しさん2008/05/27(火) 21:27:35
終わってません
というか終わりません
0559デフォルトの名無しさん2008/05/27(火) 22:08:58
MSではVBについで売れてる言語製品だしな
0560デフォルトの名無しさん2008/05/27(火) 22:13:15
でも、そのVB6も来月で...
0561デフォルトの名無しさん2008/05/27(火) 22:13:38
何その時代錯誤
0562デフォルトの名無しさん2008/05/27(火) 22:39:04
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。
0563デフォルトの名無しさん2008/05/28(水) 11:16:09
VBwwwwwwwwwwwwwwwwwwwwww
0564デフォルトの名無しさん2008/05/28(水) 18:11:40
Visual Baka
0565デフォルトの名無しさん2008/05/28(水) 18:21:52
violence bokan
0566デフォルトの名無しさん2008/05/28(水) 19:41:40
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?
0567デフォルトの名無しさん2008/05/28(水) 20:34:14
int wmain()
{
HMODULE hModule;
HBITMAP hBitmap;
int count = 0;
std::wcout.imbue(std::locale("japanese"));
while (1)
{
hModule = LoadLibrary(L"hoge.exe"); //単一で数MBのBMPリソースのあるファイル
hBitmap = LoadBitmap((HINSTANCE)hModule, L"#200"); //そのリソース番号
if (!hBitmap)
{
FreeLibrary(hModule);
std::wcout << L"画像読み込み失敗" << std::endl;
return 1;
}
FreeLibrary(hModule);
count++;
std::cout << count << std::endl;
}
return 0;
}

大した回数(自分の環境では45回)も行かない内に画像リソースの読み込みに失敗します。
原因は何でしょうか。
環境はWinXP Home SP3、VC++2008EEです。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。
0568デフォルトの名無しさん2008/05/28(水) 20:43:12
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。
0569デフォルトの名無しさん2008/05/28(水) 20:43:21
>>567
DeleteObject(hBitmap)してないからでは?
0570デフォルトの名無しさん2008/05/28(水) 21:05:12
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが
0571デフォルトの名無しさん2008/05/28(水) 21:24:59
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?
0572デフォルトの名無しさん2008/05/28(水) 21:27:54
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?
0573デフォルトの名無しさん2008/05/28(水) 21:29:04
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください
05745672008/05/28(水) 21:33:00
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。

実際のコードはhBitmapをウィンドウプロシージャのスタティックなローカル変数として宣言し、メッセージ処理先(LBN_SELCHANGE)で画像リソースを呼び出しています。
これを止めてメッセージの処理先で
static HBITMAP hBitmap;
と宣言したら以下のコンパイルエラーが出てしまい、どうにも出来ません。

error C2065: 'hBitmap' : 定義されていない識別子です。
0575デフォルトの名無しさん2008/05/28(水) 21:35:28
>>572
WNDCLASS の hCursor にカーソルを設定する
あるいは WM_SETCURSOR メッセージで SetCursor を呼びカーソルを設定する
0576デフォルトの名無しさん2008/05/28(水) 21:42:58
>>575
ありがとうございました。
0577デフォルトの名無しさん2008/05/28(水) 21:43:16
>>574
Win32API以前の問題だ。
自分でなんとかしろ。
0578デフォルトの名無しさん2008/05/28(水) 22:04:56
>>577
ダイアログに画像を表示したらDeleteObject()しても良かったんですね…。
VB.NETで同じようなコードをBitmapオブジェクトで行ったらエラーが出たのでWin32APIでもそうだと勘違いしていました。
C++でGUIアプリを作り始めてまだ1週間ですが、少し背伸びし過ぎました。
0579デフォルトの名無しさん2008/05/28(水) 22:05:28
C言語すら禄に理解してない癖に何が耐久テストだよ
0580デフォルトの名無しさん2008/05/28(水) 22:07:06
なんだVisual Bakaプログラマだったのかw
0581デフォルトの名無しさん2008/05/28(水) 22:37:55
>>579,580
罵るしか能の無い奴は消えろ
0582デフォルトの名無しさん2008/05/28(水) 22:45:51
いやです
0583デフォルトの名無しさん2008/05/28(水) 22:47:12
それぐらいしか楽しみがないんだろうから許してやってもいいんじゃ
0584デフォルトの名無しさん2008/05/28(水) 22:50:05
つうか罵られるのが嫌なら2ちゃんで質問しなければいいのでは
0585デフォルトの名無しさん2008/05/28(水) 23:01:23
当事者以外にも罵り文を見て不快に思う人がいるだろう
0586デフォルトの名無しさん2008/05/28(水) 23:02:54
不快に思うのが嫌なら2ちゃんに来なければいいのでは
0587デフォルトの名無しさん2008/05/28(水) 23:03:23
次にお前は「そんな奴が2ちゃん見るなよ」と言う。

って書こうと思ったのに
0588デフォルトの名無しさん2008/05/28(水) 23:09:08
MSDNすら読まずに質問する奴なんて叩かれて当然
0589デフォルトの名無しさん2008/05/28(水) 23:09:13
○○が嫌なら××しなければいいだろう

この言葉だけでは解決できない事がどれだけ溢れてると思ってるんだ
0590デフォルトの名無しさん2008/05/28(水) 23:10:09
>>588
なら「MSDN読め」でいい、独り言を言うように罵り煽る奴はいらん
0591デフォルトの名無しさん2008/05/28(水) 23:13:03
>>590
MSDN読め
0592デフォルトの名無しさん2008/05/28(水) 23:21:30
それくらい察して欲しかったって言うのが本音。
0593デフォルトの名無しさん2008/05/28(水) 23:25:43
話を理解してない馬鹿は知らないならそれぐらい察してレスしないでMSDN読んでほしかったってのが本音
0594デフォルトの名無しさん2008/05/29(木) 03:55:50
VBwwwwwwwwwwwwwwwwwwwwww
0595デフォルトの名無しさん2008/05/29(木) 08:10:11
複数スレッドから参照されるキューへの出入力で排他処理を行いたいのですが、
カウンタ1の無名セマフォとクリティカルセクションではどちらの使用が適切なのでしょうか?
0596デフォルトの名無しさん2008/05/29(木) 08:30:48
クリティカルセクション
0597デフォルトの名無しさん2008/05/29(木) 08:48:08
このスレの住人ってVBプログラマいないの?
まあVBだとネイティブなAPI使わない事が
多いだろうから少ないかもね
0598デフォルトの名無しさん2008/05/29(木) 09:51:07
ドットロネットロに移行してるだろうし
0599デフォルトの名無しさん2008/05/29(木) 10:14:39
>>596
ありがとうございます。
0600デフォルトの名無しさん2008/05/29(木) 12:47:24
Virtual Batouスレですね
06014982008/05/29(木) 13:22:09
>>504
質問しといて、亀でゴメンナサイ…
やはりキーとなるデータ使ってマップみたいなことするのが一般的なんですね…

…動的に関数作れるのならちょっと試してみます
ありがとうございました。
0602デフォルトの名無しさん2008/05/29(木) 14:34:11
マップつっても二分探索なら大して負荷にならんだろ
0603デフォルトの名無しさん2008/05/29(木) 16:15:07
おまんこ
0604デフォルトの名無しさん2008/05/29(木) 16:32:52
んがくく
0605デフォルトの名無しさん2008/05/29(木) 21:53:12
画面を分割してそれぞれに違うものを表示するのは子ウィンドウを使っているのですか?
例えばIEだと、HPを表示する部分とお気に入り・履歴などが分かれていますが、あれも子ウィンドウを使っているのでしょうか?
0606デフォルトの名無しさん2008/05/29(木) 21:56:59
>>605
そうだと思うよ。
SPYとかで調べてみたらいいんじゃないかな。
06076052008/05/29(木) 22:13:08
>>606
SPYを使えばそういうことまで分かるのですか
ダウンロードしてみようと思います
ありがとうございました
0608デフォルトの名無しさん2008/05/29(木) 22:56:43
Spy++ってタダで入手できたか?

てか、今やWin32/C++使いから見ると商用版VisualStudioの価値って
リソースエディタとCRT/ATL/MFCのソースコードとSpy++ぐらいなんだよなー
0609デフォルトの名無しさん2008/05/29(木) 23:00:11
SDKのUISpyでも十分目的は果たせると思うお
0610デフォルトの名無しさん2008/05/29(木) 23:05:04
フリーソフトでスパイよりいいのあるお
0611デフォルトの名無しさん2008/05/29(木) 23:25:35
Spy++の代わりにフリーソフト使ったら負けかなと思ってる
0612デフォルトの名無しさん2008/05/30(金) 00:23:14
Winspactor Spy使ってる
0613デフォルトの名無しさん2008/05/30(金) 00:28:05
Winsp「e」ctorだろう
0614デフォルトの名無しさん2008/05/30(金) 00:33:25
昔のPlatform SDKにサンプルとしてSpyってのがあったんだけどな。
ソース付きで、Spy++のちょっとショボくなったやつ。
今はそういうサンプル全部無くなってるな。
0615デフォルトの名無しさん2008/05/30(金) 00:46:35
>>614
あれ、ちょっとどころか相当ショボイだろ

URL忘れたけど、MSサイトのどこかに
解凍すると130MBのchmが出てきて大量にSDKサンプルの入ってるやつがあった
その中におまいさんの言ってるSpyのソースコードも入ってるよ
0616デフォルトの名無しさん2008/05/30(金) 00:49:07
そんなにショボかったかw
見たの10年くらい前だから、もうよく覚えてないな。
0617デフォルトの名無しさん2008/05/30(金) 01:23:01
>>616
歳がばれるぞw
0618デフォルトの名無しさん2008/05/30(金) 01:42:32
現役大学生か。若いな。
0619デフォルトの名無しさん2008/05/30(金) 02:33:33
spyそのものはspy++が出るまでSDKの普通のツールだったしな
0620デフォルトの名無しさん2008/05/30(金) 08:56:51
MIIM_CHECKMARKS の
MIIMって何の略ですか?
Menu* だとは思うのですが.
0621デフォルトの名無しさん2008/05/30(金) 09:35:02
MenuItemInfoMask
0622デフォルトの名無しさん2008/05/30(金) 11:41:50
int main(int argc, char *argv[])
コンソールアプリだとこれで引数渡せるけど

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
APIじゃこう宣言されてるよね
非コンソールアプリを実行する時に
プログラム名 -オプション
ってやるにはどうすればいい?
0623デフォルトの名無しさん2008/05/30(金) 11:43:40
>>615
探したけどみつからないお><
もうなくなちゃったのかな?
0624デフォルトの名無しさん2008/05/30(金) 11:44:00
>>622
lpCmdLineに引数が入ってる
0625デフォルトの名無しさん2008/05/30(金) 12:28:02
GetCommandLine
0626デフォルトの名無しさん2008/05/30(金) 12:29:15
__argcと__argv
0627デフォルトの名無しさん2008/05/30(金) 12:46:09
ついでにUnicodeであればlpCmdLineをCommandLineToArgvWに通すとLPWSTRの配列に分解してくれる
0628デフォルトの名無しさん2008/05/30(金) 12:47:43
>>619
VC2の頃なんか普通にあったなSpy。アイコンもスパイ風の男で、VC4だかの初代Spy++は
そのアイコンに++の絵が付いただけ。
というかSpyの強化版だから「Spy++」になったわけだし
0629デフォルトの名無しさん2008/05/30(金) 13:05:35
次のバージョンではSpy#になるんですね。わかります。
0630デフォルトの名無しさん2008/05/30(金) 13:15:19
その次はSpy.NETになるんですね。わかります。
0631デフォルトの名無しさん2008/05/30(金) 15:21:58
Spy.NETってもうなかったっけ?
0632デフォルトの名無しさん2008/05/30(金) 15:28:33
ttp://www.spy.net/
0633デフォルトの名無しさん2008/05/30(金) 16:22:32
ウィンドウで
Set/GetWindowLongがあるように

スレッドとかプロセス別に値収納する奴ってありますか?
0634デフォルトの名無しさん2008/05/30(金) 16:35:56
>>633
スレッドはスレッドローカルストレージってやつでスレッド固有の値を保持できるよ。詳細はmsdnみろ
プロセスは普通にグローバル変数使えばいいんでは…?
0635デフォルトの名無しさん2008/05/30(金) 16:40:02
Get/SetLastErrorを使うとスレッド別に32bitの値を格納できる
0636デフォルトの名無しさん2008/05/30(金) 17:11:13
スレッドならTLSを使う。

プロセスについては、自分以外のプロセスを管理する上でそれぞれに値を割り当てたいなら、
HPROCESS取得・VirtualAllocExで確保してRead/WriteProcessMemoryでアクセスという手はある。
用途が全く見えないが。
0637デフォルトの名無しさん2008/05/30(金) 17:15:30
HPROCESS
HPROCESS
HPROCESS
0638デフォルトの名無しさん2008/05/30(金) 20:17:10
ダイアログに追加したステータスバーにツールチップを表示したくてSBT_TOOLTIPSを指定して作成しました。
ディスプレイの水平解像度を超える長い文字列を表示するとツールチップがはみ出してしまいます。
これを折り返す方法はないのでしょうか。

SendDlgItemMessage(hDlg, IDC_STAT1, TTM_SETMAXTIPWIDTH, 0, (LPARAM)(int)320);

などとしても駄目でした。
0639デフォルトの名無しさん2008/05/30(金) 20:45:15
確かこうやる
RECT rc;
SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, 0);
SendMessage(hToolTip, TTM_SETMAXTIPWIDTH, 0, rc.right - rc.left);
0640デフォルトの名無しさん2008/05/30(金) 21:22:52
>>639
試してみましたが駄目でした。
ステータスバーに初めから備わったツールチップ機能を使用しているので、独自にツールチップをCreateWindowEx()している訳ではありません。

VB.NETやC#に例えるなら以下のプロパティを設定した場合とほぼ同じです。
これらの言語では特に何もしなくても折り返し表示されました。

ToolStatusStripLabel1.AutoToolTip = False
ToolStatusStripLabel1.ToolTipText = "表示する内容"
0641デフォルトの名無しさん2008/05/31(土) 01:37:42
VB.NETやC#の宣伝がしたいなら余所へどうぞ
そもそもステータスバーにそんな長いツールチップを出すのがUIとして間違い


とは言え
ToolStripとその派生コンポーネントって便利杉だよなー
まぁ.NET2.0のウリだったからな
0642デフォルトの名無しさん2008/05/31(土) 02:41:56
ToolStripをパクったクラスをC++で作ればいいじゃない
0643デフォルトの名無しさん2008/05/31(土) 02:51:43
ブビ厨がそんなの作れる訳ないじゃんw
0644デフォルトの名無しさん2008/05/31(土) 04:52:35
メニューのRebar化ってどうやってやるのかなと思って、
WTLのソース覗いてみたら、5000行近くあって吹いた。
0645デフォルトの名無しさん2008/05/31(土) 05:02:49
メニューのレバー化、俺も考えたけど、メニューをツールバー化しないと無理っぽいし。あきらめたわ
ツールバー化したら、メニュー文字間隔が変だし。どうにかしてメニューをレバーに突っ込めないかな
0646デフォルトの名無しさん2008/05/31(土) 05:14:30
だからレバーじゃなくてリバーだと(ry

つうかReBar化って何だよ
ReBarに入れるって意味ならそう言え
0647デフォルトの名無しさん2008/05/31(土) 05:20:58
>>644
WTLのはメニュー項目にアイコン付ける為のオーナードロー込みだからデカいだけ
純粋にCommandBarだけなら2000行ぐらいだ
0648↑2008/05/31(土) 05:22:46
最も無意味なカキコの例
0649デフォルトの名無しさん2008/05/31(土) 05:30:19
妄言吐くだけのキモイ奴が多すぎ
0650デフォルトの名無しさん2008/05/31(土) 05:32:54
>>646
Rebar化で十分通じるわマヌケ
0651デフォルトの名無しさん2008/05/31(土) 05:34:57
>>650
開き直るなマヌケ
0652デフォルトの名無しさん2008/05/31(土) 05:51:37
>>651
ごめんなさいマヌケ
0653デフォルトの名無しさん2008/05/31(土) 05:52:52
>>652
どういたしましてマヌケ
0654デフォルトの名無しさん2008/05/31(土) 05:53:39
煽りいれる奴は、かまってちゃんだから相手にしない方がいいよ
0655デフォルトの名無しさん2008/05/31(土) 05:56:44
わかってるよ
俺もかまってちゃんなんだよ
0656デフォルトの名無しさん2008/05/31(土) 06:03:17
かまってちゃんだから2ちゃんねらなんだよ
0657デフォルトの名無しさん2008/05/31(土) 09:21:20
>>645
漏れ、レバーはキライなんだよ。
0658デフォルトの名無しさん2008/05/31(土) 11:52:20
質問内容も馬鹿丸出しだし、レバーなんていう人にはロクなのがいないね。
0659デフォルトの名無しさん2008/05/31(土) 12:00:21
訳:かまってほしいな
0660デフォルトの名無しさん2008/05/31(土) 12:01:11
もっとかまってよー
0661デフォルトの名無しさん2008/05/31(土) 13:46:51
657は食い物のことを言ってるんだと思った。
0662デフォルトの名無しさん2008/05/31(土) 13:49:02
メニューの肝臓化
0663デフォルトの名無しさん2008/05/31(土) 13:50:56
キモ
0664デフォルトの名無しさん2008/05/31(土) 15:00:48
リバーでもレバーでもどっちでもいいよ。


そんなの見たことも聞いたこともないから。
なにみんな脳内妄想語ってるの?ってカンジ?みたいな〜。
0665デフォルトの名無しさん2008/05/31(土) 15:07:31
だって脳内妄想を語るスレじゃん?ってカンジ?みたいな〜。
0666デフォルトの名無しさん2008/05/31(土) 19:15:37
またレバーリバーの言葉遊びで100レス消費するつもりか?
頭悪い奴が増えたな
0667デフォルトの名無しさん2008/05/31(土) 19:18:13
ビルゲイツ氏ね
0668デフォルトの名無しさん2008/05/31(土) 19:58:34
不毛な論争で無駄なレスを消費しないよう今後は以下のカタカナ表記で統一しましょう。
(出来る限り英語の発音に合わせたため一般的なカタカナ語とは表記に違いがあります)

Common Control カムン ケントロウル

Button バテン
Static ステァティク
Edit エディト
ListBox リスト バクス
ComboBox カンボゥ バクス
ScrollBar スクロウル バー

Toolbar トゥール バー
Status Bar ステイテス バー
TrackBar トラェック バー
Progress Bar プラグレス バー
TreeView トゥリーヴュー
ListView リストヴュー
HotKey ハット キー
Header ヘダー
Tab テァブ
Animate エァネメイト
ToolTip トゥール ティプ
Month Picker マンス ピカー
DateTime Picker デイト タイム ピカー
ReBar リバー
UpDown アプ ダウン
Pager ペイヂア
Native Font ネイティヴ ファント
Chevron シェヴラン
ImageList イミヂ リスト
0669デフォルトの名無しさん2008/05/31(土) 20:04:27
いやいや違うな

Common Control カマン カンチョロォ
Button バトゥン

とかの方が正確だろ
0670デフォルトの名無しさん2008/05/31(土) 20:10:11
Button バラゥン

の方が正確かも
0671デフォルトの名無しさん2008/05/31(土) 20:10:52
不覚にもwww
0672デフォルトの名無しさん2008/05/31(土) 20:12:05
リソース外のbmpやjpeg等の画像を読み込むAPIがあれば教えてください
0673デフォルトの名無しさん2008/05/31(土) 20:13:39
GDI+
OleLoadPicture
IImgCtx
0674デフォルトの名無しさん2008/05/31(土) 23:28:22
>>671
ワロタwww
0675デフォルトの名無しさん2008/05/31(土) 23:41:50
>>669はイギリス、>>670はアメリカの英語に近い。
0676デフォルトの名無しさん2008/05/31(土) 23:52:32
もう発音記号でいいよ
0677デフォルトの名無しさん2008/06/01(日) 00:00:51
国際音声記号でいいよ
0678デフォルトの名無しさん2008/06/01(日) 00:04:42
発音する訳じゃないんだから、普通に英語表記でいいだろwww
0679デフォルトの名無しさん2008/06/01(日) 00:13:43
カマン コンチュロゥルについてなのですが、コマンドゥバァをSDKで使うサンプルないのでしょうか?
ネッツで調べても見つからなくて
0680デフォルトの名無しさん2008/06/01(日) 00:14:49
英語でおk
0681デフォルトの名無しさん2008/06/01(日) 00:35:59
×サンプル
○サンポゥ
0682デフォルトの名無しさん2008/06/01(日) 00:42:15
katakana yamete eigoni sitara?
0683デフォルトの名無しさん2008/06/01(日) 00:43:51
sorya ro-maji yanke
0684デフォルトの名無しさん2008/06/01(日) 00:45:24
muri iwanaide kudasai ><
0685デフォルトの名無しさん2008/06/01(日) 00:50:13
yominikuidesu ><
0686デフォルトの名無しさん2008/06/01(日) 00:52:25
omaera omoroi
0687デフォルトの名無しさん2008/06/01(日) 00:52:53
nanda kono nagare
0688デフォルトの名無しさん2008/06/01(日) 00:54:51
fudan doori jan
0689デフォルトの名無しさん2008/06/01(日) 02:58:41
GetProcessHeap tte NULL ga kaettekuruktoaruno?
0690デフォルトの名無しさん2008/06/01(日) 03:00:43
aruyo
06916892008/06/01(日) 03:02:16
>>690
kaette kitakoto naindaga
maa hinnpannnitukaumonojanaikara doudemoiika
0692デフォルトの名無しさん2008/06/01(日) 03:04:45
おまえらローマ字とか恥ずかしいからやめてくれ
0693デフォルトの名無しさん2008/06/01(日) 03:15:44
ryoukai
0694デフォルトの名無しさん2008/06/01(日) 04:28:20
>>692
Yes, sir.
0695デフォルトの名無しさん2008/06/01(日) 04:30:56
>>692
Okay.
0696デフォルトの名無しさん2008/06/01(日) 04:48:58
>>692
ming bai le
0697デフォルトの名無しさん2008/06/01(日) 10:10:52
>>692
daga kotowaru
0698デフォルトの名無しさん2008/06/01(日) 10:36:43
I don't give a FUCK!!
0699デフォルトの名無しさん2008/06/01(日) 10:54:51
nani konosure
0700デフォルトの名無しさん2008/06/01(日) 11:10:45
英語の出来ない人が似非英語を書いたりローマ字書いたりするだけの悲しいスレ
0701デフォルトの名無しさん2008/06/01(日) 11:42:38
>>696
nanigodetuka?
0702デフォルトの名無しさん2008/06/01(日) 11:47:50
detteiu
0703デフォルトの名無しさん2008/06/01(日) 11:56:07
>>701
[明白了] chugoku go desu yo
0704デフォルトの名無しさん2008/06/01(日) 12:01:51
bokuhacker!
0705デフォルトの名無しさん2008/06/01(日) 12:07:21
moudameda
0706デフォルトの名無しさん2008/06/01(日) 12:10:57
romaji no dekinai hito ga, ese-chuugokugo wo kaitari nihongo kaitari surudakeno kanashii sure.
0707デフォルトの名無しさん2008/06/01(日) 12:49:18
>>706
abusett teno's anu cincit unegun sent skipet?
0708デフォルトの名無しさん2008/06/01(日) 12:52:16
明日まで書込み禁止
0709デフォルトの名無しさん2008/06/01(日) 12:54:42
jichichuu otsu
0710デフォルトの名無しさん2008/06/01(日) 12:55:30
いい加減にしろ
0711デフォルトの名無しさん2008/06/01(日) 12:56:15
naniwo?
0712デフォルトの名無しさん2008/06/01(日) 12:57:47
業とらしく言うんじゃねーよクソカス
黙れないなら死ね
0713デフォルトの名無しさん2008/06/01(日) 12:59:48
hate?
0714デフォルトの名無しさん2008/06/01(日) 13:00:34
ahosuguru
0715デフォルトの名無しさん2008/06/01(日) 13:01:30
yaku : kamatte hoshiina
0716デフォルトの名無しさん2008/06/01(日) 13:02:31
いいから黙れ
ローマ字で会話するのを止めろ
0717デフォルトの名無しさん2008/06/01(日) 13:03:35
OK
0718デフォルトの名無しさん2008/06/01(日) 13:04:12
nande sonnnani hitoni meirei shitagaruno?
0719デフォルトの名無しさん2008/06/01(日) 13:05:35
souda, kaiwa suruna to iwaretakara, kaiwa wo naritatasenakereba iinda.
0720デフォルトの名無しさん2008/06/01(日) 13:05:51
スレと関係ない話題をいつまでも引っ張ってるからだクソガキ
0721デフォルトの名無しさん2008/06/01(日) 13:06:46
yaku : kamatte hoshiina
0722デフォルトの名無しさん2008/06/01(日) 13:08:10
超伸びてると思ったら何この流れ。
0723デフォルトの名無しさん2008/06/01(日) 13:09:14
日本語でおk
0724デフォルトの名無しさん2008/06/01(日) 13:09:16
irassyai
isshoni asobo-
0725デフォルトの名無しさん2008/06/01(日) 13:10:12
ここまで俺の自演。
0726デフォルトの名無しさん2008/06/01(日) 13:10:51
いいや俺だ。
0727デフォルトの名無しさん2008/06/01(日) 13:11:32
nani ka shitumon ga areba moto no nagare ni modoru yo
son-nani kakka sinai hou ga ii to omou na
0728デフォルトの名無しさん2008/06/01(日) 13:23:31
久しぶりに基地害を見た。
0729デフォルトの名無しさん2008/06/01(日) 13:24:05
毎日くれば毎日見られるよ
0730デフォルトの名無しさん2008/06/01(日) 13:26:19
これやってるの一人か二人なんだろうな。そろそろ通報しとくか。
0731デフォルトの名無しさん2008/06/01(日) 13:26:44
なんでWin32APIスレだけこんなに荒れるの?
0732デフォルトの名無しさん2008/06/01(日) 13:33:38
普段、話についてこれないやつが初めて自分のローマ字を披露できたんだ。見守ってやれ
0733デフォルトの名無しさん2008/06/01(日) 13:36:56
つーかなんでこの板IDないの?
0734デフォルトの名無しさん2008/06/01(日) 13:59:07
そのように設定していないから。
0735デフォルトの名無しさん2008/06/01(日) 14:10:52
今日はここに沸いてたのか
0736デフォルトの名無しさん2008/06/01(日) 14:38:34
毎日ここに沸いてるよ
07376822008/06/01(日) 15:43:35
こんな事になるとは思わなかった
スマソ
0738デフォルトの名無しさん2008/06/01(日) 16:00:04
ごみレスだらけだよ
0739デフォルトの名無しさん2008/06/01(日) 16:07:37
>>737
二度と来るなカス
0740デフォルトの名無しさん2008/06/01(日) 16:10:59
>>739
ごめんねカス
0741デフォルトの名無しさん2008/06/01(日) 16:41:05
>>740
win32APIスレに居て欲しいタイプじゃないから、別スレに移動してくれませんか?
0742デフォルトの名無しさん2008/06/01(日) 16:44:35
>>737
言葉の揚げ足取ってうれしがる奴は邪魔。
もうこないでほしい
0743デフォルトの名無しさん2008/06/01(日) 16:45:22
あなた好みのタイプなんて知ったことじゃありません
0744デフォルトの名無しさん2008/06/01(日) 16:51:33
相手にされてうれしがってるだけなんだから、もう相手するのやめようよ。
0745デフォルトの名無しさん2008/06/01(日) 16:52:41
↑一番相手にするタイプ
0746デフォルトの名無しさん2008/06/01(日) 17:00:21
683から736は俺じゃないんだがな
0747デフォルトの名無しさん2008/06/01(日) 17:03:45
ほら早速。
0748デフォルトの名無しさん2008/06/01(日) 17:07:59
DVDとかCDをフォーマットするには何て関数使えばいい?
0749デフォルトの名無しさん2008/06/01(日) 17:16:13
見てる側からすれば変な発言にノッタお前らも邪魔なんだけどな
煽る奴も邪魔

スルー覚えろよ
0750デフォルトの名無しさん2008/06/01(日) 17:22:36
>スルー覚えろよ
そういうあなたがスルーを覚えられていないようなので
スルーを覚えるつもりはありません。
0751デフォルトの名無しさん2008/06/01(日) 17:23:53
} while (1);
0752デフォルトの名無しさん2008/06/01(日) 17:28:40
do { が見つからないんだが
0753デフォルトの名無しさん2008/06/01(日) 17:31:18
} while (1);
0754デフォルトの名無しさん2008/06/01(日) 17:34:44
質問があるんですが、なんか変な流れみたいなので自重しときます。
0755デフォルトの名無しさん2008/06/01(日) 17:35:23
goto >>1000;
0756デフォルトの名無しさん2008/06/01(日) 17:36:14
同じく質問があるんですが、なんか変な流れみたいなので自重しときます。
0757デフォルトの名無しさん2008/06/01(日) 17:36:54
コマンドバーのSDKサンプルあるとこ教えてください
海外サイトでもおk
0758デフォルトの名無しさん2008/06/01(日) 17:40:56
>>757
いい加減しつこい

MSDNに説明があるだろうが
あれ読んで分からなかったら猫の糞サンプルでも見て勝手にやってろ
0759デフォルトの名無しさん2008/06/01(日) 17:51:50
>>738,739-740
ワロスwwwwwwwwwwwww
0760デフォルトの名無しさん2008/06/01(日) 18:33:11
スルーしろよ ←今まで我慢してた奴
そういうお前がな ←顔真っ赤な奴
↑お前もな ←呆れた奴

無限ループになるし終われw

0761デフォルトの名無しさん2008/06/01(日) 18:35:51
この手の無限ループは荒らしてる基地外が飽きて沈静化するまで終わらないよ
0762デフォルトの名無しさん2008/06/01(日) 19:48:44
前から言われてるけどID制して欲しいですね。
0763デフォルトの名無しさん2008/06/01(日) 20:13:32
どうせID変えまくって荒らすだけだろ
0764デフォルトの名無しさん2008/06/01(日) 21:07:05
荒らす奴はIDの変え方知らんと思うが
0765デフォルトの名無しさん2008/06/01(日) 21:11:20
ほとんどはID変えてまではしないよ、特にこの板ではありえないそう
同じIDのままならNGで終了だし
0766デフォルトの名無しさん2008/06/01(日) 21:14:47
質問とか答えるときもあった方が便利そうだけどな
0767デフォルトの名無しさん2008/06/01(日) 21:18:03
ハンドルっていうのはポインタと思っとけばいいですか
0768デフォルトの名無しさん2008/06/01(日) 21:26:46
よくないです
0769デフォルトの名無しさん2008/06/01(日) 21:41:04
ポインタのポインタに近いかも
0770デフォルトの名無しさん2008/06/01(日) 21:47:34
質問です
掲示板とかによくあるIDの変え方を教えてください
0771デフォルトの名無しさん2008/06/01(日) 22:11:57
名前欄に fushianasan といれる
0772proxy10.microsoft.com2008/06/01(日) 22:22:49
これでいいですか?
0773デフォルトの名無しさん2008/06/01(日) 22:29:53
今すごい自演を見た
0774デフォルトの名無しさん2008/06/01(日) 22:44:40
fusianasanの場合は文字がもう少し細くなるからバレバレ
0775デフォルトの名無しさん2008/06/01(日) 22:46:46
>>767
ハンドルというのは、中身を意識してはいけないもの。
操作対象のオブジェクトを一意に識別する単なるID。
0776デフォルトの名無しさん2008/06/01(日) 22:50:23
ハンドル
インターネットでいうとIPアドレス
学校でいうと何年何組何番とか
0777デフォルトの名無しさん2008/06/01(日) 22:53:09
>>776
何年何組何番は時とともに変化するから学籍番号のほうが的確かと。
0778デフォルトの名無しさん2008/06/01(日) 23:03:13
ハンドルでわからないアホはプログラム作らなくていいよ
0779デフォルトの名無しさん2008/06/01(日) 23:05:57
車に乗るとき握るものですね、わかります
0780デフォルトの名無しさん2008/06/01(日) 23:08:02
50セントじゃねーの?
0781デフォルトの名無しさん2008/06/01(日) 23:10:59
ステアリングじゃないの?
0782デフォルトの名無しさん2008/06/01(日) 23:15:35
はいはいそこまで
0783デフォルトの名無しさん2008/06/01(日) 23:16:58
object identifierとでも言っておけばいいのに
何でハンドルって言うようになったんだ。
0784デフォルトの名無しさん2008/06/01(日) 23:20:29
なんで初心者って、そういうどうでもいい所が気になるのかねぇ
「適当な固有の値」ぐらいに思ってればいいじゃないの
0785デフォルトの名無しさん2008/06/01(日) 23:21:25
ただの興味本位です。スレ違い失敬。
0786デフォルトの名無しさん2008/06/01(日) 23:35:42
新人に聞かれて答えられなかったらカッコ悪いじゃないか
0787デフォルトの名無しさん2008/06/01(日) 23:37:16
お前に聞く新人なんて誰もいないから心配しなくていいよ
0788デフォルトの名無しさん2008/06/02(月) 00:55:00
いいぞお前ら
もっとやれ
0789デフォルトの名無しさん2008/06/02(月) 01:32:49
とても質問できるような環境じゃないな・・・
0790デフォルトの名無しさん2008/06/02(月) 01:39:27
質問です
基地外を消去するAPIを教えてください
0791デフォルトの名無しさん2008/06/02(月) 02:14:14
( ´∀`)<ぬるぽ
0792デフォルトの名無しさん2008/06/02(月) 02:42:57
ビットマップを直接弄りたいので、
今までCreateCompatibleBitmapで書いていたコードをCreateDIBSectionで作り変えたら、
今まで精々数%しかCPU食っていなかったのに、数十%もCPUを食うようになってしまいました。
CreateDIBSectionで吐き出されたHBITMAPを使って描画するのは、重い処理なのでしょうか。
教えてください。
0793デフォルトの名無しさん2008/06/02(月) 03:07:10
DIBとDDBの違いについて調べろ
0794デフォルトの名無しさん2008/06/02(月) 03:29:45
今更Win32APIw
0795デフォルトの名無しさん2008/06/02(月) 03:48:40
今でもWin32APIw
0796デフォルトの名無しさん2008/06/02(月) 03:56:34
今こそWin32APIw
0797デフォルトの名無しさん2008/06/02(月) 04:53:14
荒らしはwin32API質問箱をなくそうとしてるのか。ひどいな
0798デフォルトの名無しさん2008/06/02(月) 06:16:25
ひどいね
0799デフォルトの名無しさん2008/06/02(月) 07:13:21
>>792
CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
CreateDIBSectionはシステムメモリに確保してる
あとは調べれ
0800デフォルトの名無しさん2008/06/02(月) 07:17:22
VISTA未満の話だけどね
0801デフォルトの名無しさん2008/06/02(月) 08:08:37
>CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
そういう嘘を堂々と書かないように
0802デフォルトの名無しさん2008/06/02(月) 08:22:21
訳:かまってほしいな
0803デフォルトの名無しさん2008/06/02(月) 10:38:12
XP以前でVRAM上に確保されるかどうかはドライバ依存
Vista以降ではドライバに依存しなくなった
0804デフォルトの名無しさん2008/06/02(月) 12:11:21
ATI系のボードはXPでもそういうの遅くなったんだっけ?
0805デフォルトの名無しさん2008/06/02(月) 12:15:27
どうでもいいよ

DDB → VRAMに確保
DIB → システムメモリに確保

ATIとかVistaとかそんな少数派は無視でおk
0806デフォルトの名無しさん2008/06/02(月) 14:22:18
やっぱりIDが欲しいな
0807デフォルトの名無しさん2008/06/02(月) 14:45:57
知らないならレスしないでください。
0808デフォルトの名無しさん2008/06/02(月) 15:11:38
知っているのに知らん振り〜
0809デフォルトの名無しさん2008/06/02(月) 15:24:31
ID欲しいというのは大概自演荒らし本人
セキュ板がまさにそれ
0810デフォルトの名無しさん2008/06/02(月) 15:28:24
画面上の任意の色(白)を変える方法ってないですか?
試しに半透明ウィンドウを被せてみたら文字がかすんで使えません。
背景色を変更できないページやフリーソフトはまぶしくてしょうがないです
0811デフォルトの名無しさん2008/06/02(月) 15:30:08
説得力のない大概だな
0812デフォルトの名無しさん2008/06/02(月) 15:32:59
モニターのコントラストとか輝度を調整してみては
0813デフォルトの名無しさん2008/06/02(月) 15:42:41
>背景色を変更できないページ
つ ユーザーCSS

>背景色を変更できないフリーソフト
配色の設定(COLOR_WINDOWとか)に基づいていない糞フトなんて
作者に文句言って修正してもらうか使わなければいいのでは

ってか、最近の液晶って輝度が高すぎなんだよな
モニターの設定で最も暗くしてもまだ眩しかったりするし
0814デフォルトの名無しさん2008/06/02(月) 15:50:27
>>813
いいえ、液晶は発光しませんから。
バックライトが眩しいのは、劣化で暗くなることを想定して明る過ぎる光源を使っているからですね。
08158102008/06/02(月) 16:12:58
>>812
まぶしくない程度に下げると他が暗くなりすぎたりとなかなか難しいですが
ちょっと調整してみました。どうもでした
>>813
一応設定はしているんですが、変更を受け付けないページやpdfなんかが
目下最大の敵です。
0816デフォルトの名無しさん2008/06/02(月) 17:21:02
暗くすると色諧調が失われる糞モニタなら捨てたほうがいい。
その辺でグレースケールでも拾ってきて調べてみるといい。
0817デフォルトの名無しさん2008/06/02(月) 17:24:45
↑話を理解してない馬鹿
0818デフォルトの名無しさん2008/06/02(月) 17:47:01
>>816
ハード板かCG板にお帰りください
0819デフォルトの名無しさん2008/06/02(月) 18:58:15
知らないならレスするなよクズ
0820デフォルトの名無しさん2008/06/02(月) 19:03:03
>>816
>>819
0821デフォルトの名無しさん2008/06/02(月) 23:19:19
>>810
まさがグレーの半透明被せてないか?
たぶん純黒で不透明度低めのウィンドウを被せれば文字もくっきりするよ
08228102008/06/03(火) 00:18:58
>>821
はい、グレーのやつでした。さっそく試してみます。
やはり半透明ウィンドウでやるのがよさげなようですね。
ありがとうございました。そしてお騒がせしました
0823デフォルトの名無しさん2008/06/03(火) 00:34:07
ディスプレイドライバに輝度やガンマ調整機能とか無いの?
俺のPCは少数派(笑)のATIだけどドライバの設定でそういう調節ができる。
0824デフォルトの名無しさん2008/06/03(火) 09:47:34
SendMessageとかでメッセージ送れますけど
必ず届くのでしょうか?・・・不安で不安で・・・
共有メモリとかファイル化して渡した方が良いでしょうか?
0825デフォルトの名無しさん2008/06/03(火) 09:53:59
何を渡したいかで決めようぜ
0826デフォルトの名無しさん2008/06/03(火) 09:56:34
ack貰えばいいじゃん
0827デフォルトの名無しさん2008/06/03(火) 11:56:17
SendMessageだと相手のメッセージループに割り込みが入るから大体届くんじゃねーの
ハングしてるスレッドにSendMessage投げてごらん?
投げた側もハングするから。
0828デフォルトの名無しさん2008/06/03(火) 13:43:34
じゃあこうしよう
お前たちのような蛆虫はレスするなってことで
0829デフォルトの名無しさん2008/06/03(火) 14:10:08
SendMessageCallbackやSendMessageTimeoutを使えば対象ウィンドウが応答したかは解るよ。
エラー時にはちゃんとGetLastErrorの値も見るように。
0830デフォルトの名無しさん2008/06/03(火) 18:18:29
HWND hwnd = FindWindow( ... );
// この間にhwndがDestroyされると届かなくなるので必ず届くなんて不可能
SendMessage( hwnd, ... );

昔9x使ってたら、DestroyしたHWNDが割と近い時間で他のウィンドウに使用されて困ったことがあったけど
NTだと確か上位16ビットが再利用カウンタだからそういう衝突は無いかな
0831デフォルトの名無しさん2008/06/03(火) 18:31:58
初めて聞いたぞそれ
0832デフォルトの名無しさん2008/06/03(火) 19:26:56
あっそ
0833デフォルトの名無しさん2008/06/03(火) 19:50:47
でっていうwwwwwwwwwwww
0834デフォルトの名無しさん2008/06/03(火) 21:30:08
SendMessageした先からSendMessageで返事を返してもらう、って出来る?
0835デフォルトの名無しさん2008/06/03(火) 22:18:24
スレッドが違う前提の話だよな。
SendMessageをもらって、ウインドウプロシージャが走ってから
そいつが返事をSendMessageするまでの間に、
ReplyMessageしとけばいけるんでない。
0836デフォルトの名無しさん2008/06/03(火) 22:38:11
SendMessageを投げあってデッドロック!!!マジカッコイイ!!!
0837デフォルトの名無しさん2008/06/03(火) 22:39:32
SendMessageへの返事は返値でしなさいよw
0838デフォルトの名無しさん2008/06/03(火) 22:59:01
SendMessageは同期させたいときに使う。
0839デフォルトの名無しさん2008/06/03(火) 23:17:41
>>149
>フォーカスを失っても青のままにしたい

subclass化して WM_KILLFOCUS をブロック
0840デフォルトの名無しさん2008/06/04(水) 00:01:07
>>830>>835
大丈夫。SendMessageの戻り待ちで止まっているスレッドのウィンドウへSendMessageが送られると、
Windowsが直接ウィンドウプロシージャを呼び出す。
Advanced Windows辺りに書いてあったはず。
0841デフォルトの名無しさん2008/06/04(水) 03:47:02
質問です。
BitBltでビットマップの転送を行うとして、、
転送先のビットマップの大きさの範囲を超えるように引数を指定した場合、
この動作の定義はどうなっているのでしょうか?
はみ出たところにあったデータが壊れる心配はないのでしょうか?
0842デフォルトの名無しさん2008/06/04(水) 04:03:42
>>841
GDIはそういう心配する必要なし
08438412008/06/04(水) 04:29:13
>>842
これで心置きなく転送できます。
ありがとうございました。
0844デフォルトの名無しさん2008/06/04(水) 16:32:06
簡易的なタブエディタを作っているのですが
テキストは開いた順に配列に入れて、たとえば2番目のタブを選択したら
配列の2番目から取り出して表示するという方法でいいんですか?
0845デフォルトの名無しさん2008/06/04(水) 16:36:41
そんなもん貴方がどう実装したいのかによるでしょ
メモリ食ってもいいのか、なるべく食わない方がいいのかとか

つかAPI関係ないだろ
0846デフォルトの名無しさん2008/06/04(水) 16:36:52
よくわからんけどいいよ
0847デフォルトの名無しさん2008/06/04(水) 16:44:40
タブエディタが何か分からない
0848デフォルトの名無しさん2008/06/04(水) 16:46:36
>>847
しね
0849デフォルトの名無しさん2008/06/04(水) 16:49:52
タブ譜のエディタですね、分かります
0850デフォルトの名無しさん2008/06/04(水) 16:55:55
つまんね
0851デフォルトの名無しさん2008/06/04(水) 16:58:40
訳:かまってほしいな
08528442008/06/04(水) 17:00:22
>>845
この方法だとメモリを食いそうなんでこれでいいのか、
他に良いスタンダードな方法があるのかと疑問に思ったので。
タブとかeditコントロールはAPIなのでここで質問してみました

>>846
よさそうならこれで作ってみます。どうもです
0853デフォルトの名無しさん2008/06/04(水) 20:34:54
Win32APIでエディタを作っています.
ステータスバーに現在のキャレット位置を表示するために
下記のコードを書いてみたのですが,列の表示が上手くできません.
何か良い方法をご存知でしたら教えて下さい. m(_ _)m

caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, pt.y));
pt.y = HIWORD(caretPos) + 1;
caretPos = (DWORD)SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM(pt.x, 0));
pt.x = LOWORD(caretPos) + 1;
wsprintf(str, " %d 行, %d 列", pt.y, pt.x);
SendMessage(hStatusbar, SB_SETTEXT, 1, (LPARAM)str);
0854デフォルトの名無しさん2008/06/04(水) 20:57:59
>>852
メモリの使用量なんて作ってみたらわかることだ。
初心者なら、作る前に答えを欲しがらずに、作って考えることだ。
0855デフォルトの名無しさん2008/06/04(水) 22:03:32
>>854
偉そうに上級者面するな
0856デフォルトの名無しさん2008/06/04(水) 22:12:23
そいつゲイツだぞ
0857デフォルトの名無しさん2008/06/04(水) 22:39:06
だから?
0858デフォルトの名無しさん2008/06/04(水) 22:41:49
お布施しろ
0859デフォルトの名無しさん2008/06/04(水) 23:20:18
どうやって?
PayPalで送金するのか?w
0860デフォルトの名無しさん2008/06/05(木) 00:11:05
とりあえず、VistaのUltimateを10本ほど。
0861デフォルトの名無しさん2008/06/05(木) 01:42:29
ケチケチすんなよ
MSDN Premium Subscriptionをパッケージで50本くらい買えばおk
0862デフォルトの名無しさん2008/06/05(木) 02:25:19
>>860
Vistaなんてイラネーヨ

>>861
おk
明日買ってくる
0863デフォルトの名無しさん2008/06/05(木) 19:14:29
>>853
キャレット位置ならEM_GETSELから調べ始めればいいんじゃね?
0864いのぶー2008/06/05(木) 22:58:59
 ペイントを操作して、絵を描こうとしているのですが、ウィンドウをポップアップできてもドローイングエリアを
クリックできません。
C#の板でスルーされたのでやってきました、お願いいたします、教えていただけませんでしょうか? 。
[DllImport("USER32.DLL")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr hWnd, IntPtr hwndChildAfter, String lpszClass, String lpszWindow);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, Int32 wParam, Int32 lParam);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern bool GetWindowRect(IntPtr hWnd, ref RECT lpRect);
[StructLayout(LayoutKind.Sequential)]
public struct RECT {
public int left;
public int top;
public int right;
public int bottom;
}
const uint WM_LBUTTONDOWN = 0x201;
const uint WM_LBUTTONUP = 0x202;

public void RemotePaint() {
IntPtr hWnd = FindWindow("MSPaintApp", null);
SetForegroundWindow(hWnd);
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
RECT winRect = new RECT();
GetWindowRect(hWnd, ref winRect);
PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);
}
0865デフォルトの名無しさん2008/06/05(木) 23:03:24
>>864
PostMessageでDOWNした後UPする前にスリープを入れる
0866いのぶー2008/06/05(木) 23:16:45
早速のレスをありがとうございます。

Sleepを入れてみたんですが、点を打ってくれませんでした。 (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, winRect.right - winRect.left, winRect.bottom - winRect.top);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, winRect.right - winRect.left, winRect.bottom - winRect.top);
0867デフォルトの名無しさん2008/06/05(木) 23:53:40
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

C丼はあまり詳しくないが、この辺のAPI宣言って合ってるのか?
Win32のBOOLとC++や.NET系のboolって別物のはずだが
0868デフォルトの名無しさん2008/06/05(木) 23:58:22
それはあってるよ。
C#のboolは1バイトだけど、Platform呼び出しの際は、
特に指定しなければデフォルトで4バイトBOOLにマーシャリングされる。
0869いのぶー2008/06/06(金) 00:01:48
一応、ペイントはアクティブになってくれています。

この辺りとかでは、
public static extern bool SetForegroundWindow(IntPtr hWnd);
って書いたサンプルがあったので、それを参考にしています。

ttp://www.atmarkit.co.jp/fdotnet/dotnettips/151winshow/winshow.html
0870デフォルトの名無しさん2008/06/06(金) 00:06:43
>>868
へ〜そうなんだ
VB6とかBooleanじゃなくてLongにする必要があったのに、便利な時代になったなぁ
0871デフォルトの名無しさん2008/06/06(金) 00:21:52
クライアント領域の右下隅をクリックしたいように見えるけど、
GetWindowRectの結果使ったらボーダーの分だけはみ出さないかい?
そもそもその右下の点に画像はあるのか
0872いのぶー2008/06/06(金) 03:49:20
RECTを取る前に
hWnd = FindWindowEx(hWnd, IntPtr.Zero, "AfxFrameOrView42u", null);
で、hWndにドローイングエリアのウィンドウハンドルをセットしなおしていますが、
それではダメでしょうか?

hWndを使いまわしていて、汚くてごめんなさい。
0873いのぶー2008/06/06(金) 03:55:58
追伸ですが、以下のように、座標を固定で指定してやってもダメでした (T_T)

PostMessage(hWnd, WM_LBUTTONDOWN, 100, 100);
System.Threading.Thread.Sleep(500);
PostMessage(hWnd, WM_LBUTTONUP, 100, 100);


0874デフォルトの名無しさん2008/06/06(金) 06:26:02
ふつーSendInputとか使う。
0875デフォルトの名無しさん2008/06/06(金) 07:13:29
SendInputってフォアグラウンドじゃないとだめじゃなかったっけ
08768532008/06/06(金) 07:37:22
>>863

回答ありがとうございます.
EM_GETSEL は有力ですよね.
実は自分も最初はそれを考えて,

pt.x = LOWORD(SendMessage(hEdit , EM_GETSEL , NULL , NULL));

として列の位置を求めようとしていたのですが,

↓(1行,1列)
1234\r\n
6
↑(2行,1列)になってほしいけど,
実際には(2行,6列)... ORZ

という結果になってハマってしまったので,
ここで質問してみました.
結構メジャーな目的なので,どなたかご存知の方が
いらっしゃいましたら良い方法をお願いします. m(_ _)m
後の人のためにも.
(できればWin32APIで,テキスト全体をバッファに入れて改行を数えるとかは
最後の手段かなと思っています.)
08778532008/06/06(金) 08:11:01
解決しました.

offset = LOWORD(SendMessage(hEdit, EM_CHARFROMPOS, 0, MAKELPARAM((WORD)0, pixPt.y)));

を設定して引いてやるだけでした.
前にこの方法も試していたのですが,pix での位置と char型 での位置が
きちんと区別されていなかったために失敗していました.
お騒がせしました.
0878デフォルトの名無しさん2008/06/06(金) 14:45:22
(WORD)0

なんでこんな書き方するのか分からん
0879デフォルトの名無しさん2008/06/06(金) 15:22:28
分からないならレスするなつってるだろ?
0880デフォルトの名無しさん2008/06/06(金) 15:38:14
すいません
0881デフォルトの名無しさん2008/06/06(金) 15:41:37
どんまい
0882デフォルトの名無しさん2008/06/06(金) 16:14:32
吸いませんじゃなくてすみませんだろ?
0883デフォルトの名無しさん2008/06/06(金) 16:17:57
吸わないよ
0884デフォルトの名無しさん2008/06/06(金) 16:23:21
(WORD)0

なんでこんな書き方するのか分からん
0885デフォルトの名無しさん2008/06/06(金) 16:25:28
break;
0886デフォルトの名無しさん2008/06/06(金) 16:59:07
訳:かまってほしいな
0887いのぶー2008/06/06(金) 22:01:53
皆様、ありがとうございます。

sendInputというキーワードのおかげで、下記のページを見つけることができました。
http://homepage3.nifty.com/midori_no_bike/CS/index.html?userIO.268

 おかげで、sendInputを使って、点が打てました。
これを取っ掛かりになんとかやってみたいと思います。
0888デフォルトの名無しさん2008/06/06(金) 23:10:33
>>872
GetClientRectでとれるのが「クライアント領域」、早い話がウィンドウ内部の領域
マウスイベントで指定する座標系はこれが基準。
GetWindowRectでとれるのは「ウィンドウ領域」、境界線とかも含んでいるので
一般にクライアント領域より大きい。
ちなみにRectで指定する座標は「右と下が1大きい」ものなので(理由は省略)
>866の計算だと、GetClientRectの結果使ったとしてもやはり1ドットはみだす。
以上参考までに。
0889いのぶー2008/06/06(金) 23:31:46
888さん、ありがとうございます。(ゾロ目ですね・・・)

GetClientRectでとれる「クライアント領域」が基本とのことなのですが、
GetWindowRectでドローイングエリアの座標領域を取って、Cursorを動かして、
SendInputクリックで左ボタンダウンとアップイベントを作ってクリックしているのですが、
「クライアント領域」を使った、いい方法があるのでしょうか?

当方、「クライアント領域」の有効な使い方が解っていないので、
よろしければご教授願えませんでしょうか。教えていただけると
うれしいのですが・・・
0890デフォルトの名無しさん2008/06/07(土) 00:16:53
>>889
有効とかどうとかじゃなくて、基本的な区別がわかってない
君がいう「ドローイングエリアの座標領域」の外側と内側とか
座標系の基準の違いとか色々ごっちゃにしてるって話
ここで説明できるような内容じゃないので入門書読め
0891いのぶー2008/06/07(土) 00:25:15
別に、原点が画面の左上か、ウィンドウ(又はウィジェット)の左上というだけの話では?
0892いのぶー2008/06/07(土) 00:31:04
こんな風に書いているので、問題があったら知りたいなぁという以上の意味はないので・・・

// ドローイングエリアの真ん中へ移動
Cursor.Position = new Point((winRect.left + winRect.right) / 2, (winRect.top + winRect.bottom) / 2);
//クリック
INPUT[] input = new INPUT[2]; // 計2イベントを格納
input[0].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(2, input, Marshal.SizeOf(input[0]));
0893いのぶー2008/06/07(土) 00:46:46
追伸、

466の記述時点では、Rectで何の値が取れるか分かっていなかったのですが、
デバッグプリントして、理解して、887の時点では、なんとか好きな所に点が打てるように
なっていました。
(おそらく、入れ違いになってしまったのでは・・・と思っています。)

 ただ、この場合に、ウィンドウ内の座標を使って何ができるのかが知りたいのです。
 この場合、テンプレの本を薦められても対象が高域過ぎるのでお勧めのURLや書籍
でもあれば、明日にでも探しに行きたいと思います。
0894デフォルトの名無しさん2008/06/07(土) 02:01:28
いい加減うざいです><
Win32スレなのか.NETスレなのか分かりません><
0895デフォルトの名無しさん2008/06/07(土) 02:16:31
ここってWin32APIスレですよね><
言語が.NETだろうとWin32の話なら全然構わないと思います><
0896デフォルトの名無しさん2008/06/07(土) 03:27:14
たとえば、スレッドの中にスレッド作った場合の注意点ってある?
開放する順番以外に。windowsスレッドって、ExitThread(true)で
自動で開放されたりしない?ハンドルクローズしないとダメ?
0897デフォルトの名無しさん2008/06/07(土) 03:45:01
windowsスレッドって何だよ
windows板なら分かるが
0898デフォルトの名無しさん2008/06/07(土) 04:47:09
>893
何ができるかとかいう問題じゃなくて
┏━┓
┗━┛
この枠の内側測るのと外側測るのじゃ大きさが違うだろ?
内側から測れって言われてるのに外側から測った数字使ってたりしたら
細かいところで計算が合わないからちゃんと意識しろってこと。
08998962008/06/07(土) 06:05:37
>>897
Linuxのプロセスみたいにゾンビプロセスが残るのかとか
windows のスレッドはexitThread(true)でスレッド開放されるのかとか
0900デフォルトの名無しさん2008/06/07(土) 06:41:38
スレッド自身がExitThreadを呼び出すか、スレッドの関数から戻ればスレッドは止まる。
どのスレッドによって作られたか、などということは一切関係ない。
また、そのスレッドを参照しているすべてのスレッドハンドルをCloseHandleしなければならない。
スレッドハンドルを閉じていないということは、まだ使うということだから。
スレッドがシグナル状態になっているかどうかを見るなど。

pthreadだって、明示的にpthread_joinかpthread_detachしなきゃならんだろ。
0901いのぶー2008/06/07(土) 06:56:28
> 898

 取れる数字に対する注意点を教えていただいたと理解しました。
894さんとか、うざがってる方もいることですので、この話題を終了したいと思います。

ありがとうございました。
0902デフォルトの名無しさん2008/06/07(土) 08:06:34
>>899
> ExitThread(true)
こんな事を書いてるということはMSDN読んでないのがバレバレ
0903デフォルトの名無しさん2008/06/07(土) 14:06:32
おいおい・・
そんなこと言ったら、ここの質問全てmsdn嫁で終わるw
0904デフォルトの名無しさん2008/06/07(土) 14:25:25
ちょっと質問ですが、
//tmpgenc.pegasys-inc.com/ja/download/tp.html
TMPGEncの支援ツールを作りたいと思ってます。
主に自動で次々と縁故してくれるように支援するツールです。
そこで、まずファイルをドロップしてファイル名を渡すところですが、ここはどんなAPIを使ってドロップしたことにしてやればよろしいでしょうか?
0905デフォルトの名無しさん2008/06/07(土) 14:27:01
はぁ?
0906デフォルトの名無しさん2008/06/07(土) 14:29:15
>>905
そのTMGENCの画面にファイルをドロップするところを、他のアプリから操りたいのです・・・。
0907デフォルトの名無しさん2008/06/07(土) 14:47:12
はぁ?
0908デフォルトの名無しさん2008/06/07(土) 14:47:55
知らないならレスしないでください
09099042008/06/07(土) 14:50:36
908は私の発言じゃないですよ。

わかりにくいですか?
0910デフォルトの名無しさん2008/06/07(土) 14:53:40
まったく分からない
0911デフォルトの名無しさん2008/06/07(土) 14:54:30
初心者スレ池
0912デフォルトの名無しさん2008/06/07(土) 14:55:06
910は私の発言じゃないですよ。

わかりにくいですか?
0913デフォルトの名無しさん2008/06/07(土) 15:10:01
TMPEGの画面ってのがよく分からんが
画面へのドロップ動作をさせたいならOLE D&Dとマウス動作のシミュレートで良いんじゃね

コマンドライン使えるならそっちの方がいいと思うけど
0914デフォルトの名無しさん2008/06/07(土) 15:12:18
お前は何を言ってるんだ
0915デフォルトの名無しさん2008/06/07(土) 15:12:52
LoadLibraryEx で LOAD_LIBRARY_AS_DATAFILE や LOAD_LIBRARY_AS_IMAGE_RESOURCE を
指定してロードした特定のモジュールのファイル名を、GetModuleFileName で取得できません。
(GetModuleFileName の戻り値は0だが、GetLastError の戻り値は ERROR_SUCCESS)

具体的に言うと、下のページの mxdrv.dll が該当します。
ttp://gorry.haun.org/mx/

どういったケースでそれが起こるのか、誰かおわかりになりませんか。
0916デフォルトの名無しさん2008/06/07(土) 15:27:25
>>913
レスありがと。

ただOLE D&Dって初見なんだけど、これってつまりAPIでファイルを対象のウィンドウにドロップするやつはないってことですか?
09179162008/06/07(土) 15:38:46

自己解決しました、ありがとうございます
0918デフォルトの名無しさん2008/06/07(土) 16:21:57
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?
0919デフォルトの名無しさん2008/06/07(土) 16:28:20

質問です。

対象のアプリのボタン(OKと書かれたボタン)が操作不可かどうかを判断したいのですが、
なにか手はありますでしょうか?
0920デフォルトの名無しさん2008/06/07(土) 16:29:48
フックふっくにしてやんよ
0921デフォルトの名無しさん2008/06/07(土) 16:37:46
IsWindowEnabledでいいんじゃね
0922デフォルトの名無しさん2008/06/07(土) 17:07:40
>>918
Imm〜関数群などを使う。
0923デフォルトの名無しさん2008/06/07(土) 17:16:07
IMMの次はTSFだぜ
0924デフォルトの名無しさん2008/06/07(土) 18:31:42
>>923
> TSFとは、異性への性転換を扱うフィクションのジャンルにおける略称である。
ttp://ja.wikipedia.org/wiki/TSF

???
0925デフォルトの名無しさん2008/06/07(土) 18:38:05
ストリートファイターズ……
0926デフォルトの名無しさん2008/06/07(土) 18:51:28
アルファベット3文字の略称って大抵は既に何かに使われてるよなw
0927デフォルトの名無しさん2008/06/07(土) 19:26:35
_beginthreadexでつくったスレッドで現在稼動しているもののIDかなんかを取得するのは
どうすればいいですか?Thread.currentThread()みたいなやつ
0928デフォルトの名無しさん2008/06/07(土) 19:33:05
GetCurrentThread
GetCurrentThreadId
0929デフォルトの名無しさん2008/06/07(土) 19:33:19
IDってどういう意味だ?

スレッドハンドルの事を言っているなら、_beginthreadexの戻り値がまさにそれだ。
必要ないなら、ちゃんとCloseHandleしておけ。

スレッドIDの事を言っているのなら、スレッドハンドルに対してGetThreadIdを呼べ。
0930デフォルトの名無しさん2008/06/07(土) 19:37:06
>>927
GetCurrentThread
09319182008/06/07(土) 19:44:58
>>922,923
感謝する。
とりあえず今回はTSFの方向で考えてみようと思う。
0932デフォルトの名無しさん2008/06/07(土) 19:49:55
>>931
え……?性転換ネタでいくの?キョン子はやめたほうが……
09339312008/06/07(土) 20:05:29
>>932
TextServicesFlameworkですよ(汗
...とマジレスしてみる。
0934デフォルトの名無しさん2008/06/07(土) 20:08:52
>>928-930あざーした
0935デフォルトの名無しさん2008/06/07(土) 20:31:21
>>933
Text Services Frameworkですよとマジレス
0936デフォルトの名無しさん2008/06/07(土) 20:37:32
Flamework
燃える仕事か。
0937デフォルトの名無しさん2008/06/07(土) 20:40:20
>>934
一応言っておくと、GetCurrentThreadで得られるのは擬似ハンドルで
自分自身のスレッドを示す事にしか使えないからな。
09389332008/06/07(土) 20:46:31
>>935,936
わざとだ。
ということにしておいてくれ。
0939デフォルトの名無しさん2008/06/07(土) 20:55:32
>>936
仕事熱心でいいじゃないか
0940デフォルトの名無しさん2008/06/07(土) 21:01:53
炎上しているって事はデスマーチなんだろ
0941デフォルトの名無しさん2008/06/07(土) 21:04:22
>>937
なんか書いてありましたね。でも
_beginthreadexの最後の引数に入るDWORDのIDはGetCurrentThreadIdのものと一致しますよね?

あと関係ないと思うんですが、MSDNの

_endthread と _endthreadex によって、C++ デストラクタはスレッドで保留状態になり、呼び出されません。

という日本語の意味がよく分からないんですが、どういうこと?
0942デフォルトの名無しさん2008/06/07(土) 21:14:46
ThreadEntry(PVOID param)
{
 CMyClass hoge;
 kansuu();
}

kansuu()
{
 _enthreadex(0);
}

hogeのデストラクタは呼ばれませんよということ
素直にreturnしとけ
0943デフォルトの名無しさん2008/06/07(土) 21:16:00
日本語の意味が分からなかったら英語版を読めばいいだろ
そもそも日本語版なんてWin95時代から更新止まってるのにそんなの見るなって
0944デフォルトの名無しさん2008/06/07(土) 21:22:00
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?
0945デフォルトの名無しさん2008/06/07(土) 21:25:06
英語MSDNのSendIMEMessageExに
This function is obsolete and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?
09469182008/06/07(土) 21:27:22
なんかコピペされてる?
何事ですか?
0947デフォルトの名無しさん2008/06/07(土) 21:28:37
英語MSDNのSendIMEMessageExに
This function is obakadesu and should not be used.
と書いてた。
ってことは、IME使うにはどうすればいいんだ?
0948デフォルトの名無しさん2008/06/07(土) 22:10:57
MSDNのYieldのところに

ウィンドウを含むスレッドでは、DispatchMessage 関数、PeekMessage 関数、または TranslateMessage 関数を使ってください。

てあるけど、どうやんのかね?
0949デフォルトの名無しさん2008/06/07(土) 22:20:17
ウィンドウを作ったスレッドがなんでyieldなんかするんだよ
0950デフォルトの名無しさん2008/06/07(土) 22:31:29
知らないならレスしないでください
0951デフォルトの名無しさん2008/06/07(土) 22:57:14
糞スレ終了
0952デフォルトの名無しさん2008/06/08(日) 00:37:08
次は、まだかな♪(・ ・。)(。・ ・)まだかな♪
0953デフォルトの名無しさん2008/06/08(日) 00:42:09
質問したいんですけどいいですか?
0954デフォルトの名無しさん2008/06/08(日) 00:44:29
ものによる。まずは質問して。
0955デフォルトの名無しさん2008/06/08(日) 00:49:12
>>948
PeekMessageでぐぐればいろいろ例が見つかるはずだから、そのとおりにやればいい。
0956デフォルトの名無しさん2008/06/08(日) 00:55:24
質問です
CreateThreadで作ったのが糞スレッドかどうか判断するAPIを教えてください
0957デフォルトの名無しさん2008/06/08(日) 00:58:06
CreateThread自体が糞だからそのようなAPIは用意されていません。
0958デフォルトの名無しさん2008/06/08(日) 08:19:20
PCを起動したときに、それまで何日間起動されなかったか知りたいのですが、
前回シャットダウンした日時を取得する方法ってありますか?
0959デフォルトの名無しさん2008/06/08(日) 09:05:59
イベントログ
0960デフォルトの名無しさん2008/06/08(日) 10:58:25
>>958
>>959のとおり、イベントログに情報がある。

ただ、OS起動やシャットダウンイベントはデフォルト設定だと記録されないはずなので、
設定を変えるか、もっと簡単にやりたいなら正確ではないけどイベントログサービスの
起動/停止時間をOS起動/シャットダウン時間とみなしてしまうやり方もある。

例がWin32APIでなくて申し訳ないけど、以下WMIのインタフェース使うスクリプトの例。

var query =
"Select * from Win32_NTLogEvent where " +
"LogFile = 'System' and SourceName = 'EventLog'";
var systemlogs = GetObject("winmgmts:!\\\\.\\root\\cimv2").ExecQuery(query);
var e = new Enumerator(systemlogs);
for (; ! e.atEnd(); e.moveNext()) {
var log = e.item();
if (log.EventCode == 6005) {//イベントログサービス起動
WScript.Echo("起動: "+log.TimeGenerated);
}
else if (log.EventCode == 6006) {//イベントログサービス停止
WScript.Echo("停止: "+log.TimeGenerated);
}
}
0961デフォルトの名無しさん2008/06/08(日) 11:00:37
親切な人だなぁ・・
質問者じゃないけど、感心した
0962デフォルトの名無しさん2008/06/08(日) 14:26:31
質問者はトリップ付けた方がいいと思うお
0963デフォルトの名無しさん2008/06/08(日) 15:22:53
そんな面倒な事わざわざしないお
0964デフォルトの名無しさん2008/06/08(日) 18:23:10
IDがあればそんな面倒な事しなくもいいのにね
0965デフォルトの名無しさん2008/06/08(日) 19:07:44
コンボボックスをオーナードローすると
初期表示状態が微妙に縦幅が太くなるんだけぢ
どうやって元に戻すんdねすか?

中身の太さ(高さ)は↓で細くできたんです
void CColorComboBox::MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct)
{
lpMeasureItemStruct->itemHeight = 14;
}
0966デフォルトの名無しさん2008/06/08(日) 19:07:58
またID厨か
09679652008/06/08(日) 19:15:42
もひとつ問題が

オーナードローを可変にすると(CBS_OWNERDRAWVARIABLE)
ボックス内でマウスホイール動かしたときに意味不明な動きをします。
ホイールを下に回してるのに上からビローンって一回転して正しい
位置に回ってきます。なんだこれ。
0968デフォルトの名無しさん2008/06/08(日) 19:46:30
>>966
独り言消えろ
0969デフォルトの名無しさん2008/06/08(日) 19:48:08
またまたID厨か
0970デフォルトの名無しさん2008/06/08(日) 19:53:08
ID厨ウゼェ
0971デフォルトの名無しさん2008/06/08(日) 19:57:41
↑キモッ
0972デフォルトの名無しさん2008/06/08(日) 19:58:33
ID厨の特徴

1. 「IDがあればなぁ」などと書く
2. 自演で荒らす
3. 「やっぱID欲しいな」などと書く
0973デフォルトの名無しさん2008/06/08(日) 20:08:59
やっぱID欲しいな
0974デフォルトの名無しさん2008/06/08(日) 20:09:32
IDがあればなぁ
0975デフォルトの名無しさん2008/06/08(日) 20:29:07
俺の予想では荒らしてるのは一人か二人
0976デフォルトの名無しさん2008/06/08(日) 20:29:14
かまってほしいな
0977デフォルトの名無しさん2008/06/08(日) 20:30:04
>>975
二人以上なのか確実
おれ以外にも居るから
0978デフォルトの名無しさん2008/06/08(日) 20:30:32
× なのか
○ なのは
0979デフォルトの名無しさん2008/06/08(日) 20:32:58
りりかる
0980デフォルトの名無しさん2008/06/08(日) 20:54:18
/* ここまで俺の自演 */
0981デフォルトの名無しさん2008/06/08(日) 21:05:34
/* かまってほしいな */
0982デフォルトの名無しさん2008/06/08(日) 21:10:01
/*
コメント
/*/
スイッチ
//*/
0983デフォルトの名無しさん2008/06/08(日) 21:20:31
>>977
いや一人だ
俺と、俺の中の別人格(=お前)
0984デフォルトの名無しさん2008/06/08(日) 21:24:40
チィッ…右手よ、静まれ!
0985デフォルトの名無しさん2008/06/08(日) 21:38:27
IDがあって困ることはないから、ID導入して欲しいな。
なんでム板はないんだっけ?
0986デフォルトの名無しさん2008/06/08(日) 21:40:04
必要ないから
0987デフォルトの名無しさん2008/06/08(日) 21:45:51
IDは昔はどこもなかった。基本的にはIDが導入される板というのは
人が多く荒れる事が多い板。今までム板では現状のこのスレみたいな
事がほとんどなかったから必要なかっただけかな
0988デフォルトの名無しさん2008/06/08(日) 21:52:30
この程度で荒れてるって・・・
0989デフォルトの名無しさん2008/06/08(日) 21:56:25
機能してない時点で十分荒れてるだろう、ここは雑談系の板ではなく専門板なんだから
0990デフォルトの名無しさん2008/06/08(日) 22:06:49
それに加担してる事は自覚してるのかね
0991デフォルトの名無しさん2008/06/08(日) 22:11:40
自覚してないけど、何か?
0992デフォルトの名無しさん2008/06/08(日) 22:12:33
次スレ建ってないんだから減速しろ
0993デフォルトの名無しさん2008/06/08(日) 22:18:11
建ててくるわ。


Win32API質問箱 Build67

スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。
やさしいお兄さんやお姉さんたちが答えてくれるかも。

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

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

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

Win32API質問箱 Build66
http://pc11.2ch.net/test/read.cgi/tech/1210775622/
0994デフォルトの名無しさん2008/06/08(日) 22:27:48
次スレたててきた
http://pc11.2ch.net/test/read.cgi/tech/1212931246/
0995デフォルトの名無しさん2008/06/08(日) 22:40:15
ume
0996デフォルトの名無しさん2008/06/08(日) 22:40:35
うめ
0997デフォルトの名無しさん2008/06/08(日) 22:41:11
産め
0998デフォルトの名無しさん2008/06/08(日) 22:42:18
埋め
0999デフォルトの名無しさん2008/06/08(日) 22:43:16
おめ
1000デフォルトの名無しさん2008/06/08(日) 22:43:25
こ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。