Win32API質問箱 Build ..
237:デフォルトの名無しさん
07/11/18 12:05:44
>>232
ダイアログから複数のモードレスダイアログを開くサンプルを、
C+Win32で書いてみたぞ。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
サブダイアログは、管理を楽にするために、
一度作成されると閉じても非表示になるだけの仕様。
宿題のメインはここじゃないのだろうから、こんなもんでいいんじゃね?
238:デフォルトの名無しさん
07/11/18 12:16:12
宿題お願いすると簡単に答えてくれるスレはここですか?
239:デフォルトの名無しさん
07/11/18 12:26:45
宿題スレでやれ
240:158
07/11/18 14:04:35
>>236様
>>237様 他
有難う御座います・・・
けれど、駄目だ Orz 分け分からないです。
void CKadai1119Dlg::Onmaru()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
//MessageBox("○の表示");
DialogBox(hInst, (LPCTSTR)IDD_maru, hWnd, (DLGPROC)About);
}
IDD_maru ダイアログを新たに作成し、取りあえず付けました。
当然エラー
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hInst' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'hWnd' : 定義されていない識別子です。
C:\Documents and Settings\あ\デスクトップ\kadai1119\kadai1119Dlg.cpp(178) : error C2065: 'About' : 定義されていない識別子です。
241:158
07/11/18 14:08:11
以上のエラーが出ています。
根本的に知識が足りないです。
サンプルプログラムや文献を漁ってみます。
とても、237様に感謝してます。参考にして頑張ります。
242:デフォルトの名無しさん
07/11/18 15:02:06
MFCで無意味にDialogBoxなんてAPIを使おうとする馬鹿初めて見た
>>241
いい加減こっち行けつってるだろ
日本語読めんのか?
■MFC相談室 mfc18d.dll■
スレリンク(tech板)
243:デフォルトの名無しさん
07/11/18 15:02:35
基礎からやれってことだ
横着したって無駄
ここは宿題スレではない
244:デフォルトの名無しさん
07/11/18 16:00:50
俺は、応援してるぞ158w
245:デフォルトの名無しさん
07/11/18 16:07:57
>>244
自演乙
246:デフォルトの名無しさん
07/11/18 16:20:19
__
/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´・ .〈・ リ
.しi r、_) | しゃぶらないか?
| `ニニ' /
ノ `ー―i´
/ ̄ '  ̄ヽ
/ ,ィ -っ、 ヽ
| / 、__う人 ・,.y i
| /  ̄ | |
ヽ、__ノ | |
| 。 | /
| ヽ、_ _,ノ 丿
| (つ) |
| / ヽ |
247:デフォルトの名無しさん
07/11/18 16:23:25
>>240
デスクトップwww
248:デフォルトの名無しさん
07/11/18 18:25:09
がんばれ158w
249:デフォルトの名無しさん
07/11/18 18:54:46
エディットボックスを透明にすることは出来ますかね?
250:デフォルトの名無しさん
07/11/18 18:59:10
非表示にすればいい
251:デフォルトの名無しさん
07/11/18 19:11:18
頭いいな
252:デフォルトの名無しさん
07/11/18 19:25:23
間違えました。
透明な背景を持つようにするにはどうしたらいいですかね?
253:デフォルトの名無しさん
07/11/18 19:34:23
レイヤードウィンドウでカラーキーを設定する
254:デフォルトの名無しさん
07/11/18 21:05:18
透明なエディットボックスって何の役に立つの?
255:デフォルトの名無しさん
07/11/18 21:13:38
仕事中に官能小説でも書きたいんジャマイカ?
256:デフォルトの名無しさん
07/11/18 21:19:35
ググッてるんですが、中々難しいです。
>254
機能的にはなんの役にも立ちません。
しかし、描画してあるビットマップがエディットボックスの背景色と重なるのは少し気になります。
257:デフォルトの名無しさん
07/11/18 21:59:08
1. WS_EX_TRANSPARENTを設定する
2. WM_CTLCOLOREDITでNULL_BRUSHを返す
これで透明にならなければEditコントロール自体の問題だからMSに文句言うか諦める
258:デフォルトの名無しさん
07/11/18 23:32:39
.NETでも探しているのですが、Win32APIでも探しています。
Windowsのユーザーアカウントの一覧リストをプログラム上で表示して
そこからアカウントを選択するようなことをする場合、ユーザーアカウントの
リストを得るためのクラスやAPIがあればうれしいのですが、どのようなものがある
でしょうか?
また、そのリストを、Domain上のユーザーアカウントに対しても取得したい
場合にも有効なクラスやAPIであれば尚ありがたいです。何卒よろしくお願いします。
259:デフォルトの名無しさん
07/11/19 00:07:56
static HBRUSH hBrush;
switch (msg) {
case WM_CREATE:
hBrush = CreateSolidBrush(123);
hEdit = CreateWindowEx(WS_EX_CLIENTEDGE,"EDIT", "",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
100, 10, 200, 25, hWnd, (HMENU)ID_EDIT, hInst, NULL);
SendMessage(hEdit, EM_SETLIMITTEXT, (WPARAM)63, 0);
case WM_CTLCOLOREDIT:
SetBkColor((HDC)wParam, 456);
return ((LRESULT)hBrush);
break;
こうですかね?
260:デフォルトの名無しさん
07/11/19 00:09:20
標準機能では背景を透過させることは出来ない。
以上
261:デフォルトの名無しさん
07/11/19 00:16:47
dllから、そのdllを読み込んだexeにメッセージを渡したいのですが
どちらもウインドウを持たない場合はどのような手段が考えられるでしょうか。
262:デフォルトの名無しさん
07/11/19 00:23:40
メールを送信する
263:デフォルトの名無しさん
07/11/19 01:05:11
メモリマップトファイル
アトム
264:デフォルトの名無しさん
07/11/19 01:26:11
>>261
コールバック関数用意しとけばいいんじゃね?
265:デフォルトの名無しさん
07/11/19 01:55:32
非同期でよければexeからdll呼び出すときに変数のポインタ渡せばいいんじゃない?
コールバックが一番確実だろうけど。
266:デフォルトの名無しさん
07/11/19 02:10:55
>>259
hBrush = CreateSolidBrush(123);
SetBkColor((HDC)wParam, 456);
ナンダコレw
267:デフォルトの名無しさん
07/11/19 07:00:16
Process Explorerでプログラムのsuspendとresumeが可能なんですが
どんなAPIを使ってるんでしょうか?
268:デフォルトの名無しさん
07/11/19 07:18:36
ねいてぃう゛API
269:デフォルトの名無しさん
07/11/19 09:03:22
スレッドを列挙してSuspendThread連打
270:デフォルトの名無しさん
07/11/19 13:18:16
たぶんNtSuspendProcess
調べてもないけど
271:261
07/11/19 14:22:54
>>262-265
レスありがとうございます!
コールバックを実装してみようと思います。
272:デフォルトの名無しさん
07/11/19 17:31:21
リソースからではなく、ファイルからアイコンを取得してイメージリストに
追加したいんですが、どういう方法をとればいけるんでしょうか。
273:デフォルトの名無しさん
07/11/19 17:37:54
LoadLibraryで開いて、LoadIconなりLoadImageなり
274:デフォルトの名無しさん
07/11/19 17:55:20
すいません、dll内のものじゃなくて、iconファイルやbmpからです。
275:デフォルトの名無しさん
07/11/19 18:39:23
LoadImage で LR_LOADFROMFILE
276:デフォルトの名無しさん
07/11/19 19:26:25
>>275
ありがとうございました。
解決しました。
277:デフォルトの名無しさん
07/11/19 20:09:40
透過出来ないのはなぜなんですか?
278:デフォルトの名無しさん
07/11/19 20:11:24
何が?
279:デフォルトの名無しさん
07/11/19 20:15:08
人体
280:デフォルトの名無しさん
07/11/19 20:28:59
人体より衣服を透過したい
281:デフォルトの名無しさん
07/11/19 20:31:50
夜店で売ってるよ
282:デフォルトの名無しさん
07/11/19 20:54:13
>>280
ユーザーモードでは他人の衣服を透過させる事はできない
まずはターゲットに対しての特権取得を行う必要がある
283:デフォルトの名無しさん
07/11/19 21:17:45
>>282
どうあがいても、無理ってことですか?
284:デフォルトの名無しさん
07/11/19 21:39:50
衣服の透過は実装例とか見つからないので詳しくはわからないけど、
管理者権限でも衣服にアタッチできないんなら諦めたほうが素直じゃないか?
285:デフォルトの名無しさん
07/11/19 22:13:16
透過した衣服を着てくれる彼女を作ればいいよ
286:デフォルトの名無しさん
07/11/19 22:22:54
境界線をクリックした時に出る
変な網目のようなバーを描画する関数ってあるんでしょうか?
287:デフォルトの名無しさん
07/11/19 22:27:49
あるといえばあるし、ないと言えばない。
あらゆるプログラムは関数を組み合わせて書く。
288:デフォルトの名無しさん
07/11/19 23:15:04
>>286
DrawFocusRect
289:デフォルトの名無しさん
07/11/20 01:53:40
>>286
白黒のブラシを作って、それで反転させる。
290:デフォルトの名無しさん
07/11/20 06:43:28
1つのアプリでコンソールを複数表示したいのですが、どうすればいいですか?
stderr用とかstdout用とかにわけたいんですが。
291:デフォルトの名無しさん
07/11/20 07:30:24
コンソールは各プロセスに 1 つしか割り当てることができません。
すでにコンソールを持っているプロセスが AllocConsole 関数を呼び出すと失敗します。
FreeConsole 関数を使って現在のコンソールからプロセスを切り離すと、
AllocConsole 関数を呼び出して新しいコンソールを作成することができます。
AllocConsole 関数は、新しいコンソールの標準入力ハンドル、標準出力ハンドル、
標準エラーハンドルを設定することもできます。
標準入力ハンドルはコンソールの入力バッファのハンドル、
標準出力ハンドルと標準エラーハンドルはコンソールの画面バッファのハンドルです。
ハンドルを取得するときは、GetStdHandle 関数を使います。
この関数は主に、グラフィックスアプリケーションでコンソールウィンドウを作成するときに使います。
グラフィックスアプリケーションは、コンソールなしで初期化します。
コンソールアプリケーションは、切り離されたプロセスとして作成する
(CreateProcess 関数を呼び出すときに DETACHED_PROCESS フラグをセットする)
場合を除いて、コンソール付きで初期化するのが普通です。
URLリンク(msdn.microsoft.com)
CreateConsole
AllocConsole
FreeConsole
292:デフォルトの名無しさん
07/11/20 08:25:51
コンソールを持つ子プロセスを複数用意して
CreateProcessの時に親プロセスのstderrやらstdoutをそれぞれのstdinに当ててしまえば可能かも名
293:デフォルトの名無しさん
07/11/20 09:41:19
ブラウザのお気に入りとかのウィンドウのサイズを変える境界線みたいなのってどうやって作るんですか?
境界線を移動できるオプションをウィンドウに設定しても、動くのは一つのウィンドウだけで、
その他のウィンドウはそれに反応してリサイズされないですよね?あの境界線ってどうやって作るのでしょうか?
294:デフォルトの名無しさん
07/11/20 09:47:10
リサイズされるたびに再計算してるだけ
295:デフォルトの名無しさん
07/11/20 10:34:59
>>293
「スプリッタウィンドウ」 で ググれ
296:デフォルトの名無しさん
07/11/20 13:03:37
>>288 >>289
ありがとう、試してみます
297:デフォルトの名無しさん
07/11/20 14:21:09
>>295
ありがとうございます
298:デフォルトの名無しさん
07/11/20 14:24:56
でも画面DCに反転ブラシで書く方法はAeroGlass環境だとクソ重くなるぞ
スプリッタならエクスプローラみたいにダイレクトにサイズ変更するようにしたほうがいい
299:デフォルトの名無しさん
07/11/20 15:48:34
普通はスプリッタウィンドウの中に子ウィンドウを置くだろ
300:デフォルトの名無しさん
07/11/20 20:19:01
スプラッタ?
301:デフォルトの名無しさん
07/11/20 20:52:48
バケラッタ!
302:デフォルトの名無しさん
07/11/20 20:58:28
(/O^)/
303:デフォルトの名無しさん
07/11/20 20:59:44
はらへった
304:デフォルトの名無しさん
07/11/20 23:08:21
hDCはEndPaintで開放されるのでしょうか?
case WM_PAINT:
// クライアント領域を再描画する処理
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, 0, 0, s, lstrlen(s));
EndPaint(hWnd, &ps);
return 0;
305:デフォルトの名無しさん
07/11/20 23:09:32
そうだよ。PAINTSTRUCTの中にhDCが保持されているので、
そこからEndPaintは解放するデバイスコンテキストを見付ける。
306:デフォルトの名無しさん
07/11/20 23:20:22
なるほど、そういうことだったのですね
デバイスコンテキストはプロシージャを抜けるまでに開放しないと
やばいことになる(どうやばいのかは知りませんが)と聞いていたので
どこで開放してるのか必死になってさがしまつた
307:デフォルトの名無しさん
07/11/21 12:56:48
しかしPAINTSTRUCTの中のhdcと同じもの返すって普通に考えたら謎な実装だな。
文字列系関数で渡したバッファのポインタそのまま返すのと似た感じでコーディング楽にするためなんだろうか。
308:デフォルトの名無しさん
07/11/21 13:54:58
>>307
BeginPaint の動作を勘違いしていると思う・・・
309:デフォルトの名無しさん
07/11/21 14:01:02
そうか?
>>307はpsのメンバにもhdcあるのに、戻り値でも返してるって言ってるだけでは?
310:デフォルトの名無しさん
07/11/21 14:32:29
確かに
別に戻り値は普通にT/Fで良いんだけどな
いいけどさ
311:307
07/11/21 14:37:28
>>308
>>309の通り。
かなりくだらないレベルかもしれんが、PAINTSTRUCTとHDCを両方定義するのが無駄と思って
戻り値は無視(NULLチェックだけ)してPAINTSTRUCTのhdcだけを使うようにしてる。
312:デフォルトの名無しさん
07/11/21 15:24:07
VBのWithのようなものがあったら俺もそうするな。
まあ今でもPAINTSTRUCTの変数名はいつもたった2文字、psだけど。
313:デフォルトの名無しさん
07/11/21 16:42:38
Windows Version 1 の頃の
TextOut(BeginPaint(hWnd, &ps), 0, 0, s, lstrlen(s));
の名残
314:デフォルトの名無しさん
07/11/21 18:43:50
色はつけれるけど、透過ができねぇぇぇえええ!!!
315:デフォルトの名無しさん
07/11/21 18:53:36
つGDI+
316:デフォルトの名無しさん
07/11/21 19:01:43
hdcはWM_PAINTのWPARAMで渡される訳だが
317:デフォルトの名無しさん
07/11/21 19:14:53
>>316
一体いつの時代だ?
URLリンク(msdn2.microsoft.com)
wParam
This parameter is not used.
318:デフォルトの名無しさん
07/11/21 19:35:11
>>316
それは WM_PRINT じゃ?
319:デフォルトの名無しさん
07/11/21 19:37:50
WM_PRINTと勘違いしてないか?
320:デフォルトの名無しさん
07/11/21 20:28:56
>>317
URL貼るなら最後まで読めよw
> For some common controls, the default WM_PAINT message processing checks the wParam parameter.
> If wParam is non-NULL, the control assumes that the value is an HDC and paints using that device context.
321:デフォルトの名無しさん
07/11/21 20:38:07
そんなイレギュラーな仕様は常用すべきではないだろう
322:デフォルトの名無しさん
07/11/21 20:58:36
>>321
お前英語苦手だろw
もう少し詳しく説明されてる古いWin32SDKヘルプの説明を貼ってやろう
> Handle to the device context to draw in. If this parameter is NULL, use the default device context.
> This parameter is used by some common controls to enable drawing in a device context other than the default device context.
> Other windows can safely ignore this parameter.
323:デフォルトの名無しさん
07/11/21 22:11:02
何にせよまずはBeginPaintが基本ということでいいのでは?
324:デフォルトの名無しさん
07/11/21 23:09:27
>>314
URLリンク(www.microsoft.com)
URLリンク(homepage1.nifty.com)
URLリンク(homepage1.nifty.com)
URLリンク(msdn.microsoft.com)
325:デフォルトの名無しさん
07/11/22 15:20:45
エクスプローラでマイコンピュータを開くと表示される
「ローカル ディスク」や「CD ドライブ」といった文字列を取得するには
どうすればいいのでしょうか?
30分以内に小倉優子ばりのおっとりキャラで答えてください
326:デフォルトの名無しさん
07/11/22 15:23:32
shell32.dllからGetResource
327:デフォルトの名無しさん
07/11/22 15:36:31
SHGetFileInfoで取れぬのか?
328:デフォルトの名無しさん
07/11/22 15:41:26
>>327
おおいけそうな予感
ありがとー☆ミ
329:デフォルトの名無しさん
07/11/22 17:28:11
memo
URLリンク(www.microsoft.com)
330:デフォルトの名無しさん
07/11/22 17:37:49
割り込んで申し訳ないのですが、教えてください。
DirectX全画面のゲームの上から、文字や画像を表示する方法はないでしょうか?
(レイヤードウィンドウとかはダメでした。。。)
331:デフォルトの名無しさん
07/11/22 18:36:06
グラフィックカードに直接アクセスして
描画領域くりぬいてるから駄目なんじゃない?
332:デフォルトの名無しさん
07/11/22 18:42:35
よくチートツール類がやってる方法:
プロセスに潜り込んでIDrectDraw***を乗っ取り、そのBlt()あるいはBltFast()に割り込んで自分で書く。
333:デフォルトの名無しさん
07/11/22 19:19:22
>>330
俺は普通に枠なしウィンドウで文字表示したことあるけど
べつにその画面内に描画したいわけじゃないんだろ
334:デフォルトの名無しさん
07/11/22 19:37:41
330です。
説明不足ですんません&ありがとうございます。
よくMODツールなんかで見かけるやつです。
(レースゲームなんかでスピードメータを追加する改造など)
でもどうやったら、DirectDraw***のオブジェクトを乗っ取れるか?
それができたらやりたい放題ですね。
そこをぜひぜひお願い申し上げます。
(僕のプログラミングレベルでは・・
デバイスコンテキスト取ってDrawText、BitBltぐらいしかできないっす。)
335:デフォルトの名無しさん
07/11/22 19:47:33
そのレベルじゃ厳しすぎるだろ・・・
336:デフォルトの名無しさん
07/11/22 20:06:50
>>334
(1) APIフックで CreateDirectDrawの類をフックして順次wrapperオブジェクトを返す
(2) 途中まで同じで、wrapperは使わず IDirectDraw9Device 等の vtbl を書き換える
のどっちかかな。
APIフックの仕方やvtblの書き替え方を自分で見つけられる程度の実力があれば、
地味にやってけばできるでそ。
337:デフォルトの名無しさん
07/11/22 20:41:49
334です。
>>335 やっぱり?
>>336 ありがとうございやーす。
とりあえず正しい方向へ行けるのでホッとしました。
あとは学習あるのみ・・・
338:デフォルトの名無しさん
07/11/22 21:05:42
>>337
dxwndのソースが参考になるかもな。ならんかも知れんが。
339:デフォルトの名無しさん
07/11/22 21:28:37
DirectDrawって・・・
もう今じゃほとんど使われていないぞ
340:デフォルトの名無しさん
07/11/22 21:29:20
DWMをXPでいぢりたひ
341:デフォルトの名無しさん
07/11/22 21:30:23
>>338
中に「int HookDirectX(TARGETMAP *target)」こんな関数あったよ。
モロです。
地道にやってたら2週間かかってたかも
嬉しいんだけど、ちょっとはずかしい。
342:デフォルトの名無しさん
07/11/22 23:54:47
>>337
ぶっちゃけTaksiが全てのソースを公開してるんだがな
343:デフォルトの名無しさん
07/11/23 00:18:16
CはJavaとかとちがってガベコレがないから
プログラマがすべてリソースの開放をしなければならないと聞いたのですが
どの入門サイトもそれらしいコードがないのですがなぜでしょうか?
最初にメッセージボックスを表示するサンプルが多いようですが
メッセージボックスを開放する処理はどうすればいいのでしょうか?
また、ウインドウを作成したときもPostQuitMessageを送るだけで
その後ウインドウを開放するようなコードがないHPばかりなのですが
344:デフォルトの名無しさん
07/11/23 00:19:51
>>343
ネタだよな?そうだよな?
345:デフォルトの名無しさん
07/11/23 00:44:16
>>343
リソースの解放なんて必要ないよ。
一部の特殊なリソースを除けば、プロセス終了で、OSが全て片づけてくれる。
346:デフォルトの名無しさん
07/11/23 00:45:20
>>343
malloc/freeやnew/deleteというのがあるじゃないか。
GetBufferしたらReleaseBufferしなきゃならないとかもそう。
ファイルは開いたら閉じるのだってリソースの解放だ。
メッセージボックスの件はネタだと信じたい。
347:デフォルトの名無しさん
07/11/23 00:58:25
>どの入門サイトもそれらしいコードがない
>その後ウインドウを開放するようなコードがないHPばかりなのですが
文面から察するに経験豊富というわけではないだろうから、
「それらしい」や「するような」という判断自体が怪しいが
このレスからじゃあどのページをもってそう判断しているのかわからない
>Cは……プログラマがすべてリソースの開放をしなければならない
というのはC言語としての話であってWin32APIの話ではない。たとえば
>その後ウインドウを開放するようなコードがないHPばかりなのですが
の場合、「ウインドウを開放する」というコーディングはWinAPIとして要求してないと思われる。
(これもどのコードについて言っているのか解らないので推測だが)
まともなページであれば、APIとして開放しなければならないリソースはAPIの作法で開放されている。
ただその作法を知らないのであれば開放のコードは見つけられないかもしれない。
( HANDLE hFile = malloc(...) / free(hFile) なんてしないので)
なので勉強しろ。そして調べろ。
348:デフォルトの名無しさん
07/11/23 01:01:17
論文がはかどらなくてムシャクシャして書いた。
開放がすべて誤字であることに気づいたが反省はしていない。あすも平日だがまだがんばる。
349:デフォルトの名無しさん
07/11/23 01:01:27
メインスレッド内でCreateThreadで作成した複数の副スレッドのうちの特定の一つのスレッドを、
メインスレッドから停止(停止っていってもいい?スレッドを消したい)させるにはどうしたらいい?
ExitThreadでは特定スレッドを別スレッドから狙い打ちにできないような???
ねぇどうすればいい??
350:デフォルトの名無しさん
07/11/23 01:12:58
>>348
明日は休日ですよ……
351:デフォルトの名無しさん
07/11/23 01:29:16
hoge.exe: user error (GetClientRect: ヲ」ノヲ マノ・!ケgY
(error code: 578))
ってどういう意味のエラーなのでしょうか?
一部の文字化けは元からです。
コンパイル環境:mingwで g++ hoge.c -mwindow
352:デフォルトの名無しさん
07/11/23 01:34:04
>>349
ExitThreadは呼び出し元のスレッドを終了させる奴だ
別スレッドを終了させるならTerminateThread
ただ別スレッドで作成したリソースが残る可能性があるから
続行判断用のフラグをCreateThread時に渡しておく方がベターだと思う
その場合はフラグの領域が先に開放されないように注意が要るけど
353:デフォルトの名無しさん
07/11/23 01:36:26
>>351
デバッグしなさいw
354:デフォルトの名無しさん
07/11/23 01:44:19
>>352
TerminateThread、そういう関数がありましたか。。
ExitThreadはc標準の_exitthreadみたいなもんなんですね。
>>352さん指摘どおり、たしかに
「TerminateThread is a dangerous function that should only be used in the most extreme cases.」
ってありますね。
やっぱりパラメーターで渡しておくほうがよさげですね。
でもこのやり方嫌いなんだよなぁw なんか副スレッドがいつ本スレッド内のパラメーターの変更をチェックしてるんだよ、と
渡来してみます。ありがとうございました。
355:351
07/11/23 01:52:37
どういう理由かわからないのですが、
実行ファイルを削除してから再コンパイルすると正常に(?)動作しました。
356:デフォルトの名無しさん
07/11/23 05:14:13
_で始まる関数は標準じゃないぜ
これ知らないと俺みたいな一言居士がうるせーから要注意な
357:デフォルトの名無しさん
07/11/23 07:37:18
>>354
排他制御
アトミックオペレーション
358:デフォルトの名無しさん
07/11/23 09:44:32
読み取りだけなら領域が無効になってなきゃ別にいつだって良いだろ
書き込みなら排他制御すべきだが
359:デフォルトの名無しさん
07/11/23 09:55:36
____
/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´・ .〈・ リ
.しi r、_) | チャリーン
| `ニニ' / __ lヽ,,lヽ
ノ `ー―i´ | |Θ|( )
| ̄ ̄ ̄| ̄ ̄|_ |_|_|と i
|___|__|_| |_| しーJ
____
/__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´・ .〈・ リ <ヘンリーはわしが育てた
.しi r、_) |
| `ニニ' / __ lヽ,,lヽ
ノ `ー―i´ | |Θ|( )
| ̄ ̄ ̄| ̄ ̄|_ |_|_|と i
|___|__|_| |_| しーJ
360:デフォルトの名無しさん
07/11/23 09:58:40
誰だヘンリーってw
361:デフォルトの名無しさん
07/11/23 10:31:49
ビルゲイツ(本名William Henry Gates III)だろ
362:デフォルトの名無しさん
07/11/23 14:32:39
Win32でメニューバーの色を取得したいのですがどうすればいいのでしょうか?
363:デフォルトの名無しさん
07/11/23 14:40:22
getsystemmetrics
364:デフォルトの名無しさん
07/11/23 14:42:00
DWORD menu_color = GetSysColor(COLOR_MENU);
365:362
07/11/23 14:49:42
>>363-364
>>362です。有難うございました。
366:デフォルトの名無しさん
07/11/23 15:31:59
>>365
誰だよwww
>>363-364
ありがとうございます。
367:デフォルトの名無しさん
07/11/23 15:40:52
ツリービューをダブルクリックでは開閉させたくないんですが、
どういう方法をとればいいんでしょうか。
368:デフォルトの名無しさん
07/11/23 17:13:30
サブクラス化してダブルクリックのメッセージを捕まえてreturn 0;をすればおk
369:デフォルトの名無しさん
07/11/23 19:46:11
>>368
やってみます。
ありがとうございました。
370:デフォルトの名無しさん
07/11/23 20:20:42
すでに起動してるアプリケーションに文字列をSendMessageするにはどうすればいいのでしょうか?
FindWindowをしてWM_APPのLPARAMに文字列を乗せて送信してみたところ
誤ったポインタが届いてしまいました
371:デフォルトの名無しさん
07/11/23 20:26:21
WM_COPYDATA
372:デフォルトの名無しさん
07/11/23 20:36:44
ポインタを別プロセスに送っても無意味
>>371かファイルマッピングを使う
373:デフォルトの名無しさん
07/11/23 20:51:36
テキストファイルから複数行の文字列を取り出し
リストビューに表示させるにはどうしたらいいですか?
374:デフォルトの名無しさん
07/11/23 20:51:37
アトムくんじゃダメなの?
375:デフォルトの名無しさん
07/11/23 20:51:47
>>371-372
出来ました!
こんな便利なのあったのかー
ありがとうございました
376:デフォルトの名無しさん
07/11/23 20:57:38
>>373
そりゃテキストファイル開いて、読んで、リストビューコントロールにに登録すりゃいいんでない?
377:デフォルトの名無しさん
07/11/23 21:19:04
複数のBMPを結合して4GBytes以上のAVIファイルを作成するには
どうしたらいいですか?
できればVideo compressorも使いたい。
378:デフォルトの名無しさん
07/11/23 21:20:49
どのように登録すればいいんですか?
379:デフォルトの名無しさん
07/11/23 22:17:05
まずパソコンの電源を入れます
380:デフォルトの名無しさん
07/11/23 22:24:19
>>379
次は?
381:デフォルトの名無しさん
07/11/23 22:25:06
入れました。
382:デフォルトの名無しさん
07/11/23 22:29:17
そしてスタートボタンをクリックします
383:デフォルトの名無しさん
07/11/23 22:31:46
>>373
これって、リストビュー1つのアイテムに複数行表示させるってこと?
ならオーナードローかな、LVS_OWNERDRAWFIXEDあたり
384:デフォルトの名無しさん
07/11/23 22:42:45
>>383
いえ、
テキストファイルから一行ずつ項目を追加したいです。
385:デフォルトの名無しさん
07/11/23 22:49:55
うるせーばかどっかいけ
386:デフォルトの名無しさん
07/11/23 22:51:55
リストビュー使うのにリストビューアイテムの追加の仕方なんて
人に聞くことじゃないでしょ。。。
調べろ禿で終わり
387:デフォルトの名無しさん
07/11/23 22:55:05
あなたがここに書いたとおりに実装すればよい
ただし、そのために何のどのような設計が必要かを検討する
さらにそのために何のどのような設計が必要か検討する これを繰り返す。
言語や実装方法依存しない設計であること、この繰り返しで疑問の余地がなくなるまでコーディングを開始しないことが重要
これが完了すればコーディングなんて一瞬で終わるし、再コーディングなんて手戻りはまず発生しない
388:デフォルトの名無しさん
07/11/23 22:58:36
ここでのレスを参考に分割ウィンドウ作っていたんですが
スクロールバーってオーナードローできないんでしょうか?
境界線を自力描画したせいか普通に置くと
境界線がスクロールバーの下をくぐるんです
389:デフォルトの名無しさん
07/11/23 23:00:37
コーディングして実際に確認しないと、言語や実装方法依存しないことが確認できない。
理論だけで集結するなら、実験をする科学者はいない。
太平洋で核実験をする国もない。
390:デフォルトの名無しさん
07/11/23 23:02:34
>>388
クライアントに直接書かずにウインドウを作ればいい。
391:デフォルトの名無しさん
07/11/23 23:03:09
ReadLinesToListviewItems()
392:デフォルトの名無しさん
07/11/23 23:44:38
>>388
MFCかWTLのソースでも見ろよ
393:デフォルトの名無しさん
07/11/24 00:08:57
フックについて詳しく書かれた書籍はありますか?
ネット上の情報ではあまり身につかないと思うので・・
394:デフォルトの名無しさん
07/11/24 03:38:42
すべてを詳しく網羅したものはない
395:デフォルトの名無しさん
07/11/24 04:35:45
Advanced Windows かなあ
396:デフォルトの名無しさん
07/11/24 10:32:43
フックなんて大して覚えることねーだろ
MSDNの説明読めば各フックが呼び出される状況は把握できるし
そしたらあとは自分で応用方法を考えるだけ
397:デフォルトの名無しさん
07/11/24 10:34:51
APIフックかも知れんよ?
398:デフォルトの名無しさん
07/11/24 10:39:45
>>395
あの分厚いやつですね
本屋でちょっと覗いてこよう
399:デフォルトの名無しさん
07/11/24 15:51:48
タブコントロールをCreateWindowで作成する際に、
TCS_RIGHTJUSTIFYを指定しているのですが、タブが最大まで拡大されません。
どういう原因が考えられますか?
400:デフォルトの名無しさん
07/11/24 18:34:22
マイクロソフトヘルプのhxsファイルはテキストなどに変換できませんか?
401:デフォルトの名無しさん
07/11/24 18:36:30
純正以外のgrepツールや全文検索のインディックスを作りたいんですが
htmlに変換することも難しいです シェアでABC Amber HxS Converter
というのがあるんですが日本語無理で、まとめて変換も出来ずつかえません
402:デフォルトの名無しさん
07/11/24 18:54:02
純正とは?
403:デフォルトの名無しさん
07/11/24 19:02:25
MSDNライブラリをインストールすると入っているMicrosoft Developer Networkが純正ツールです
404:デフォルトの名無しさん
07/11/24 19:50:44
s_hIml = ImageList_LoadImage(hInstance, MAKEINTRESOURCE(IDB_HEADER), 7, 0, CLR_DEFAULT, IMAGE_BITMAP, LR_LOADTRANSPARENT);
Header_SetImageList(ListView_GetHeader(s_hListView), s_hIml);
このようにして登録しておいたリストビューのヘッダのImage(14 x 6)を切り替えようと以下のような関数を作りました。
ところが何度呼び出しても切り替わってくれません…
一体全体どこが間違っているのでしょうか?
BOOL SetColumnState(void)
{
HWND hHeader = ListView_GetHeader(s_hListView);
int i;
for(i = 0; i < Header_GetItemCount(hHeader); ++i)
{
HDITEM hdi = {HDI_FORMAT | HDF_IMAGE};
Header_GetItem(hHeader, i, &hdi);
if(hdi.fmt & HDF_IMAGE)
{
hdi.iImage = 1;
return Header_SetItem(hHeader, i, &hdi);
}
}
return FALSE;
}
405:デフォルトの名無しさん
07/11/24 20:01:12
すみません自己解決しました
hdi.maskに入れないといけないんですね
1時間も悩んでたのになんてこった…
406:デフォルトの名無しさん
07/11/24 20:39:04
簡単なウェブブラウザ作りたいんですが、何から手を付けたらいいかわかりません。
407:デフォルトの名無しさん
07/11/24 20:41:54
おまいが作るまでも無い。既存のもので充分だ。
ちなみに、下手なウェブブラウザ作るとw3c厨に命を狙われるから覚悟しとけ。
408:デフォルトの名無しさん
07/11/24 20:45:07
>>406
独自レンダリングはどこからやっても簡単にはならないだろうなw
IEコンポーネント使っていいならIEコンポーネントの使い方から調べたらいいなじゃないかな?
409:デフォルトの名無しさん
07/11/24 20:58:50
>>407
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。
410:デフォルトの名無しさん
07/11/24 21:02:31
下手に穴のあるもの作られて
それが原因でウィルスやワームばらまかれて
結局は足を引っ張られることになってる
一番低能で一番迷惑な連中がMSの糞ソフト
411:デフォルトの名無しさん
07/11/24 21:08:48
>>410
それは>>406本人ですか?
412:デフォルトの名無しさん
07/11/24 21:14:30
windows使わなきゃいいじゃん
413:デフォルトの名無しさん
07/11/24 21:27:19
自分は使わなくても世間が使うとその割合が増えて
ウィルスがそっちから流れ込んでくるだろ
最近はやったSARSみたいに
自国だけ閉鎖しててもどうにもならんのだよ
おれはWindows使わないっていうスタンスで
影響受けずに済むのは
ヒッキーだけ
414:デフォルトの名無しさん
07/11/24 21:29:35
>>413
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。
415:デフォルトの名無しさん
07/11/24 21:45:37
>>399どなたかわかりませんか?
416:デフォルトの名無しさん
07/11/24 21:49:31
>>415
使い方を間違っている
417:407
07/11/24 21:50:03
アカの他人に厳しい人って、まさかと思うけど俺のことじゃないよね?
単にコピペネタなのかもしれんが。
418:デフォルトの名無しさん
07/11/24 22:06:10
>>413
mac使えば良いんじゃない?
感染のリスクは比較的低いと思うよ
419:デフォルトの名無しさん
07/11/24 22:09:08
>>413
macなら、ウィルスが流れ込んで来ても、
たいていはWin用だから、せいぜい自分は感染せずに済む
420:デフォルトの名無しさん
07/11/24 22:12:14
>>417
お前の同僚がお前のために作ったツールが穴だらけなのは迷惑かもしれないが、
赤の他人が勉強のためか、vectorに登録するためか、もしくは仕事で作ったのかしらないけど、
彼がどの程度のものを作るのかわかってもいないうちから足を引っ張ろうとするのは倫理的にどうかと思うぞ。
お前に直接迷惑がかかるわけじゃないし、
仮に彼一人が作るのをやめたところで全体的には大して変化はないだろう。
それどころか彼の向上意欲やチャンスすら奪ってしまうことになりかねない。
お前は彼に責任を取れるのか?
文句を言いたいなら実際に迷惑を被った場合だけにしろ。
421:デフォルトの名無しさん
07/11/24 22:13:47
(゚Д゚)ハァ?
422:デフォルトの名無しさん
07/11/24 22:37:47
子ウィンドウをWM_LBUTTONDOWNで親ウィンドウの下に置いて
WM_LBUTTONUPで親の上に戻そうと思ってSetWindowPos()を弄ってるんですが
もしかして親ウィンドウの下に子ウィンドウを置く事はできませんか?
全然下がらなくて困っています
423:デフォルトの名無しさん
07/11/24 23:20:19
>>420
彼乙彼
424:デフォルトの名無しさん
07/11/24 23:45:33
>>416
どういう事でしょうか?
hTabCtrl = CreateWindowEx(0, WC_TABCONTROL, NULL,
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE | TCS_RIGHTJUSTIFY,
100, 100, 400, 100,
hwnd, (HMENU)HTABCTRL, GetModuleHandle(NULL), NULL);
こんな感じで指定するのではないですか?
425:デフォルトの名無しさん
07/11/25 00:16:29
GroupViewスタイルのListViewでグループの開閉(図参照)ってどうやればできるか誰かわかります?
LVGS_COLLAPSEDあたりかと思って試してみたけど変化なし・・・
図 URLリンク(www.youlost.mine.nu)
426:デフォルトの名無しさん
07/11/25 01:37:37
そりゃLVGS_***ったらGroupItemのスタイルだろ常考
コモンコントロールからの通知はWM_NOTIFYとLVN_***のはず
427:デフォルトの名無しさん
07/11/25 03:06:19
逆引きリファレンスがほしいのですが
URLリンク(www.amazon.co.jp)
を使ってる人いませんか?
ポチるかどうか悩んでるのですが
立ち読みしにいける環境じゃないので困ってまつ
428:デフォルトの名無しさん
07/11/25 03:28:07
C言語スレか推薦図書スレか買ってはいけない書籍スレで聞け
429:デフォルトの名無しさん
07/11/25 09:41:35
なんでこの程度の質問にも答えていただけないのですか?
しかも何故命令口調?
あなたに命令される覚えはありませんが?
430:デフォルトの名無しさん
07/11/25 09:48:01
スレタイ嫁よ白雉
431:デフォルトの名無しさん
07/11/25 09:48:26
スレ違い
432:デフォルトの名無しさん
07/11/25 09:52:24
いや>>428は凄く親切だと思うぞw
普通ならスレ違いの一言で切って捨てられる所を
適切な質問先を示してるんだから。
433:デフォルトの名無しさん
07/11/25 12:48:39
>>427
良書だよ
VC++版とあわせて両方かっとけ
434:427
07/11/25 13:28:26
なんで>>429みたいな成りすましがいるのこのスレ
お前らだまされてるの?
それともだまされてるフリしてんの?
435:デフォルトの名無しさん
07/11/25 13:55:13
鳥が付いてるわけでもなし
なりすましかどうかなんて誰も分からん
436:427
07/11/25 14:04:24
なんでわからないの?
437:デフォルトの名無しさん
07/11/25 14:16:24
>>424
URLリンク(msdn2.microsoft.com)
>TCS_RIGHTJUSTIFY
>The width of each tab is increased, if necessary, so that each row of tabs fills the entire width of the tab control.
>This window style is ignored unless the TCS_MULTILINE style is also specified.
438:427
07/11/25 14:17:09
俺が本物だ
439:427
07/11/25 14:31:13
そもそもTCS_RIGHTJUSTIFYって
#define 0x0000
だった希ガス
440:デフォルトの名無しさん
07/11/25 14:36:07
コンソールで GetKeyboardState を実行しても戻り値は成功になりますが
引数バッファには結果は何も押していない状態になります。(もちろん色々押しています)
ただ GetKeyboardState の直前に GetKeyState( 0 ) を実行すると
GetKeyboardState は正常な値が取得できます。
関数説明を見てもさっぱり挙動が理解できません、、
そもそも GetKeyboardState はコンソールで使用できないのでしょうか?
441:427
07/11/25 14:52:09
GetKeyboradStateもGetKeyStateも
メッセージキューが所有する仮想キー情報からキーの状態を取ってくる
メッセージキューはスレッドがUSER32.DLLに属するAPIを最初に呼び出した時に作成される
したがって初めにGetKeyboradStateを呼んだときは
キューが作られた直後なので仮想キー情報は真っ白
442:425
07/11/25 15:23:32
>>426
いや、コードから開閉したいんじゃなくて、開閉できるスタイルに設定したいんです。
>>425の画像のソフト以外で見たことないし自前でやってるのかな?
443:デフォルトの名無しさん
07/11/25 15:35:24
URLリンク(msdn2.microsoft.com)
>state
>Currently, it can only be the following.
>
>LVGS_NORMAL
>Groups are expanded, the group name is displayed, and all items in the group are displayed.
どうも使えないっぽい
.NET2.0では利用可能な模様
444:デフォルトの名無しさん
07/11/25 15:37:44
>>441
ありがとうございます。
説明不足でないですが、上記処理は何度も実行するループ部分でして
GetKeyState を入れるか入れないかで、
GetKeyboradState の動作がかわるのが、わけがわからないのです。
どちらもメッセージキューが必要ということは、
やはりコンソールではどちらも使用してはいけないのでしょうか?
_getch だと処理が止まってしまうので回避をしたいのが目的です。
445:デフォルトの名無しさん
07/11/25 15:54:40
GetAsync〜の方を使ってみたら?
446:425
07/11/25 15:57:42
>>443
サンクス。こっちでは何も書いてないんだけど、やっぱ無理かな?
URLリンク(msdn2.microsoft.com)
使い方は合ってるはずなのにできないってことは無理なのかもしれませんが
447:デフォルトの名無しさん
07/11/25 15:58:09
>>444
コンソールで入力街に入るのを回避したいなら
_kbhitでチェックしてから_getchが常道かと
448:デフォルトの名無しさん
07/11/25 17:14:34
>>437
おぉありがとうございます。TCS_MULTILINEも指定しないと無視されるようですね。
また一つ勉強になりました。しかし、>>439を見て調べたのですがTCS_RIGHTJUSTIFYは
0x0000と定義されてました。これって指定できないということなんですかね???
いくら>>424のようにしても、TCS_RIGHTJUSTIFYはあってもなくても変わりませんよね?
0と論理和とっても変化なしですしね・・・どうすれば・・・
449:440
07/11/25 18:17:38
>>445
同時キーや引数をいっぱい変えて GetAsyncKeyState を実行しまくるのが非効率でしたので
GetKeyboradState が理想でしたが、いろいろ無理そうですので素直に諦めます。
>>447
_getch よりも Get〜による同時押しも欲しかったのですが
いろいろ問題ありそうですんで諦めます 。
アドバイスありがとうございました。
450:デフォルトの名無しさん
07/11/25 19:16:31
>>425
それってツリービューじゃ駄目なの?
451:デフォルトの名無しさん
07/11/25 20:20:21
>>448
デフォルトでそういう動作っていう意味だろう
452:425
07/11/25 20:55:11
>>450
表示の切り替え(アイコンとか詳細とか)が必要なんです。
何とかならんかなぁ
453:デフォルトの名無しさん
07/11/25 20:57:57
>>452
予め自分でデータを持っておいて、ListViewがクリックされた時にその位置に挿入/削除して
擬似的にツリービュー的な動作を再現すればいいと思うが。
ネットで見かけるTreeListViewのサンプルとかがそういう事をしている。
454:425
07/11/25 21:10:19
う〜ん、そうするしかないようですね。
455:デフォルトの名無しさん
07/11/25 22:05:50
或いは詳細表示の時だけTreeViewに切り替えるとか。
456:デフォルトの名無しさん
07/11/26 02:09:51
比較的大きなドキュメントを読み込むときに、一気に読み込まず、一定のサイズごとに
シーケンシャルに読み込んでいくプログラム、例えばIE、でデータの読み込みにしたがって
右側のスクロールバーのスクロールボックスの大きさが小さくなっていく
ああいう動作はどうやって実現してるんだ?
スクロールバーの操作や、つまみ(スクロールボックス)のサイズの調整はできるんだが
読み込み中はスクロールバー自体が消えたようになってしまう。
ファイル読み込み(例えば256Byteずつ)のループ
{
ファイルの読み込み処理
行数を調べて
SetScrollInfo関数で、新しい範囲の設定
}
これでスクロールバーは更新されるはずなんだが・・ダメだ
ファイル全体の読み込み処理の終了の後、ウィンドウ全体を再描画させるとスクロールバーも出現する。
ちなみにクライアント領域の右側につく(WS_VSCROLL)、標準スクロールバーの話です。
SDK
457:デフォルトの名無しさん
07/11/26 02:16:02
>これでスクロールバーは更新されるはずなんだが
されねえよw
それだとループしてる間はWM_PAINTが発生しないから再描画されるわけないだろ
手っ取り早いのは副スレッドで読み込みとスクロールバーの設定をしてInvalidateRectする
そうすればメインスレッドは滞りなく再描画する
458:デフォルトの名無しさん
07/11/26 02:32:52
>>456
ウインドウメッセージを処理してやらなきゃ駄目だよ。
普通はマルチスレッド化、どうしてもスレッドが嫌ならループ内に
メッセージ処理を組み込む。
459:デフォルトの名無しさん
07/11/26 02:34:26
RDW_FRAME
RDW_UPDATENOW
SWP_DRAWFRAME
辺りでぐぐれ
460:デフォルトの名無しさん
07/11/26 02:34:58
それだけならDispatchMessageはさむだけで良さそうだけど
副作用出てくるような操作するときはマルチスレッドにするべき
461:デフォルトの名無しさん
07/11/26 02:36:09
こんな時間に何してんだお舞ら
462:デフォルトの名無しさん
07/11/26 02:41:05
質問に回答してるだけだが、何か?
463:デフォルトの名無しさん
07/11/26 02:45:46
>>446
まだ見てるか分からんけど
URLリンク(msdn.microsoft.com)
>LVGS_COLLAPSIBLE 状態フラグを使用すると、グループを折りたたんだり展開したりできるようになります。
>グループを折りたたむと、グループに属するリストビュー項目が非表示になります。
>プログラムで LVGS_COLLAPSED 状態フラグを使用すると、グループを折りたたむことができます。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4218日前に更新/231 KB
担当:undef