Win32API質問箱 Build66

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
スレ立てるまでもない、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/
2デフォルトの名無しさん:2008/05/14(水) 23:33:57
3デフォルトの名無しさん: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が見たい人で余裕のある人は●でも買ってくれ。
4デフォルトの名無しさん:2008/05/14(水) 23:34:48
5デフォルトの名無しさん:2008/05/14(水) 23:35:01
6デフォルトの名無しさん:2008/05/14(水) 23:35:12
7デフォルトの名無しさん:2008/05/14(水) 23:43:30
>>1-6
8デフォルトの名無しさん:2008/05/15(木) 00:13:19
大雑把に言って、WM_PAINTでべたべた描画するときはCreateWindow(Ex)。
コントロールをペタペタ乗せるときはダイアログ。

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

┏━━━━━━┓

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

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

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

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

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

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

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

>>33
別に状態を見る関数があったんですね。
試してみます。
45デフォルトの名無しさん:2008/05/16(金) 00:00:23
http://imepita.jp/20080515/861710
CreateWindowEx関数で作ったリストコントロールとタブコントロールの拡張ウィンドウスタイルに
WS_EX_CLIENTEDGEを指定しているのですが、タブコントロールがリストコントロールのようになりません。
原因が分からず苦労しておりまして、
どのようにすればリストコントロールのような縁になるのかご教授お願いします。
46デフォルトの名無しさん:2008/05/16(金) 00:03:49
知らないならレスしないでください
47デフォルトの名無しさん:2008/05/16(金) 00:12:01
知らないのでレスしません
48デフォルトの名無しさん:2008/05/16(金) 01:35:11
>>44
それで検出できないはずはないんだが。
もしかして_beginthreadでスレッド作ってないか?
それだとスレッドが終了すると自動でハンドルが閉じられて使えなくなるぞ。
49デフォルトの名無しさん:2008/05/16(金) 08:00:41
>>48
ああ、なるほど。
確かに_beginthreadでした。
exのほうで試してみます。
50デフォルトの名無しさん: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
にしてみたのですが解除されません。
どうしたら解除できますか?
51デフォルトの名無しさん:2008/05/16(金) 11:53:45
>>50
DrawMenuBarしてみた?
52デフォルトの名無しさん:2008/05/16(金) 19:34:14
ホットキーとkeybd_event使ってJoyToKeyみたいなん作ってみたんだが
オンラインゲームではJoyToKeyみたいに発動しないんだ

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

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

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

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

テキストかバイナリのベクタデータを、
一エレメントを長方形にしてベクタを連続して表示させ、
かつエレメントの値を色で表現・表示したい(短期ゴール)のですが、
どのようにコーディングすれば、またどのような関数を使えばいいのでしょうか。
例:
8ビット幅のエレメントについて、これを8ビットグレースケールに対応させて、
0h0000
0h0001
0h0002
......
0hFFFF
で256個のエレメントを256個のモノトーン長方形

.
.
.

で表示させたいのです。参考になるサイトや本をご存知でしたら教えていただけないでしょうか。
よろしくお願いいたします。
57デフォルトの名無しさん:2008/05/16(金) 21:47:18
ベクタデータって具体的に何?truetype?

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

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

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

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

ありがと、なんとかなりそう
69デフォルトの名無しさん:2008/05/16(金) 23:11:32
すみません、ハード屋なのでベクタといってしまいます。
SetPixelですか。調べてみます。最低数千の長方形(内側色付き)をプロットすることになるのですが、
その遅さはネックにならないでしょうか。
正直遅いと聞いたら使う気にはなれませんが・・・。
70デフォルトの名無しさん:2008/05/16(金) 23:25:30
名無しには要件の詳細なんぞわからんのですよ
71デフォルトの名無しさん:2008/05/16(金) 23:28:51
だったら、メモリ上にDIB(聞いたことない言葉ならBMPのことだと思え)を
作ってそれを描画するって形にすればいい。
72デフォルトの名無しさん:2008/05/16(金) 23:45:48
仕事ならこんな所で聞くなよ
73デフォルトの名無しさん: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)) {
74デフォルトの名無しさん: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を返してしまう、なんで?
75デフォルトの名無しさん:2008/05/17(土) 00:07:13
ソース貼るな馬鹿
どこかにうpしろ
76デフォルトの名無しさん:2008/05/17(土) 00:13:05
じゃあテンプレにソース貼るなって入れろよ

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

dwFlagsにKEYEVENTF_SCANCODEを忘れている。
80デフォルトの名無しさん:2008/05/17(土) 00:27:10
貼るにしても最小コードにして貰いたいものだ
81デフォルトの名無しさん:2008/05/17(土) 00:30:43
そうすると、そこだけ張られても分からねえってなる予感。
話逸らしてすまんが。
82デフォルトの名無しさん:2008/05/17(土) 00:38:37
回答以外のレスは不要です
83デフォルトの名無しさん:2008/05/17(土) 00:57:35
>>74
puts("A");

なにこの顔、ふざけてるの!?
84デフォルトの名無しさん:2008/05/17(土) 01:03:12
>>83
ちょwww
85デフォルトの名無しさん:2008/05/17(土) 01:18:35
>>83
不覚にもワロスwwwwwwwwwwwwwwwww
86デフォルトの名無しさん:2008/05/17(土) 02:44:45
while('A') { }
8774:2008/05/17(土) 02:55:03
>>75
ごめん次から気をつける

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

>>79
ありがとう

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

こういうのが顔文字に見えないようなフォント誰か教えてくれ
89デフォルトの名無しさん:2008/05/17(土) 04:05:01
いっそのこと歌舞伎にしか見えないフォントとか
90デフォルトの名無しさん:2008/05/17(土) 04:06:34
馬鹿にしか見えない文字?
91デフォルトの名無しさん: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と同じで使っちゃいかんと言う人もいるみたいで……
92デフォルトの名無しさん:2008/05/17(土) 07:36:55
気になるならSetProp/GetPropを使えばいい
サブクラスならSetWindowSubclassが安全
9391:2008/05/17(土) 11:43:21
>>92
ありがとうございます
SetPropを使ってみます
94デフォルトの名無しさん:2008/05/17(土) 16:56:51
SendInput使ってコマンド登録してもオンラインゲームでは発動しなかったorz
95デフォルトの名無しさん:2008/05/17(土) 17:02:25
だまれ
96デフォルトの名無しさん:2008/05/17(土) 17:15:26
だからSendInputなんて使わないでSendMessage使えよって話
97デフォルトの名無しさん:2008/05/17(土) 17:23:47
>>96
ありがと 次それやってみる
98デフォルトの名無しさん:2008/05/17(土) 17:36:28
結局BOTかよ芯でこい
9994:2008/05/17(土) 18:11:43
別にいいんじゃね?「使う事」より「作る過程」の方が
楽しいと思えるならBOTでもなんでもいいと思うんだがな。(勉強という意味で)
実際俺がそうだったわけだしフック、APIフック、逆汗は
そういった「目的」があったからこそ覚えたわけで。


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

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

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

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

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

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

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

実行すると自動でPCをシャットダウンしCO2削減に貢献
(SeShutdownPrivilegeの取得等は省略)
122デフォルトの名無しさん:2008/05/18(日) 01:01:58
指定されたフォルダ内のファイルが作成、削除、更新されたら
そのファイルの名称等を知りたい。
検索してみたところ、ReadDirectoryChangesW() や
SHChangeNotifyRegisterあたりを使えば良さそうな感じ。
winXP+vb6.0でもいけるだろうか?
123デフォルトの名無しさん:2008/05/18(日) 01:38:25
ためしてみればわかるだろうか?
124デフォルトの名無しさん:2008/05/18(日) 01:58:06
ためしていただけないだろうか?
125デフォルトの名無しさん:2008/05/18(日) 02:41:22
( ゚ω゚ ) お断りします
126デフォルトの名無しさん:2008/05/18(日) 04:24:08
127デフォルトの名無しさん:2008/05/18(日) 04:40:24
>>126
コンパイルエラー: 引数が足りません
128デフォルトの名無しさん:2008/05/18(日) 11:34:43
おまいら好きだwwwwwwwwwwwwwwwww
129デフォルトの名無しさん:2008/05/18(日) 13:50:13
VIP臭いんだけど
130デフォルトの名無しさん:2008/05/18(日) 13:53:22
お前がな
131デフォルトの名無しさん:2008/05/18(日) 14:50:29
ふうん
132デフォルトの名無しさん:2008/05/18(日) 17:24:37
AbornThread( "pc11.2ch.net", "tech", "1210775622.dat" );
133デフォルトの名無しさん:2008/05/18(日) 18:57:10
タスクバーとスタートメニューのプロパティってどうやれば開ける?
コンパネからショートカット引っ張り出して.lnkアクセスするしかない?
134デフォルトの名無しさん: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();
135デフォルトの名無しさん:2008/05/18(日) 19:13:00
>>133
Shell32.Shell.TrayProperties
136デフォルトの名無しさん:2008/05/18(日) 19:34:42
>>134
サーバ側の用意ができていないんじゃね?
時間がかかって失敗といえば、たいてい接続のタイムアウトだし。
サーバ側のDCOM関連の設定を見直しだな。
137デフォルトの名無しさん:2008/05/18(日) 19:38:46
それじゃ使い方わからんと思うけど
138デフォルトの名無しさん:2008/05/18(日) 19:49:24
DCOM関連の設定というのがあるんですか。

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

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

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

全く問題ないわけではないけど。
149デフォルトの名無しさん:2008/05/19(月) 23:36:03
ListViewで選択したリストが青くなってわかりやすくなるけどそのウィンドウがフォーカスを失うとき(Tab押下、windowsボタン押下など)灰色になるのですが、
これがフォーカスを失っても青のままにしたいのですがどのようにすればよいのでしょうか?
普通のWM_NOTIFYではフォーカスを失ったときブレークポイントにかからなくて、
WM_ACTIVATEではNMHDR構造体がなくてカスタムドローできません。
いい方法があったらご教授願います。
150デフォルトの名無しさん: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をフックさせなければ無利なのでしょうか?
151デフォルトの名無しさん:2008/05/20(火) 00:28:13
全然知らんから適当だが、
別スレッドのUIを操作するのは無理だと思う
152デフォルトの名無しさん:2008/05/20(火) 00:32:57
>>149
LVS_SHOWSELALWAYSスタイル付ければいいような気がする
153デフォルトの名無しさん: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();
}
154デフォルトの名無しさん:2008/05/20(火) 04:48:05
>>153
DllMainでCoInitializeを呼ばないように注意して書いた方がいいぞ
155デフォルトの名無しさん:2008/05/20(火) 20:02:02
>>152
それはすでにやっていて、フォーカスが外れても灰色にはなるのですが
その灰色になる時に青いままにしたいのですが無理でしょうか?
156デフォルトの名無しさん:2008/05/20(火) 20:08:52
できないことも無いけど、フォーカスが無いことをユーザーはどうやって知るの?
157デフォルトの名無しさん:2008/05/20(火) 20:17:54
教えてから訊いてやれよw
158デフォルトの名無しさん:2008/05/20(火) 21:32:45
>>151
そうなんですかね、
あきらめてフックしなきゃダメか。
159デフォルトの名無しさん:2008/05/20(火) 22:40:29
>153
それはアパートメントはどーなるんだ?
MTAとか混じってたら死亡でないのか?
160デフォルトの名無しさん:2008/05/20(火) 22:48:05
海外ドメイン規制で書き込めねー
>>51
やってみたんですがダメでした。成功したらまた来ます。
161デフォルトの名無しさん:2008/05/20(火) 23:02:34
>>159
エラーになってRPC_E_CHANGED_MODEが返ってくる。
http://msdn.microsoft.com/en-us/library/ms695279(VS.85).aspx
162デフォルトの名無しさん: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 ┃
163デフォルトの名無しさん:2008/05/21(水) 09:46:00
それでどうしたいんだ?
164デフォルトの名無しさん:2008/05/21(水) 09:48:55
背景BMPが黒になるのを防ぎたいです。
165デフォルトの名無しさん:2008/05/21(水) 09:53:39
>>162,164
その疑似コードだけ見ると、hdcBmp3に背景BMPを描画していないように
思えるが。

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

あと
>case WM_PAINT:
>BitBlt(GetDC(hWnd),hdcBmp3を描画);
これは駄目だろ
168デフォルトの名無しさん:2008/05/21(水) 10:57:03
>>167
CreateCompatibleBitmapには何を指定すればよいのでしょうか?
169デフォルトの名無しさん:2008/05/21(水) 12:25:51
GetDC()あるいはCreateDC("DISPLAY")の結果あたりを渡すのが吉
170デフォルトの名無しさん:2008/05/21(水) 12:30:01
描画用バッファは面倒だから全部DIBSectionでいいよもう
171デフォルトの名無しさん:2008/05/21(水) 12:39:18
>>162
突込みどころ満載のソースだな
まぁ頑張れw
172デフォルトの名無しさん:2008/05/21(水) 12:43:18
>>162
背景と前景を自前で合成して描画すればおk
173デフォルトの名無しさん:2008/05/21(水) 12:50:05
GDIはあと何年くらい使われるんだろう
174デフォルトの名無しさん:2008/05/21(水) 13:05:19
俺はwin32APIで作れなくなったら、ウィンドウズソフト開発から身を引く。引退。
MFCとかプログラミングじゃねーよ。あれ
175デフォルトの名無しさん:2008/05/21(水) 13:44:17
>>171
突っ込んで下さい。
176デフォルトの名無しさん:2008/05/21(水) 14:33:55
なんでやねん
177デフォルトの名無しさん:2008/05/21(水) 15:00:09
>>174
MFCなんて一皮剥けばバリバリWin32APIじゃないか
178デフォルトの名無しさん:2008/05/21(水) 17:22:34
>>177
プログラミングスタイルが受け付けない
TODO:ここにプログラム書いてね。みたいなのばかり。
しかも、いちいち用意されてる関数調べて、くっつけるだけ。
それで動かしてみて、動いてよかった。で終わり。
こんな状況でバグが出たら、生き地獄だ。
179デフォルトの名無しさん:2008/05/21(水) 17:27:43
はあ?
180デフォルトの名無しさん:2008/05/21(水) 17:33:16
用意されてる関数しらべてくっつけるだけってそれ以外のぷりぐらみんぐおれしらねー
181デフォルトの名無しさん:2008/05/21(水) 17:39:51
>>178
Win32APIの勉強始めた頃は俺もそう思ってた。
今じゃGUIライブラリ無しで作る気起きませんサーセン
182デフォルトの名無しさん: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時に合成した画像を描画する。という事ですか?
183デフォルトの名無しさん:2008/05/21(水) 18:15:46
標準関数も用意されてる関数だよなって突っ込みはなし
184デフォルトの名無しさん:2008/05/21(水) 19:16:48
 5月14日に民主党の円より子参議院議員から、ある嘆願が提出されました。内容は、「美少女
アダルトアニメやゲームを規制すべき」というものです。もしもこれらが規制されてしまうことに
なれば、全国のモテない童貞男子諸君にとって大打撃です。

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

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

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

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

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

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

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

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

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

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

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

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

あと、いまどきの改造は、プロセスメモリエディタ+ルートキットで
やるから、改造を防止するなら、ユーザーから非難されることを覚悟のうえで
ルートキットじみたことをするしかないでしょうね。
214デフォルトの名無しさん: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がウィンドウの大きさを決めるとき、フォントを元に作ってあるのはわかったのですが…)
215デフォルトの名無しさん:2008/05/22(木) 13:05:33
Process Explorerで表示できるWindow Titleと同じものを取得したいと思っています。
どうもGetWindowTextで取得できるものとは別物らしく、
Process ExplorerでJuneブラウザのWindow Titleを見ると、
GetWindow〜で取得した名前とは違うものを表示しているのがわかります。

一体Process Explorerで表示できるWindow Titleとは何者か、
どうすれば取得できるのでしょうか?
216デフォルトの名無しさん: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.
217デフォルトの名無しさん:2008/05/22(木) 13:34:18
使えないAPIなんですか。エディットコントロールじゃなければいいはず…ですよね。
そうするとWindow Titleってなんだろうという話になりまして、

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

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

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

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

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

ありがとうございます
222デフォルトの名無しさん: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;
}
223デフォルトの名無しさん:2008/05/22(木) 14:59:33
>>222
どうもです
実行結果とSpy++を併せて見て、おおよそ理解できました。

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

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

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

(そろそろフックネタ出す奴が現れる頃か)
242デフォルトの名無しさん:2008/05/22(木) 18:50:58
仮にバッファ長が100だったとして、GetWindowTextLength()が99を返した後GetWindowText()が99を返しても、
その間にタイトルが書き換わっていたら溢れたかどうかは判らないのね。
243デフォルトの名無しさん: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);
244デフォルトの名無しさん:2008/05/22(木) 20:36:32
32bit環境だと/3GBスイッチ使っても厳しそうだ。
VirtualAllocのMEM_RESERVEでアドレスだけ確保して、
SEHで動的にメモリを割り当てるのが現実解だな。
245デフォルトの名無しさん:2008/05/22(木) 20:59:09
ヒント:APIフック
246デフォルトの名無しさん:2008/05/22(木) 21:19:35
>>245
ヒント:お前は馬鹿
247デフォルトの名無しさん:2008/05/22(木) 21:23:10
たまにはブローとかアッパーとかさぁ
248デフォルトの名無しさん:2008/05/22(木) 21:34:08
まずはジャブから
249デフォルトの名無しさん:2008/05/22(木) 21:51:37
このスレの質が低下したのは、優秀な人は.NETに移ったからかもな。
250デフォルトの名無しさん:2008/05/22(木) 21:58:09
正解
251デフォルトの名無しさん:2008/05/22(木) 22:06:48
今頃気付いたのか
252デフォルトの名無しさん:2008/05/22(木) 22:25:19
Advanced Windowsの著者だって.NETの本を書くこんな世の中じゃ
253デフォルトの名無しさん:2008/05/22(木) 23:38:50
poizun
254デフォルトの名無しさん:2008/05/22(木) 23:47:16
poison
255デフォルトの名無しさん:2008/05/22(木) 23:49:58
prison
256デフォルトの名無しさん:2008/05/22(木) 23:57:59
ぬるぽ
257デフォルトの名無しさん:2008/05/23(金) 00:07:37
ga
258デフォルトの名無しさん:2008/05/23(金) 00:35:25
てか、sizeof(title_buf)-1を最後の引数に指定してるから、
溢れる可能性など皆無だが?
溢れるとかなに言ってるんだ?
259デフォルトの名無しさん:2008/05/23(金) 00:47:09
↑理解していない何か
260デフォルトの名無しさん:2008/05/23(金) 06:45:56
↑話を理解している天才
261デフォルトの名無しさん:2008/05/23(金) 10:20:45
↑流れを読む天才
262デフォルトの名無しさん:2008/05/23(金) 10:22:11
↓通常の流れに戻すという偉業を成し遂げた天才
263デフォルトの名無しさん: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押してもダメなんだけどどうすればいい?
264デフォルトの名無しさん:2008/05/23(金) 11:01:41
ウィンドウが無いじゃんか
265デフォルトの名無しさん:2008/05/23(金) 11:06:59
コンソールに表示させたいん
266デフォルトの名無しさん:2008/05/23(金) 11:52:02
な ん で ( ´∀` ) や ね ん !
267デフォルトの名無しさん:2008/05/23(金) 12:31:48
プロシージャならメッセきたら処理するけど
コンソールの場合はどうやるのか気になって
268デフォルトの名無しさん: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);
269デフォルトの名無しさん:2008/05/23(金) 13:20:55
WS_EX_TRANSPARENTじゃダメ?
270268:2008/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);
271デフォルトの名無しさん:2008/05/23(金) 13:39:40
ツールバー、もしくはメニューの背景にブラシを使う事は出来ますか?
272デフォルトの名無しさん:2008/05/23(金) 13:40:07
WM_CTLCOLORSTATICでNULL_BRUSHを返す
273デフォルトの名無しさん:2008/05/23(金) 14:12:15
あるプロセスが、自分を起動したプロセス(親プロセス)を知る方法はありますか。
274デフォルトの名無しさん:2008/05/23(金) 14:20:00
ある
275デフォルトの名無しさん:2008/05/23(金) 14:21:19
レバーじゃなくてリバーだと思う
276デフォルトの名無しさん:2008/05/23(金) 14:23:18
"レバーコントロール" の検索結果 約 1,270 件中 1 - 10 件目 (0.13 秒)
"リバーコントロール" の検索結果 約 185 件中 1 - 10 件目 (0.13 秒)
277デフォルトの名無しさん:2008/05/23(金) 14:27:41
>>276
それ「レバー」「コントロール」別単語として検索した結果だから
278デフォルトの名無しさん:2008/05/23(金) 14:27:45
どっちもすくな!
279デフォルトの名無しさん:2008/05/23(金) 14:28:42
リバーコントロールでググると

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

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

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

InvalidateRect自体は投げてるみたいだから、この場合は解決策じゃないけど。
312デフォルトの名無しさん:2008/05/23(金) 17:10:39
>>311
RedrawWindowにRDW_UPDATENOWを指定すればいい
313デフォルトの名無しさん:2008/05/23(金) 17:17:34
なんちゃってAI作った人いる?
314デフォルトの名無しさん:2008/05/23(金) 17:21:43
>>313
const char* msg[] = {
"↑話を理解してない馬鹿",
"知らないならレスしないでください",
"それぐらい察してほしかったってのが本音"
};
for(;;) post2ch(msg[rand()%3]);
315デフォルトの名無しさん:2008/05/23(金) 17:32:59
>>313
スレタイ
316307:2008/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);
}
317デフォルトの名無しさん:2008/05/23(金) 18:25:29
>>316
・・・BeginPaintとEndPaintは・・?
hDCはどこからきたの?
318デフォルトの名無しさん:2008/05/23(金) 18:28:02
やはり怪しかったのね
319デフォルトの名無しさん:2008/05/23(金) 18:34:01
>>317が正解だな
的を射ている
320デフォルトの名無しさん:2008/05/23(金) 18:44:10
WM_PAINTでBegin/EndPaint忘れって上にもあるし前スレにもあったな
いったい何を見て勉強してるんだ?
321デフォルトの名無しさん:2008/05/23(金) 18:45:07
猫だろ。どうせ。
322デフォルトの名無しさん:2008/05/23(金) 19:04:37
犬希望
323デフォルトの名無しさん:2008/05/23(金) 19:18:07
WM_PAINTワンBeginPaintワンワン
324デフォルトの名無しさん:2008/05/23(金) 19:19:40
MFC使えとまでは言わないけど、コンストラクタ・デストラクタでBegin/EndPaintをラップした
クラス程度は作っておくと便利よ。
325デフォルトの名無しさん:2008/05/23(金) 19:27:38
それならOnPaintをオーバーライドするだけで描画できるクラスを作った方が遥かに便利
326デフォルトの名無しさん:2008/05/23(金) 19:30:54
CpaintDC と OnDraw ですね
327デフォルトの名無しさん:2008/05/23(金) 19:33:07
つうか今時MFCやWTLを使わずに素のWin32SDKでアプリ作る奴なんているの?
死ぬほど面倒じゃん
328316:2008/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#はともかく)分かりません。
今後の課題としてクラスの勉強を始めようと思います。
329デフォルトの名無しさん:2008/05/23(金) 19:43:13
そのサイトにも、
>描画の処理を行うとき、必ずBeginPaint()とEndPaint()を使って、描画処理を挟み込む形を取っていましたが、これは必ずそうしなければなりません。
って書いてるじゃん
330デフォルトの名無しさん: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
331デフォルトの名無しさん:2008/05/23(金) 19:44:23
>>328
志村!足りない!足りない!
332デフォルトの名無しさん:2008/05/23(金) 19:45:32
と思ったら、BitBltのあたりでいきなりはしょってるなw
333デフォルトの名無しさん:2008/05/23(金) 19:46:42
"Programing"の時点で糞確定だけどな
334デフォルトの名無しさん:2008/05/23(金) 19:47:04
>>328
hDCはBeginpaintの戻り値かps.hdc 使う
335デフォルトの名無しさん:2008/05/24(土) 06:15:24
本当の所、BeginPaintを必ず使わなければいけないという決まりはない。
ただ、これ一回の呼び出しで行われる処理内容を考慮すると、使わない理由が無いな。
336デフォルトの名無しさん:2008/05/24(土) 07:17:06
>>330
それよりお勧めサイト書いてくれたほうがうれしい
337デフォルトの名無しさん:2008/05/24(土) 07:52:52
>>336
英語版MSDN
338デフォルトの名無しさん:2008/05/24(土) 10:56:51
調べても分からなかったので質問させてください
CreateMenuでよくアプリケーション上部にあるFile(F)とか表示(V)のようなメニュー作成しています。
メインウィンドウのサイズを変更したとき、Menuのサイズを変更しないようにしたいです。
メニューの横幅固定で。この場合、メニューサイズを固定するAPIか、メニューの構造体に横幅指定することができるとか
方法がありましたら、ご教示ください。よろしくおねがいします。

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

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

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

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


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

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

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

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

皆さん親切だ。w

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


というのが俺の妄想

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

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


…ゴメンナサイ、なんかもう投げやりです。
499デフォルトの名無しさん:2008/05/27(火) 00:06:12
グローバル関数でのプロシージャで
各クラス内の自作プロシージャにそれぞれ処理を割り振ったりすれば良いんじゃない?
500デフォルトの名無しさん:2008/05/27(火) 00:09:06
つーか自分でラッパー書けばいいだけじゃね
501デフォルトの名無しさん:2008/05/27(火) 00:10:07
僕ハッカー!!!
502489:2008/05/27(火) 00:11:11
CreateFile
DeviceIoControl
WriteFile
でなんかフロッピーに出してるのは判った
しかしこの方法でフロッピーの中にファイルを作る方法がわからなう
503デフォルトの名無しさん:2008/05/27(火) 00:13:47
FAT32の仕組みでも覚えろ
504デフォルトの名無しさん: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

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

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

どうすればreturn後に処理を続行できるのでしょうか?
516デフォルトの名無しさん: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;
}
517デフォルトの名無しさん:2008/05/27(火) 10:44:00
>>515
C++以外のスタックフレームを飛び越えるthrow〜catchって
頭の悪いlongjmpと同じだと思うがどうか
518デフォルトの名無しさん:2008/05/27(火) 11:01:23
文字列の"123.45"をfloatに変換するAPIを教えてくだせえ
519デフォルトの名無しさん:2008/05/27(火) 11:07:35
なんでわざわざAPI使うん?
520デフォルトの名無しさん:2008/05/27(火) 11:11:36
wsprinf があるんだから wsscanf もあるにちがいないw
521デフォルトの名無しさん:2008/05/27(火) 11:13:22
atofの返値がfloatじゃなくてdoubleだからって言いそうな気がする。
522デフォルトの名無しさん:2008/05/27(火) 11:17:36
いやdoubleでもいいからさっさと教えろよ
どうせ知らないだろーけど
523デフォルトの名無しさん:2008/05/27(火) 11:36:08
VarR4FromStr
VarR8FromStr
524デフォルトの名無しさん:2008/05/27(火) 12:23:01
>>520
wsscanfならMSのFTP鯖にソースが置いてある
Win16時代の物みたいだから今でも使えるかどうかは知らん
525デフォルトの名無しさん:2008/05/27(火) 12:30:58
crtdll.dllからscanfをインポートして使う・・・ってのはAPIの範疇というと苦しいか?
526デフォルトの名無しさん:2008/05/27(火) 12:52:43
msvcrt.dllならいいんじゃね
527デフォルトの名無しさん:2008/05/27(火) 13:07:36
crtdllとかmsvcrtにあるprintfとかscanfって_stdcallじゃなくて_cdeclでいいんだよね?
528デフォルトの名無しさん:2008/05/27(火) 14:28:31
wsprintfもcdeclだろ
可変長なのにどうやって呼び出し先でスタックポインタを戻せるんだよ
529デフォルトの名無しさん:2008/05/27(火) 15:10:26
うるせークズ
530デフォルトの名無しさん:2008/05/27(火) 15:13:58
>>528
キモいよ
531デフォルトの名無しさん:2008/05/27(火) 15:14:00
可変長のはともかく、strcpyとかもCDECLでいいんだろうか?
532デフォルトの名無しさん:2008/05/27(火) 15:16:09
試せばいいだろハゲ
533デフォルトの名無しさん:2008/05/27(火) 15:23:22
そんなの関係ねーだろクズが
534デフォルトの名無しさん:2008/05/27(火) 15:31:18
関係ねー事聞くなカス
535デフォルトの名無しさん:2008/05/27(火) 15:35:03

            ノ
           (゚Д゚)
           ( (7
           < ヽ
536デフォルトの名無しさん:2008/05/27(火) 15:38:25
>>531みたいなのは実際試した場合間違っていても動いちゃうから困りもの
537デフォルトの名無しさん:2008/05/27(火) 15:44:25
>>535
なんだその態度は!!
538デフォルトの名無しさん:2008/05/27(火) 16:42:51
>>536
デバッグビルドなら呼び出し後にchkstkでESPがチェックされるから大抵気付く
539デフォルトの名無しさん:2008/05/27(火) 18:25:05
FindWindow関数によってハンドルを調べたウィンドウを強制的に移動させるにはどうしたらよいでしょうか。
SendMessage関数でWM_MOVEを送っても移動しないことがあります。
540デフォルトの名無しさん:2008/05/27(火) 18:26:36
WM_MOVEは動いた後に送られてくるメッセージなのに
それで動くウインドウがあるのか?
541デフォルトの名無しさん:2008/05/27(火) 18:28:35
正しくはどのメッセージを送ればよいのでしょうか?
542デフォルトの名無しさん:2008/05/27(火) 18:29:27
>>541
MoveWindow 関数で
543デフォルトの名無しさん:2008/05/27(火) 18:30:30
ありがとうございます。
544デフォルトの名無しさん:2008/05/27(火) 18:32:30
SetWindowPosとかもあるし、好きなので。
545デフォルトの名無しさん:2008/05/27(火) 19:17:01
>>540
WM_SIZEを送ると動くウィンドウならあるよ
546デフォルトの名無しさん:2008/05/27(火) 19:29:00
動かないウィンドウもあるってことですね。
547デフォルトの名無しさん:2008/05/27(火) 19:49:39
>>517
遅レスすいません。
プロシージャ内で気軽にSTLなどを使いたかったのですが、邪道だったでしょうか・・・。
とりあえずプロシージャをreturnする前に全てcatchする方向で再考してみます。
548デフォルトの名無しさん:2008/05/27(火) 19:50:20
STLが○| ̄|_にみえたのは俺だけですか?
549デフォルトの名無しさん:2008/05/27(火) 19:53:30
>>548
面白くないよ
550デフォルトの名無しさん:2008/05/27(火) 20:02:12
確かDispatchMessageを例外捕捉しとくとウィンドウ内部の例外が捕まえられたような
551デフォルトの名無しさん:2008/05/27(火) 20:07:35
>>549は大爆笑して悔しかったんだろうなぁ
552デフォルトの名無しさん:2008/05/27(火) 20:09:17
そもそもAPIから呼ばれるコールバック関数内で例外を投げるなんてアホとしか思えない
553デフォルトの名無しさん:2008/05/27(火) 20:09:49
>>548=>>551
はいはいわろす
554デフォルトの名無しさん:2008/05/27(火) 20:11:58
>>535,537
ワロタw
555デフォルトの名無しさん:2008/05/27(火) 20:41:01
>>550
VC++ではC++例外を構造化例外で実装してるようだから捕まえられるかもしれないけど
C++言語的には未定義動作だからやめた方がいい
556デフォルトの名無しさん:2008/05/27(火) 20:56:03
未定義とか不定とかどうでもいい
今時VC++以外でWin32開発してる奴の方が悪い
557デフォルトの名無しさん:2008/05/27(火) 20:57:48
VCなんてもう終わってるだろうがw
558デフォルトの名無しさん:2008/05/27(火) 21:27:35
終わってません
というか終わりません
559デフォルトの名無しさん:2008/05/27(火) 22:08:58
MSではVBについで売れてる言語製品だしな
560デフォルトの名無しさん:2008/05/27(火) 22:13:15
でも、そのVB6も来月で...
561デフォルトの名無しさん:2008/05/27(火) 22:13:38
何その時代錯誤
562デフォルトの名無しさん:2008/05/27(火) 22:39:04
俺も516みたいにWinMainにcatch書くことはあるけど、
その場合はエラーログ書いたりメッセージ出したりして、
とっととExitProcessするだけだな。
563デフォルトの名無しさん:2008/05/28(水) 11:16:09
VBwwwwwwwwwwwwwwwwwwwwww
564デフォルトの名無しさん:2008/05/28(水) 18:11:40
Visual Baka
565デフォルトの名無しさん:2008/05/28(水) 18:21:52
violence bokan
566デフォルトの名無しさん:2008/05/28(水) 19:41:40
>>564
C、C++に挫折した馬鹿しか使わない言語という事ですね?
567デフォルトの名無しさん: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です。
上記はあくまで耐久テスト用ですが、実際のソフトも仕様上ファイルのロード→アンロード回数は予測出来ません。
568デフォルトの名無しさん:2008/05/28(水) 20:43:12
>>567
MSDNライブラリでLoadBitmap引いたらちゃんと注意書きがあるから嫁。
569デフォルトの名無しさん:2008/05/28(水) 20:43:21
>>567
DeleteObject(hBitmap)してないからでは?
570デフォルトの名無しさん:2008/05/28(水) 21:05:12
NT系ならDeleteObjectしなくても約10000回Loadできるはずだが
571デフォルトの名無しさん:2008/05/28(水) 21:24:59
なんでできるの?画像がたとえば4MBだとして、500も読めば
アプリの仮想アドレス空間が枯渇するぜ?
572デフォルトの名無しさん:2008/05/28(水) 21:27:54
外からウィンドウ内にカーソルを持って来ると、大きさ変更するときの ←→ の
形のままで普通のカーソルの形に戻りません。
CreateWindowEx、WS_OVERLAPPEDWINDOW 以外に何かいるんですか?
573デフォルトの名無しさん:2008/05/28(水) 21:29:04
GetWindowLong, SetWindowPos 等で失敗すると 0 が返る関数は
製作者が引数に渡す値をしくじった時に失敗するのは当然ですが
絶対に動作するはずの引数で、OSが何かしらの問題で失敗する事ってありますか?
他人が書かれているコードを見ても、成功する事が前提で書かれているものばかりで問題ないのか疑問です
このような関数が失敗する時は、OSが動いているのも不思議なくらいの状態で いつOSが止まってもおかしくない状況なので
アプリケーションで取得できなかった値を使用して不具合が出るよりOSの方が重症なのでエラーチェックを行っていないという事なのでしょうか?
誰か詳しい方 教えてください
574567:2008/05/28(水) 21:33:00
回答ありがとうございます。
耐久テストのコードではその方法で解決しました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


そんなの見たことも聞いたこともないから。
なにみんな脳内妄想語ってるの?ってカンジ?みたいな〜。
665デフォルトの名無しさん:2008/05/31(土) 15:07:31
だって脳内妄想を語るスレじゃん?ってカンジ?みたいな〜。
666デフォルトの名無しさん:2008/05/31(土) 19:15:37
またレバーリバーの言葉遊びで100レス消費するつもりか?
頭悪い奴が増えたな
667デフォルトの名無しさん:2008/05/31(土) 19:18:13
ビルゲイツ氏ね
668デフォルトの名無しさん: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 イミヂ リスト
669デフォルトの名無しさん:2008/05/31(土) 20:04:27
いやいや違うな

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

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

の方が正確かも
671デフォルトの名無しさん:2008/05/31(土) 20:10:52
不覚にもwww
672デフォルトの名無しさん:2008/05/31(土) 20:12:05
リソース外のbmpやjpeg等の画像を読み込むAPIがあれば教えてください
673デフォルトの名無しさん:2008/05/31(土) 20:13:39
GDI+
OleLoadPicture
IImgCtx
674デフォルトの名無しさん:2008/05/31(土) 23:28:22
>>671
ワロタwww
675デフォルトの名無しさん:2008/05/31(土) 23:41:50
>>669はイギリス、>>670はアメリカの英語に近い。
676デフォルトの名無しさん:2008/05/31(土) 23:52:32
もう発音記号でいいよ
677デフォルトの名無しさん:2008/06/01(日) 00:00:51
国際音声記号でいいよ
678デフォルトの名無しさん:2008/06/01(日) 00:04:42
発音する訳じゃないんだから、普通に英語表記でいいだろwww
679デフォルトの名無しさん:2008/06/01(日) 00:13:43
カマン コンチュロゥルについてなのですが、コマンドゥバァをSDKで使うサンプルないのでしょうか?
ネッツで調べても見つからなくて
680デフォルトの名無しさん:2008/06/01(日) 00:14:49
英語でおk
681デフォルトの名無しさん:2008/06/01(日) 00:35:59
×サンプル
○サンポゥ
682デフォルトの名無しさん:2008/06/01(日) 00:42:15
katakana yamete eigoni sitara?
683デフォルトの名無しさん:2008/06/01(日) 00:43:51
sorya ro-maji yanke
684デフォルトの名無しさん:2008/06/01(日) 00:45:24
muri iwanaide kudasai ><
685デフォルトの名無しさん:2008/06/01(日) 00:50:13
yominikuidesu ><
686デフォルトの名無しさん:2008/06/01(日) 00:52:25
omaera omoroi
687デフォルトの名無しさん:2008/06/01(日) 00:52:53
nanda kono nagare
688デフォルトの名無しさん:2008/06/01(日) 00:54:51
fudan doori jan
689デフォルトの名無しさん:2008/06/01(日) 02:58:41
GetProcessHeap tte NULL ga kaettekuruktoaruno?
690デフォルトの名無しさん:2008/06/01(日) 03:00:43
aruyo
691689:2008/06/01(日) 03:02:16
>>690
kaette kitakoto naindaga
maa hinnpannnitukaumonojanaikara doudemoiika
692デフォルトの名無しさん:2008/06/01(日) 03:04:45
おまえらローマ字とか恥ずかしいからやめてくれ
693デフォルトの名無しさん:2008/06/01(日) 03:15:44
ryoukai
694デフォルトの名無しさん:2008/06/01(日) 04:28:20
>>692
Yes, sir.
695デフォルトの名無しさん:2008/06/01(日) 04:30:56
>>692
Okay.
696デフォルトの名無しさん:2008/06/01(日) 04:48:58
>>692
ming bai le
697デフォルトの名無しさん:2008/06/01(日) 10:10:52
>>692
daga kotowaru
698デフォルトの名無しさん:2008/06/01(日) 10:36:43
I don't give a FUCK!!
699デフォルトの名無しさん:2008/06/01(日) 10:54:51
nani konosure
700デフォルトの名無しさん:2008/06/01(日) 11:10:45
英語の出来ない人が似非英語を書いたりローマ字書いたりするだけの悲しいスレ
701デフォルトの名無しさん:2008/06/01(日) 11:42:38
>>696
nanigodetuka?
702デフォルトの名無しさん:2008/06/01(日) 11:47:50
detteiu
703デフォルトの名無しさん:2008/06/01(日) 11:56:07
>>701
[明白了] chugoku go desu yo
704デフォルトの名無しさん:2008/06/01(日) 12:01:51
bokuhacker!
705デフォルトの名無しさん:2008/06/01(日) 12:07:21
moudameda
706デフォルトの名無しさん:2008/06/01(日) 12:10:57
romaji no dekinai hito ga, ese-chuugokugo wo kaitari nihongo kaitari surudakeno kanashii sure.
707デフォルトの名無しさん:2008/06/01(日) 12:49:18
>>706
abusett teno's anu cincit unegun sent skipet?
708デフォルトの名無しさん:2008/06/01(日) 12:52:16
明日まで書込み禁止
709デフォルトの名無しさん:2008/06/01(日) 12:54:42
jichichuu otsu
710デフォルトの名無しさん:2008/06/01(日) 12:55:30
いい加減にしろ
711デフォルトの名無しさん:2008/06/01(日) 12:56:15
naniwo?
712デフォルトの名無しさん:2008/06/01(日) 12:57:47
業とらしく言うんじゃねーよクソカス
黙れないなら死ね
713デフォルトの名無しさん:2008/06/01(日) 12:59:48
hate?
714デフォルトの名無しさん:2008/06/01(日) 13:00:34
ahosuguru
715デフォルトの名無しさん:2008/06/01(日) 13:01:30
yaku : kamatte hoshiina
716デフォルトの名無しさん:2008/06/01(日) 13:02:31
いいから黙れ
ローマ字で会話するのを止めろ
717デフォルトの名無しさん:2008/06/01(日) 13:03:35
OK
718デフォルトの名無しさん:2008/06/01(日) 13:04:12
nande sonnnani hitoni meirei shitagaruno?
719デフォルトの名無しさん:2008/06/01(日) 13:05:35
souda, kaiwa suruna to iwaretakara, kaiwa wo naritatasenakereba iinda.
720デフォルトの名無しさん:2008/06/01(日) 13:05:51
スレと関係ない話題をいつまでも引っ張ってるからだクソガキ
721デフォルトの名無しさん:2008/06/01(日) 13:06:46
yaku : kamatte hoshiina
722デフォルトの名無しさん:2008/06/01(日) 13:08:10
超伸びてると思ったら何この流れ。
723デフォルトの名無しさん:2008/06/01(日) 13:09:14
日本語でおk
724デフォルトの名無しさん:2008/06/01(日) 13:09:16
irassyai
isshoni asobo-
725デフォルトの名無しさん:2008/06/01(日) 13:10:12
ここまで俺の自演。
726デフォルトの名無しさん:2008/06/01(日) 13:10:51
いいや俺だ。
727デフォルトの名無しさん: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
728デフォルトの名無しさん:2008/06/01(日) 13:23:31
久しぶりに基地害を見た。
729デフォルトの名無しさん:2008/06/01(日) 13:24:05
毎日くれば毎日見られるよ
730デフォルトの名無しさん:2008/06/01(日) 13:26:19
これやってるの一人か二人なんだろうな。そろそろ通報しとくか。
731デフォルトの名無しさん:2008/06/01(日) 13:26:44
なんでWin32APIスレだけこんなに荒れるの?
732デフォルトの名無しさん:2008/06/01(日) 13:33:38
普段、話についてこれないやつが初めて自分のローマ字を披露できたんだ。見守ってやれ
733デフォルトの名無しさん:2008/06/01(日) 13:36:56
つーかなんでこの板IDないの?
734デフォルトの名無しさん:2008/06/01(日) 13:59:07
そのように設定していないから。
735デフォルトの名無しさん:2008/06/01(日) 14:10:52
今日はここに沸いてたのか
736デフォルトの名無しさん:2008/06/01(日) 14:38:34
毎日ここに沸いてるよ
737682:2008/06/01(日) 15:43:35
こんな事になるとは思わなかった
スマソ
738デフォルトの名無しさん:2008/06/01(日) 16:00:04
ごみレスだらけだよ
739デフォルトの名無しさん:2008/06/01(日) 16:07:37
>>737
二度と来るなカス
740デフォルトの名無しさん:2008/06/01(日) 16:10:59
>>739
ごめんねカス
741デフォルトの名無しさん:2008/06/01(日) 16:41:05
>>740
win32APIスレに居て欲しいタイプじゃないから、別スレに移動してくれませんか?
742デフォルトの名無しさん:2008/06/01(日) 16:44:35
>>737
言葉の揚げ足取ってうれしがる奴は邪魔。
もうこないでほしい
743デフォルトの名無しさん:2008/06/01(日) 16:45:22
あなた好みのタイプなんて知ったことじゃありません
744デフォルトの名無しさん:2008/06/01(日) 16:51:33
相手にされてうれしがってるだけなんだから、もう相手するのやめようよ。
745デフォルトの名無しさん:2008/06/01(日) 16:52:41
↑一番相手にするタイプ
746デフォルトの名無しさん:2008/06/01(日) 17:00:21
683から736は俺じゃないんだがな
747デフォルトの名無しさん:2008/06/01(日) 17:03:45
ほら早速。
748デフォルトの名無しさん:2008/06/01(日) 17:07:59
DVDとかCDをフォーマットするには何て関数使えばいい?
749デフォルトの名無しさん:2008/06/01(日) 17:16:13
見てる側からすれば変な発言にノッタお前らも邪魔なんだけどな
煽る奴も邪魔

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

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

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

761デフォルトの名無しさん:2008/06/01(日) 18:35:51
この手の無限ループは荒らしてる基地外が飽きて沈静化するまで終わらないよ
762デフォルトの名無しさん:2008/06/01(日) 19:48:44
前から言われてるけどID制して欲しいですね。
763デフォルトの名無しさん:2008/06/01(日) 20:13:32
どうせID変えまくって荒らすだけだろ
764デフォルトの名無しさん:2008/06/01(日) 21:07:05
荒らす奴はIDの変え方知らんと思うが
765デフォルトの名無しさん:2008/06/01(日) 21:11:20
ほとんどはID変えてまではしないよ、特にこの板ではありえないそう
同じIDのままならNGで終了だし
766デフォルトの名無しさん:2008/06/01(日) 21:14:47
質問とか答えるときもあった方が便利そうだけどな
767デフォルトの名無しさん:2008/06/01(日) 21:18:03
ハンドルっていうのはポインタと思っとけばいいですか
768デフォルトの名無しさん:2008/06/01(日) 21:26:46
よくないです
769デフォルトの名無しさん:2008/06/01(日) 21:41:04
ポインタのポインタに近いかも
770デフォルトの名無しさん:2008/06/01(日) 21:47:34
質問です
掲示板とかによくあるIDの変え方を教えてください
771デフォルトの名無しさん:2008/06/01(日) 22:11:57
名前欄に fushianasan といれる
772proxy10.microsoft.com:2008/06/01(日) 22:22:49
これでいいですか?
773デフォルトの名無しさん:2008/06/01(日) 22:29:53
今すごい自演を見た
774デフォルトの名無しさん:2008/06/01(日) 22:44:40
fusianasanの場合は文字がもう少し細くなるからバレバレ
775デフォルトの名無しさん:2008/06/01(日) 22:46:46
>>767
ハンドルというのは、中身を意識してはいけないもの。
操作対象のオブジェクトを一意に識別する単なるID。
776デフォルトの名無しさん:2008/06/01(日) 22:50:23
ハンドル
インターネットでいうとIPアドレス
学校でいうと何年何組何番とか
777デフォルトの名無しさん:2008/06/01(日) 22:53:09
>>776
何年何組何番は時とともに変化するから学籍番号のほうが的確かと。
778デフォルトの名無しさん:2008/06/01(日) 23:03:13
ハンドルでわからないアホはプログラム作らなくていいよ
779デフォルトの名無しさん:2008/06/01(日) 23:05:57
車に乗るとき握るものですね、わかります
780デフォルトの名無しさん:2008/06/01(日) 23:08:02
50セントじゃねーの?
781デフォルトの名無しさん:2008/06/01(日) 23:10:59
ステアリングじゃないの?
782デフォルトの名無しさん:2008/06/01(日) 23:15:35
はいはいそこまで
783デフォルトの名無しさん:2008/06/01(日) 23:16:58
object identifierとでも言っておけばいいのに
何でハンドルって言うようになったんだ。
784デフォルトの名無しさん:2008/06/01(日) 23:20:29
なんで初心者って、そういうどうでもいい所が気になるのかねぇ
「適当な固有の値」ぐらいに思ってればいいじゃないの
785デフォルトの名無しさん:2008/06/01(日) 23:21:25
ただの興味本位です。スレ違い失敬。
786デフォルトの名無しさん:2008/06/01(日) 23:35:42
新人に聞かれて答えられなかったらカッコ悪いじゃないか
787デフォルトの名無しさん:2008/06/01(日) 23:37:16
お前に聞く新人なんて誰もいないから心配しなくていいよ
788デフォルトの名無しさん:2008/06/02(月) 00:55:00
いいぞお前ら
もっとやれ
789デフォルトの名無しさん:2008/06/02(月) 01:32:49
とても質問できるような環境じゃないな・・・
790デフォルトの名無しさん:2008/06/02(月) 01:39:27
質問です
基地外を消去するAPIを教えてください
791デフォルトの名無しさん:2008/06/02(月) 02:14:14
( ´∀`)<ぬるぽ
792デフォルトの名無しさん:2008/06/02(月) 02:42:57
ビットマップを直接弄りたいので、
今までCreateCompatibleBitmapで書いていたコードをCreateDIBSectionで作り変えたら、
今まで精々数%しかCPU食っていなかったのに、数十%もCPUを食うようになってしまいました。
CreateDIBSectionで吐き出されたHBITMAPを使って描画するのは、重い処理なのでしょうか。
教えてください。
793デフォルトの名無しさん:2008/06/02(月) 03:07:10
DIBとDDBの違いについて調べろ
794デフォルトの名無しさん:2008/06/02(月) 03:29:45
今更Win32APIw
795デフォルトの名無しさん:2008/06/02(月) 03:48:40
今でもWin32APIw
796デフォルトの名無しさん:2008/06/02(月) 03:56:34
今こそWin32APIw
797デフォルトの名無しさん:2008/06/02(月) 04:53:14
荒らしはwin32API質問箱をなくそうとしてるのか。ひどいな
798デフォルトの名無しさん:2008/06/02(月) 06:16:25
ひどいね
799デフォルトの名無しさん:2008/06/02(月) 07:13:21
>>792
CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
CreateDIBSectionはシステムメモリに確保してる
あとは調べれ
800デフォルトの名無しさん:2008/06/02(月) 07:17:22
VISTA未満の話だけどね
801デフォルトの名無しさん:2008/06/02(月) 08:08:37
>CreateCompatibleBitmapは内部でVRAMにメモリを確保してる
そういう嘘を堂々と書かないように
802デフォルトの名無しさん:2008/06/02(月) 08:22:21
訳:かまってほしいな
803デフォルトの名無しさん:2008/06/02(月) 10:38:12
XP以前でVRAM上に確保されるかどうかはドライバ依存
Vista以降ではドライバに依存しなくなった
804デフォルトの名無しさん:2008/06/02(月) 12:11:21
ATI系のボードはXPでもそういうの遅くなったんだっけ?
805デフォルトの名無しさん:2008/06/02(月) 12:15:27
どうでもいいよ

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

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

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

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

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

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

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

>>846
よさそうならこれで作ってみます。どうもです
853デフォルトの名無しさん: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);
854デフォルトの名無しさん:2008/06/04(水) 20:57:59
>>852
メモリの使用量なんて作ってみたらわかることだ。
初心者なら、作る前に答えを欲しがらずに、作って考えることだ。
855デフォルトの名無しさん:2008/06/04(水) 22:03:32
>>854
偉そうに上級者面するな
856デフォルトの名無しさん:2008/06/04(水) 22:12:23
そいつゲイツだぞ
857デフォルトの名無しさん:2008/06/04(水) 22:39:06
だから?
858デフォルトの名無しさん:2008/06/04(水) 22:41:49
お布施しろ
859デフォルトの名無しさん:2008/06/04(水) 23:20:18
どうやって?
PayPalで送金するのか?w
860デフォルトの名無しさん:2008/06/05(木) 00:11:05
とりあえず、VistaのUltimateを10本ほど。
861デフォルトの名無しさん:2008/06/05(木) 01:42:29
ケチケチすんなよ
MSDN Premium Subscriptionをパッケージで50本くらい買えばおk
862デフォルトの名無しさん:2008/06/05(木) 02:25:19
>>860
Vistaなんてイラネーヨ

>>861
おk
明日買ってくる
863デフォルトの名無しさん:2008/06/05(木) 19:14:29
>>853
キャレット位置ならEM_GETSELから調べ始めればいいんじゃね?
864いのぶー: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);
}
865デフォルトの名無しさん:2008/06/05(木) 23:03:24
>>864
PostMessageでDOWNした後UPする前にスリープを入れる
866いのぶー: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);
867デフォルトの名無しさん:2008/06/05(木) 23:53:40
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

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

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

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

hWndを使いまわしていて、汚くてごめんなさい。
873いのぶー: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);


874デフォルトの名無しさん:2008/06/06(金) 06:26:02
ふつーSendInputとか使う。
875デフォルトの名無しさん:2008/06/06(金) 07:13:29
SendInputってフォアグラウンドじゃないとだめじゃなかったっけ
876853:2008/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で,テキスト全体をバッファに入れて改行を数えるとかは
最後の手段かなと思っています.)
877853:2008/06/06(金) 08:11:01
解決しました.

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

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

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

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

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

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

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

当方、「クライアント領域」の有効な使い方が解っていないので、
よろしければご教授願えませんでしょうか。教えていただけると
うれしいのですが・・・
890デフォルトの名無しさん:2008/06/07(土) 00:16:53
>>889
有効とかどうとかじゃなくて、基本的な区別がわかってない
君がいう「ドローイングエリアの座標領域」の外側と内側とか
座標系の基準の違いとか色々ごっちゃにしてるって話
ここで説明できるような内容じゃないので入門書読め
891いのぶー:2008/06/07(土) 00:25:15
別に、原点が画面の左上か、ウィンドウ(又はウィジェット)の左上というだけの話では?
892いのぶー: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]));
893いのぶー:2008/06/07(土) 00:46:46
追伸、

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

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

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

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

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

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

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

コマンドライン使えるならそっちの方がいいと思うけど
914デフォルトの名無しさん:2008/06/07(土) 15:12:18
お前は何を言ってるんだ
915デフォルトの名無しさん: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/

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

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

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

質問です。

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

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

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

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

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

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

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

kansuu()
{
 _enthreadex(0);
}

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

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

てあるけど、どうやんのかね?
949デフォルトの名無しさん:2008/06/07(土) 22:20:17
ウィンドウを作ったスレッドがなんでyieldなんかするんだよ
950デフォルトの名無しさん:2008/06/07(土) 22:31:29
知らないならレスしないでください
951デフォルトの名無しさん:2008/06/07(土) 22:57:14
糞スレ終了
952デフォルトの名無しさん:2008/06/08(日) 00:37:08
次は、まだかな♪(・ ・。)(。・ ・)まだかな♪
953デフォルトの名無しさん:2008/06/08(日) 00:42:09
質問したいんですけどいいですか?
954デフォルトの名無しさん:2008/06/08(日) 00:44:29
ものによる。まずは質問して。
955デフォルトの名無しさん:2008/06/08(日) 00:49:12
>>948
PeekMessageでぐぐればいろいろ例が見つかるはずだから、そのとおりにやればいい。
956デフォルトの名無しさん:2008/06/08(日) 00:55:24
質問です
CreateThreadで作ったのが糞スレッドかどうか判断するAPIを教えてください
957デフォルトの名無しさん:2008/06/08(日) 00:58:06
CreateThread自体が糞だからそのようなAPIは用意されていません。
958デフォルトの名無しさん:2008/06/08(日) 08:19:20
PCを起動したときに、それまで何日間起動されなかったか知りたいのですが、
前回シャットダウンした日時を取得する方法ってありますか?
959デフォルトの名無しさん:2008/06/08(日) 09:05:59
イベントログ
960デフォルトの名無しさん: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);
}
}
961デフォルトの名無しさん:2008/06/08(日) 11:00:37
親切な人だなぁ・・
質問者じゃないけど、感心した
962デフォルトの名無しさん:2008/06/08(日) 14:26:31
質問者はトリップ付けた方がいいと思うお
963デフォルトの名無しさん:2008/06/08(日) 15:22:53
そんな面倒な事わざわざしないお
964デフォルトの名無しさん:2008/06/08(日) 18:23:10
IDがあればそんな面倒な事しなくもいいのにね
965デフォルトの名無しさん:2008/06/08(日) 19:07:44
コンボボックスをオーナードローすると
初期表示状態が微妙に縦幅が太くなるんだけぢ
どうやって元に戻すんdねすか?

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

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

1. 「IDがあればなぁ」などと書く
2. 自演で荒らす
3. 「やっぱID欲しいな」などと書く
973デフォルトの名無しさん:2008/06/08(日) 20:08:59
やっぱID欲しいな
974デフォルトの名無しさん:2008/06/08(日) 20:09:32
IDがあればなぁ
975デフォルトの名無しさん:2008/06/08(日) 20:29:07
俺の予想では荒らしてるのは一人か二人
976デフォルトの名無しさん:2008/06/08(日) 20:29:14
かまってほしいな
977デフォルトの名無しさん:2008/06/08(日) 20:30:04
>>975
二人以上なのか確実
おれ以外にも居るから
978デフォルトの名無しさん:2008/06/08(日) 20:30:32
× なのか
○ なのは
979デフォルトの名無しさん:2008/06/08(日) 20:32:58
りりかる
980デフォルトの名無しさん:2008/06/08(日) 20:54:18
/* ここまで俺の自演 */
981デフォルトの名無しさん:2008/06/08(日) 21:05:34
/* かまってほしいな */
982デフォルトの名無しさん:2008/06/08(日) 21:10:01
/*
コメント
/*/
スイッチ
//*/
983デフォルトの名無しさん:2008/06/08(日) 21:20:31
>>977
いや一人だ
俺と、俺の中の別人格(=お前)
984デフォルトの名無しさん:2008/06/08(日) 21:24:40
チィッ…右手よ、静まれ!
985デフォルトの名無しさん:2008/06/08(日) 21:38:27
IDがあって困ることはないから、ID導入して欲しいな。
なんでム板はないんだっけ?
986デフォルトの名無しさん:2008/06/08(日) 21:40:04
必要ないから
987デフォルトの名無しさん:2008/06/08(日) 21:45:51
IDは昔はどこもなかった。基本的にはIDが導入される板というのは
人が多く荒れる事が多い板。今までム板では現状のこのスレみたいな
事がほとんどなかったから必要なかっただけかな
988デフォルトの名無しさん:2008/06/08(日) 21:52:30
この程度で荒れてるって・・・
989デフォルトの名無しさん:2008/06/08(日) 21:56:25
機能してない時点で十分荒れてるだろう、ここは雑談系の板ではなく専門板なんだから
990デフォルトの名無しさん:2008/06/08(日) 22:06:49
それに加担してる事は自覚してるのかね
991デフォルトの名無しさん:2008/06/08(日) 22:11:40
自覚してないけど、何か?
992デフォルトの名無しさん:2008/06/08(日) 22:12:33
次スレ建ってないんだから減速しろ
993デフォルトの名無しさん: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/
994デフォルトの名無しさん:2008/06/08(日) 22:27:48
995デフォルトの名無しさん:2008/06/08(日) 22:40:15
ume
996デフォルトの名無しさん:2008/06/08(日) 22:40:35
うめ
997デフォルトの名無しさん:2008/06/08(日) 22:41:11
産め
998デフォルトの名無しさん:2008/06/08(日) 22:42:18
埋め
999デフォルトの名無しさん:2008/06/08(日) 22:43:16
おめ
1000デフォルトの名無しさん:2008/06/08(日) 22:43:25
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。