■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API 質問箱 Build3
251
名前:
?
:02/04/19 21:47
ビットマップについての質問ですが…
ビットマップってウィンドウに表示させようと思うとリソースファイル作ってそれを実行プログラムに含めますよね?
そしたらどうしても実行プログラムの容量が大きくなります;;
ということで 実行プログラムにビットマップイメージを含めないで、そのプログラムのウィンドウにビットマップを
表示したかったらどうしたらいいですか?
自分なりにソース考えたのですが…うまく行きません^^;
知ってる人教えて下さいm(__)m
私のソース^^;(失敗です)
HDC dc,memDc;
HANDLE hPic;
// hwnd はビットマップを表示したいデバイスコンテキストの HWND
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
(他のソース関係ないと思うから省略)
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
hPic = LoadImage(hThisInst,"D:\\ooo\\bpp.bmp",IMAGE_BITMAP,300,200, LR_LOADFROMFILE);
dc = GetDC(hwnd);
memDc= CreateCompatibleDC(dc);
SelectObject(memDc,hPic);
BitBlt(dc,50,50,50,50,memDc,1,1,SRCCOPY);
ReleaseDC(hwnd,dc);
DeleteDC(memDc);
252
名前:
デフォルトの名無しさん
:02/04/19 21:52
hPic = LoadImage(hThisInst,"D:\\ooo\\bpp.bmp",IMAGE_BITMAP,300,200, LR_LOADFROMFILE);
のところなんですけどhThisInst→NULLに訂正 打ち間違えましたすいません
NULLにしても成功してくれないんですけどね^^;
どうしたら 実行プログラムにビットマップイメージを含めないで、そのプログラムのウィンドウにビットマップを
表示出来るでしょうか?
253
名前:
484
:02/04/19 22:00
タスクバーに表示されないアプリケーションはどのように
作成するのでしょうか?
タスクトレーに入れるのが限界ですか?
254
名前:
デフォルトの名無しさん
:02/04/19 22:05
>>253
どこの484ですか?
見えないウインドウを親としてウインドウを作成すれば、
タスクバーに表示されないアプリケーションが出来ます
255
名前:
デフォルトの名無しさん
:02/04/19 23:10
>250
最大化する時に位置などを保存するのがいいのではないですか?
これは出来るかどうかは不明ですが,非表示にしてRESTOREして
取得ってのはどうかな?これなら見えないよね。
256
名前:
デフォルトの名無しさん
:02/04/19 23:34
>>250
GetWindowPlacementかな?
257
名前:
デフォルトの名無しさん
:02/04/20 01:45
>>252
LoadImageのフラグに LR_CREATEDIBSECTION を追加してみたら?
258
名前:
デフォルトの名無しさん
:02/04/20 02:14
>>251
ビットマップファイルが大きくてイヤだっていうのなら圧縮しとけ。
zlibあたり使えば簡単に実装できるぞ。
259
名前:
デフォルトの名無しさん
:02/04/20 02:42
>257
DIB使うならBitBlt→SetDIBitかな?
>258
画像はlibpngかlibjpeg使うともっと簡単。
260
名前:
250
:02/04/20 03:21
>>255
残念ながら最大化とかを解除するSW_は、全てウインドウをアクティブにするが付きまとうのです
そうですね。やはい最大化、最小化の前に保存しますか
助言ありがとうございました
261
名前:
デフォルトの名無しさん
:02/04/20 10:23
あの、既に存在するステータスバーのハンドルを得る方法ってないでしょうか。
(IDも知らない状態で)
262
名前:
261
:02/04/20 10:45
せっかく質問したのでage
263
名前:
デフォルトの名無しさん
:02/04/20 11:33
>>261
意味が比較的不明です。
264
名前:
デフォルトの名無しさん
:02/04/20 13:08
>>261
他アプリのステータスバーってことか?
Spy++でも使ってID調べるか、子ウィンドウを列挙して
クラス名が STATUSCLASSNAME のやつを探すかだな。
265
名前:
261
:02/04/20 14:13
>>263
ごめんなさい。
ステータスバーについての情報が全く無い状態から
そのハンドルを得るにはどうしたらいいか、という意味です。
>>264
いえ、他アプリというか、、、DLLなんで。。
>子ウィンドウを列挙してクラス名が STATUSCLASSNAME
EnumChildWindows と FindWindowEx で調べられるっぽいですね。
STATUSCLASSNAME がよく解んなかったけど、 commctrl.h の中を調べたらどういうものか解りました。
とりあえず試してみますね。有難うございます。
Spy++ の意味が解らなかった折れってDQN....... (; ´Д`)
266
名前:
261
:02/04/20 17:10
何言ってんだろう折れ…
EnumChildWindows はいらないですね。
FindWindowEx(hWnd,NULL,STATUSCLASSNAME,NULL); だけでいいんだった。
267
名前:
デフォルトの名無しさん
:02/04/21 00:22
テラパッドのエディット部分って、あれWin既存のEditなんですか?
改行が↓ だったり、矩形選択できたりと不思議なんですが…
268
名前:
デフォルトの名無しさん
:02/04/21 00:27
>>267
自分で書いてるソフトが多い。
269
名前:
デフォルトの名無しさん
:02/04/21 00:31
Win標準のエディットかどうか、Spyしてみればわかる
270
名前:
デフォルトの名無しさん
:02/04/21 00:46
>>268
なんと!すごいですね
入力を漢字変換する方法とか今の自分ではさっぱり検討がつきません…
猫でもわかるプログラミング の278章から見ればわかるかな…?
>>269
なるほど、そういう方法もありましたね〜
271
名前:
257
:02/04/21 02:28
>>259
>DIB使うならBitBlt→SetDIBitかな?
BitBlt()で描画できる。DrawDibDraw()でもいいけど。
SetDIBits()は関係ないでしょ。
272
名前:
デフォルトの名無しさん
:02/04/21 03:50
タスクトレイに入れるアイコンの大きさは何だと、絵が崩れなくてすみますか?
11,12,13のどれも崩れます(縮小・拡大される)。
273
名前:
デフォルトの名無しさん
:02/04/21 03:55
16x16じゃねーの?
274
名前:
デフォルトの名無しさん
:02/04/21 04:10
>>272
スピーカやダイアルアップのアイコンをどっかのdllから佐賀せ!
275
名前:
259
:02/04/21 04:50
>>271
失礼しました。
BitBltで描画できます。脳みそにDIB叩き込むため逝きます。
276
名前:
272
:02/04/21 04:51
リソースみたら16でした。
277
名前:
デフォルトの名無しさん
:02/04/21 12:43
>>260
>>256
は無視かよ
GetWindowPlacementで何の問題もなくできるぞ
278
名前:
251
:02/04/21 13:41
ども251です
あのあといろいろ調べたら
こんなソースでいけるみたいです^^;
自分でまだ確かめてないですけど^^;
私のソースとあまり変わらないですね…やっぱりLR_CREATEDIBSECTIONこのフラグが絶対必要なのかな〜
あとDeleteObject(hBitmap);かな・
ということで確かめてきます・成功できるといいな〜
HDC hDC = NULL, hDCBitmap = NULL;
HBITMAP hBitmap = NULL;
hDC = GetDC(hWnd);
hDCBitmap = CreateCompatibleDC(hDC);
hBitmap = (HBITMAP)LoadImage(NULL, BMPのFILEのNAME, IMAGE_BITMAP,
50, 50, LR_LOADFROMFILE|LR_CREATEDIBSECTION);
SelectObject(hDCBitmap, hBitmap);
BitBlt(hDC, 1, 1, 50, 50, hDCBitmap, 0, 0, SRCCOPY);
DeleteDC(hDCBitmap);
DeleteObject(hBitmap);
ReleaseDC(hWnd, hDC);
279
名前:
デフォルトの名無しさん
:02/04/21 16:57
マウスの移動できる範囲を制限するプログラムを作りたいのですが、
グローバルマウスフックでWM_MOUSEMOVEやWM_NCMOUSEMOVEを
とらえて、LPARAMの値を変更したりしてみたのですが、
まったく変わりがありません。
前のスレで似たようなのがあったのですが、この場合、どうすれば
マウスの移動可能な範囲を制限できるのですか?
280
名前:
デフォルトの名無しさん
:02/04/21 17:23
>>279
WM_MOUSEMOVE の LPARAM はマウス位置を「教えてくれる」だけなので、
あれをいじっても何も変わりません。
マウスの移動範囲を制限したいなら ClipCursor を使うよろし。でも乱用は禁物。
281
名前:
259
:02/04/21 17:23
>279
ClipCursor()とかSetCursorPos()とか。
(WM_MOUSEMOVE...はマウスが移動ことをシステム→MyWndowに
通知する)
282
名前:
デフォルトの名無しさん
:02/04/21 17:25
↑名前の259は特に意味ありまん。無視してください
283
名前:
279
:02/04/21 19:08
>280
,281
どうもありがとうございます。参考になりました。
早速やってみます。
284
名前:
278を見て…
:02/04/21 22:23
>>278
を見てふっと思いついたのですが…BitBlt関数だと、指定された長方形を
そのまま クライアント領域にコピーする…すると、もしシューティングプログラムの場合で
キャラクターを表示するとしたら…(まさか ま四角のキャラはいないでしょう)後ろの背景があるなら…合わなくなるのでは?
そういう時ってどうしたら言いのでしょうか?複雑なキャラの輪郭より内側だけコピーする手はないのでしょうか?
やはりそんな都合のいい関数はないのでしょうか?だとしたらシューティングゲーム作ってる人たちどうしてるのだろうか?
知ってる先人が、おられましたら是非教えていただけないでしょうか?m(__)m
285
名前:
デフォルトの名無しさん
:02/04/21 22:32
>>284
ここの「白黒スプライト」の部分を読むべし
ttp://homepage1.nifty.com/CavalierLab/lab/win/transparent.html
286
名前:
284
:02/04/21 23:05
>>285
ありがとうございます
なるほどAND演算とOR演算はの意味がやっと分かりました
287
名前:
なるほど
:02/04/21 23:25
ほうほう
>>285
実は僕も知りませんでした^^;
ありがとう
288
名前:
デフォルトの名無しさん
:02/04/21 23:27
GDI+でカラーキー付き転送ってなかったっけ
289
名前:
デフォルトの名無しさん
:02/04/22 01:52
自作のCOM(VC6)で、同じCOMのなかに入っているATLオブジェクトを他のATLオブジェクトで
インスタンス化して使うことってできるんでしょうか?
MyCom.Aaa->CAaa
MyCom.Bbb->CBbb
で、CAaaの中で、CBbbをインスタンス化できないもんかと。
なんとなく、かなり無理なような気がしますが・・
290
名前:
デフォルトの名無しさん
:02/04/22 07:45
GlobalAllocとmallocの動作上の違いってなんですか?
DLL作ろうとしてるんですが、メモリ確保はどちらでやったほうがいいやら。
291
名前:
290
:02/04/22 07:49
さげちゃった
292
名前:
デフォルトの名無しさん
:02/04/22 09:05
>>290
dllで確保したメモリを利用者(exeとか)が解放する場合は、
Global/Local/Heap〜 等APIを使う。
逆に、確保した側が解放する場合はどっちでもいい
293
名前:
290
:02/04/22 10:15
>>292
なるほどサンクスです。
GlobalAllocに挑戦してみよう(^^;
294
名前:
デフォルトの名無しさん
:02/04/22 17:08
タスクトレイってどうやって使うの?
295
名前:
デフォルトの名無しさん
:02/04/22 17:22
>>294
マウスでクリック。
タスクトレイへの登録方法とかだったらgoogleすれば腐るほど
出てくると思うけど。
296
名前:
デフォルトの名無しさん
:02/04/22 21:00
えっと、プログレスバーをMFCを使わずにWinで表示したいのですが、
hwndProgressCtrl = CreateWindowEx(0,PROGRESS_CLASS,"",
WS_VISIBLE | WS_CHILD | PBS_VERTICAL | PBS_SMOOTH,
10, 50, 20, 80, hDlg, (HMENU)IDC_PROGRESSBAR, g_hInstance, NULL);
こんな感じで書いたのですがエラーが出てしまいます。
エラー内容はPROGRESS_CLASSが定義されていないとか、そんなのばっかりです。
どうすれば直りますか?
297
名前:
デフォルトの名無しさん
:02/04/22 21:11
>>296
だから、定義すればいいって言ってるだろ。
#define PROGRESS_CLASSA "msctls_progress32"
それか、commctrl.hをインクルード
298
名前:
:02/04/22 21:50
http://tmp.2ch.net/test/read.cgi/download/1019446859/
皆さんの力で助けて下さい。
299
名前:
272
:02/04/23 03:09
>>272-276
アクティブタイトルバーのサイズによって、
タスクバーに表示されるアイコンの大きさが決まるみたい。
300
名前:
新手の嵐か?
:02/04/23 08:28
>>296
>エラー内容はPROGRESS_CLASSが定義されていないとか、そんなのばっかりです。
>どうすれば直りますか?
そんなのばっかりだったら
>>297
で言われてるように定義すりゃいいじゃん。
ちゃんと読めよ。
301
名前:
初心者
:02/04/23 14:17
intとBYTE型を比較する時、
BYTEをキャストしたほうがいいのでしょうか?
intにはSendDlgItemMessageでCB_GETCURSELした値が(0〜Fの範囲内)
BYTEには0〜Fが入っています。
双方向リストのノードのメムバなので経費節減の為BYTE使ってみました。
でも符号なしのBYTE型を符合ありのintにキャストするのは
なんか気持ち悪いんですが・・・
302
名前:
デフォルトの名無しさん
:02/04/23 14:41
>>301
> 双方向リストのノードのメムバなので経費節減の為BYTE使ってみました。
無意味な節約すんなよ。
303
名前:
初心者
:02/04/23 14:53
まじで無意味なんすか?
組込み上がりの先輩に節約しるって偉そうに言われたんですが。
もし無意味なら・・・ニヤソ
304
名前:
デフォルトの名無しさん
:02/04/23 14:53
>>302
メンバをBYTEにすれば経費節減出来るなら喜んでやるぞ
305
名前:
デフォルトの名無しさん
:02/04/23 14:58
>>303
普通は構造体に隙間ができるから節約にはならないし、
隙間を詰めるオプション使っても、ノードひとつにつき
3バイトの節約にしかならないじゃん。
ノードが10万あったとしても、300Kバイト弱の節約にしか
ならないよ。
306
名前:
デフォルトの名無しさん
:02/04/23 14:59
少なくとも巧くやればメモリの節約になるだろう
別に0〜Fと判っているなら、逆にintをキャストしてもいいだろうし
307
名前:
デフォルトの名無しさん
:02/04/23 15:16
メモリの節約にはなるが、経費は節約できねーだろ
308
名前:
初心者
:02/04/23 15:20
とりあえず上位ビットは使わないのでそのまま比較とか代入しちゃってます
309
名前:
デフォルトの名無しさん
:02/04/23 16:31
Win32でまともにプログラミングしようと思ったら、
AdvancedWindowsProgrammingは暗記しないとダメっぽいですね。
310
名前:
デフォルトの名無しさん
:02/04/23 19:43
昨日はありがとうございます。
もうひとつですが、プログレスバーの色(背景とバーの色)
はどのように変更するのでしょうか?
311
名前:
デフォルトの名無しさん
:02/04/23 21:14
>310
それくらいヘルプに載ってるとは思わんのか?
PBM_ で始まるやつを一通り見てみろ。
312
名前:
デフォルトの名無しさん
:02/04/23 21:39
lpszとpszとszって何が違うんですか?
313
名前:
デフォルトの名無しさん
:02/04/23 22:38
char *psz;
char far *lpsz;
char sz[LENGTH];
なお、Win32では、far, nearの区別はない。
314
名前:
デフォルトの名無しさん
:02/04/23 23:55
>>313
あらやだ、また???な言葉が。
far nearってなんですか?
315
名前:
デフォルトの名無しさん
:02/04/24 00:09
エクスプローラでファイルを同一ディレクトリにコピーすると、「コピー(n)〜」と
リネームされますね。このリネーム結果のシミュレートというか、リネーム名を
あらかじめ知ることってできるんですか?
::SHFileOperation()の "LPVOID hNameMappings" で「処理された後の」結果は
知ることができますが...実際の処理なしで取得できないかなぁ、と。
316
名前:
デフォルトの名無しさん
:02/04/24 00:22
>>314
過去の遺物なので気にするな。
317
名前:
デフォルトの名無しさん
:02/04/24 01:09
猫の218章で
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
・・・
}
という表現があるのですが、これって
if(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
・・・
}
としなくてもいいのでしょうか?
318
名前:
デフォルトの名無しさん
:02/04/24 01:10
if((findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY) {
・・・
}
でした。
319
名前:
デフォルトの名無しさん
:02/04/24 01:11
>>317
はい。
320
名前:
デフォルトの名無しさん
:02/04/24 01:35
FindFileData.dwFileAttributes の FILE_ATTRIBUTE_DIRECTORY
にあたるビットが1ならば
(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
の結果は真なの???
321
名前:
デフォルトの名無しさん
:02/04/24 01:40
>>320
いえーす。
322
名前:
デフォルトの名無しさん
:02/04/24 01:42
>>320
Ndiyo
323
名前:
デフォルトの名無しさん
:02/04/24 01:43
>>320
Vâng
324
名前:
デフォルトの名無しさん
:02/04/24 01:44
Kyllä
325
名前:
317
:02/04/24 02:27
あ、わかりました!!
C言語では偽が0で真が0以外という扱いだから、
例えば
0010 & 0010 → 0010で真
1000 & 0010 → 0000で偽
となる。
よって、該当ビットが1になっていなかったら、
ビット演算の結果は必ず0となるということですね。
326
名前:
デフォルトの名無しさん
:02/04/24 02:46
よくできました。花○
327
名前:
デフォルトの名無しさん
:02/04/24 02:49
質問→回答→後処理
のお手本を見た気がした。
328
名前:
317
:02/04/24 02:52
照
329
名前:
デフォルトの名無しさん
:02/04/24 03:26
ウィンドウハンドルからからモジュール名(ファイル名)を手軽に取得するにはどうしたらいいのでしょうか?
Win9xでもNTでも使えて。
330
名前:
デフォルトの名無しさん
:02/04/24 04:21
GetWindowModuleFileName
331
名前:
デフォルトの名無しさん
:02/04/24 06:56
うーん、NT系では別プロセスが作成したウィンドウハンドルからは取得できないみたいです。
ttp://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp228%2F4%2F69%2Easp&LN=JA
ttp://msdn.microsoft.com/library/en-us/winui/windows_6ap1.asp?frame=true
332
名前:
デフォルトの名無しさん
:02/04/24 12:19
TCP/IPでクライアントと通信するためのActiveXコントロールを作っているんですが、
accept()→recv()→Fire_Request()→send()→close()
ってな処理の繰り返しでメモリリークが起きているようです。
ただし、_CrtDumpMemoryLeaks()で検出できるリークはありません。
BoundsCheckerなんぞを使って::SysAllocString()系のリークも無いことを確認しました。
ループの先頭から末尾の間に、BoundsCheckerで検出できる差分はありませんでした。
しかし、タスクマネージャで観察していると、何度も処理を繰り返すうちに使用メモリが
上がっていきます。一定ではないんですが、10回に数KBぐらいでしょうか。
で、VirtualQuery()で処理ごとのメモリ空間の状況を全てダンプさせてみたのですが、
プロセス・ヒープのprivate領域が、一定ではないんですが、
処理ごとに増えていっているようです。
これは、何でしょうか?
一応、サーバ用のコンポーネントなので、無視するわけにも行かず困っています。
使用しているのは、winsock,ATL,STLです。MFCは使っていません。
GlobalAlloc()も使っていません。
333
名前:
デフォルトの名無しさん
:02/04/24 15:51
サーバに Winてのが間違ってるんだから、
それでも選んだのならリブートを運用に組み込むしかないでしょう。
334
名前:
デフォルトの名無しさん
:02/04/24 16:18
>>333
分からなければ黙ってなよ。沈黙は金だぜ?
335
名前:
332
:02/04/24 16:28
Σ(゚д゚lll)ガーン
状況的に、お手上げなケースなんでしょうか?
しかし、世の中にTCP/IPコントロールなど掃いて捨てるほどあるし。
ひょっとしたら、同じような経験をされた方がいるのでは?と考えて
書き込んでみたのですが・・・
336
名前:
デフォルトの名無しさん
:02/04/24 17:02
>>335
あのさ、不明な現象が起きたらすぐ聞くんじゃなくて、
せめてどこで起きているのかを突き止める。
もしくは、現象が起こる最小限のソースを出せ。
あと、動作中に使用メモリが少しずつあがっていくのはどんなソフトでもそうなる。
十分に長時間運用した後もまだ際限なく上がっていくならそれはリーク。
ある程度で増加が止まったら正常。
337
名前:
332
:02/04/24 17:29
>>336
すみません。
現在、上の全メモリ空間ダンプの差分を取って、発生箇所の絞込み中です。
これについては、追って報告します。
>あと、動作中に使用メモリが少しずつあがっていくのはどんなソフトでもそうなる。
現在、当該コントロールで行っているテストは、
同じデータのやり取りをえんえんと繰り返しているのですが、
継続的に、使用メモリ量(プロセスのデフォルト・ヒープ内にprivateとして確保された量)が
上昇してゆきます。
リーク・・・ですよね。
338
名前:
デフォルトの名無しさん
:02/04/24 17:38
>継続的に、
(略)
>リーク・・・ですよね。
だから、継続的とはどの程度の時間調査したわけ?
たとえば、24時間とか運用した結果それでもさらに上昇が止まらなければリークの可能性が高いけど、
ライブラリ内でのヒープの運用方法によってそんな現象起こりえるから、
数分や数時間単位の運用結果でリークと判断するのは適切ではないということ。
339
名前:
332
:02/04/24 17:45
>>338
全力でピンポン通信させる(メールのリダイレクトで.forwardを双方向に切ったような状態)
と、使用メモリがしばらく上昇した挙句に死亡します。
340
名前:
デフォルトの名無しさん
:02/04/24 17:46
>同じデータのやり取りをえんえんと繰り返している
のなら、一度全てグローバルに固定幅でデータ取って 再現させてみたら?
それでも増えるようなら API側の問題だし
増えないならアプリ側の問題(あるいは単にメモリの断片化が起きてるだけ)
まさか結果をファイル出力してて メモリ使用量が増えるとか言ってないだろうね?
341
名前:
デフォルトの名無しさん
:02/04/24 18:49
日本語コード変換をする必要に迫られているのですが、perlのjcode.plのように
VCにも定番のライブラリってあるでしょうか?
342
名前:
332
:02/04/24 20:08
すみません。
リーク解消してました。
もともと::SysAllocString()のリークがあったのですが、
それを発見するまでに色々埋め込んでたデバッグ用のコードが
メモリ増加現象起こしてたようです。
ファイルへのダンプとか。
::SysAllocString()のリークを取ってからは、リリース用のコードでは
リークが発生していなかった模様です。
ピンポン通信もメモリの上昇がすぐに安定し、うまくいきました。
ここしばらく、これを追ってたので少々疲れがたまってたようです。
回線切って布団に逝ってきます。
お騒がせしました。
343
名前:
デフォルトの名無しさん
:02/04/24 20:11
SDKでプログラミングするとき、スタティックテキストってあるでしょう。
それで、その背景を透明(色指定でもOK)、文字色の変更などは出来るのですか?
344
名前:
デフォルトの名無しさん
:02/04/24 22:20
>>329
手軽には取得できない
CreateToolhelp32Snapshot()
GetModuleFileNameEx()
あたりで検索
345
名前:
デフォルトの名無しさん
:02/04/24 23:17
>329
コードがまるまるMSのサイトに載ってたよ。
346
名前:
329
:02/04/25 04:11
見つけました。
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q175030
347
名前:
デフォルトの名無しさん
:02/04/25 15:21
アプリケーションのキー入力にアクセラレータを使用しているのですが、
アクセラレータだと子ウインドウのEDITに文字を入力しているときでも
勝手にメッセージが実行されてしまうので困ってます。
たとえば、xにアプリケーションの終了を割り当てて、
EDITでxを入力するとアプリケーションが勝手に終了して困ります。
WM_CHAR/WM_KEYDOWNからキーを取得する方法はすべての環境で
互換性があるわけではないので、どうしたらいいのか迷っています。
どんな解決方法があるのでしょうか?
348
名前:
デフォルトの名無しさん
:02/04/25 16:21
>>347
なんかとても違和感があるんですが ALTとかCTRLとかと組み合わせない 素の 'A' を
アクセラレータに使ってるんですか?
349
名前:
デフォルトの名無しさん
:02/04/25 17:14
ツールチップを強制表示する方法はありませんか?
350
名前:
デフォルトの名無しさん
:02/04/25 17:23
>>349
もう一度質問を練り直して 適切なスレで質問しなおすべきでしょう
351
名前:
デフォルトの名無しさん
:02/04/25 17:57
>>350
なぜに?
通常のツールチップは作れているんだが、
任意のタイミングで強制的に表示する方法を知りたいんだけど。
352
名前:
デフォルトの名無しさん
:02/04/25 18:54
>>348
実際にデフォルトではメタキーと組み合わせていますが、
設定次第で好きなようにカスタマイズできるので、その可能性もあると言うことです。
なるべくなら、カスタマイズを制限したくないのですが。
353
名前:
デフォルトの名無しさん
:02/04/25 19:06
メッセージの宛先hwndをみて、TranslateMessageを通さない、とか。
354
名前:
デフォルトの名無しさん
:02/04/25 22:31
>>352
んじゃあそのユーザーはただの x を終了に使いたい意志があるのだから、エディットボックス入力中だろうがただの x で終了出来ないと不良品だと文句いわれちゃうぞ。
355
名前:
デフォルトの名無しさん
:02/04/26 00:31
突然なんですけど、ソケットプログラムです。
status = WSAStartup( MAKEWORD(1,0), &Data);
でstatusは0なんで、エラーではないようなんですけど、
そのあと、
hSocket = socket(PF_INET,SOCK_STREAM,0);
でソケットが作れてないらしくて、
ソケット文の直後でWSAGetLastError()
してみると、コード10093==WSANOTINITIALISEDのエラーで
つまりWSAStartup()が上手く言ってないという結果なのです。
調べまくったんですがわけがわかりません。
バージョン1.0のところも2.2 2.1などやってみたがダメです。
お助けください。
356
名前:
デフォルトの名無しさん
:02/04/26 00:52
普通1.1か2.0だろ
357
名前:
デフォルトの名無しさん
:02/04/26 02:49
>>343
case WM_CTLCOLORSTATIC:
if(GetDlgCtrlID((HWND)lParam) == IDC_STATICXX) {//目的のスタID
SetTextColor((HDC)wParam, RGB(255, 0, 0)); // 文字
SetBkColor((HDC)wParam, RGB(0, 255, 0)); // 背景
}
break;
この場で打っただけなので、間違いがあるかも知らん。
どっちにしろ、親ウィンドウ(ORダイアログ)で WM_CTLCOLOR か
WM_CTLCOLORSTATIC を使ってください。じゃ
358
名前:
デフォルトの名無しさん
:02/04/26 05:21
巨大なiniファイルを作るアプリで
終了と同時に(おそらくiniファイルを完全に保存しきってないうつに?)
新たに起動させたらiniファイルを正しく読み込まないようなんです。
(確信はないですが)
こういうことはあるんでしょうか?
それとも保存処理を間違っているのでしょうか?
359
名前:
デフォルトの名無しさん
:02/04/26 08:27
iniファイルは32kbだか64kbだかのサイズ制限があったと思う
360
名前:
デフォルトの名無しさん
:02/04/26 08:46
64kbだね<制限
361
名前:
358
:02/04/26 10:18
>>359-360
なるほど!
サイズ制限でしたか!。ぎりぎりOverしているようでした。
調べてみると64KBとありました。それでレジストリを使うわけですね。
http://nacelle.cug.net/beginner/04002.html
別の保存方法を考えます。
ありがとうございました。
362
名前:
デフォルトの名無しさん
:02/04/26 11:51
355です。
おい、みんな元気?
エラーの原因わかったっぽいよ。
むかしさぁ、ws2_32.dllとかさ、wsock32.dllを
C:\\にコピーしてimplibの実験とかしてたことが
あったわけ。俺のパソにws2_32.dllもwsock32.dllも2つ
あるわけなんだけど、それが原因っぽい。
なんでかっていうとアプリを適当なほかのdirectoriに移したら
10093エラーは出ませんでした。
でさ、問題があるんだけどさ、C:\\にコピーしたws2_32.dllと
wsock32.dllが、なんだかライトプロテクト関係かなんかで、移動も
削除もできないんだけど、
どうすればいいですか?
363
名前:
デフォルトの名無しさん
:02/04/26 12:02
あーーーーー
一人じゃできないよーーーー
たすけてくれよーーーー
(泣き入ってもダメですか?)
364
名前:
デフォルトの名無しさん
:02/04/26 12:22
>>363
話し言葉で書くからすごくわかりづらい。
助けを請うならそれなりの態度で。
365
名前:
デフォルトの名無しさん
:02/04/26 12:30
ノリをそのまま伝えてしまいました。
ws2_32.dllシステムフォルダーから
C:\\にコピーしたんですけどそれが消えません。
消えてくれないとAPIで書いたソケットプログラムに
支障をきたすんです。消すにはどうしたらいいか聞きたいです。。
他逝けとは言わずここで教えてください。
366
名前:
デフォルトの名無しさん
:02/04/26 12:50
>>365
なんで支障をきたすんだ?
パスの通った位置にws2_32.dllがあれば普通は問題なく動くぞ
367
名前:
デフォルトの名無しさん
:02/04/26 12:52
>>365
OSの起動前なら消せるだろ?
368
名前:
デフォルトの名無しさん
:02/04/26 13:05
>>365
違うみたいだよ。C:\windows\systemと、C:\
の両方にws2_32.dllがあるんだけど、で、最初、作った
アプリをC:\で動かしていたわけなんだけど、
そーすると、多分C:\のws2_32.dllが優先されるんじゃないかな。
C:\unkoっていうディレクトリ作ってそこで動かしたら接続(connect())
も上手くいったよ。システムフォルダのws2_32.dllがちゃんと認識
されたんではないかな。別にC:\のws2_32.dllは壊れていない(サイズとか
まったく同じ)んだけど、ws2_32.dllはシステムフォルダにないと
きちんと動かないんじゃないかなと思う。
まとまらなくて悪いけど、C:\にws2_32.dllがあって、そこ(C:\)で
ws2_32.dllを使うアプリを動かすとだめだ。と。
ws2_32.dllはシステムフォルダの奴じゃないとまずい、と。
・・・・
369
名前:
デフォルトの名無しさん
:02/04/26 13:31
じゃぁ、セーフモードで消せば?
370
名前:
デフォルトの名無しさん
:02/04/26 13:44
>>361
しかしMSはレジストリに巨大な設定を保存しないように推奨しているという罠。
(MSDNでWindows2000アプリケーション仕様書を参照のこと)
371
名前:
OSはなんだよ?
:02/04/26 21:41
>>368
ws2_32.dll を ws2_32.bak とかにリネームして再起動。
そうすれば Windows ディレクトリの中の ws2_32.dll を
使うだろ?
372
名前:
デフォルトの名無しさん
:02/04/27 14:17
Win98だYO.
あぁ、rename も move もできないです。。
373
名前:
デフォルトの名無しさん
:02/04/27 14:18
>>372
おまえ馬鹿か?
セーフモードで名前かえればいいだろ。
それか、DOSに落ちて消せ
374
名前:
デフォルトの名無しさん
:02/04/27 14:40
セーフモードやってみるYO
DOSでもダメなんだYO
・・・・セーフモードってどうやるんだよ・・・
375
名前:
デフォルトの名無しさん
:02/04/27 14:45
>>374
DOSってDOSプロンプトのこといってんじゃなかろうな
376
名前:
デフォルトの名無しさん
:02/04/27 14:58
ん?違うのか!?じゃぁセーフモードのDOSおんりー?
(セーフモードでも共有違反とかが相変わらず出ました。)
377
名前:
デフォルトの名無しさん
:02/04/27 15:00
>>376
たしかDOSモードで再起動とかあったろ?
忘れたけど
378
名前:
デフォルトの名無しさん
:02/04/27 15:14
>>376
セーフモードでネットワークサポートはずしてみろよ
379
名前:
デフォルトの名無しさん
:02/04/27 15:14
つーかね、ここはパソコンサポートBBSじゃないんだから、
そろそろ引っ込んでくれないかね
380
名前:
デフォルトの名無しさん
:02/04/27 15:17
つーか、これ以上は初心者板の世界だと思われ…
381
名前:
デフォルトの名無しさん
:02/04/27 15:28
>379
っせーなできたよありがとうございました。
winsock2.hつかってたってこーいうこともあるんだYO
382
名前:
デフォルトの名無しさん
:02/04/27 15:29
なかなか詳しいじゃないか。側近に加えてやろう。
383
名前:
デフォルトの名無しさん
:02/04/27 15:32
>winsock2.hつかってたってこーいうこともあるんだYO
意味不明だヴォケ。
おまえが妙なところにコピーしたのが原因だろ
winsock2.hの所為にするなよ
384
名前:
デフォルトの名無しさん
:02/04/27 18:11
初心者とか言うからじゃねーかョ
385
名前:
デフォルトの名無しさん
:02/04/27 18:13
初心者以外の何者でもねーだろ?
つか、ageんな
386
名前:
デフォルトの名無しさん
:02/04/27 18:16
なになに、winsock2.hって新しいライブラリなんだ
どんなライブラリなの教えて!!
387
名前:
デフォルトの名無しさん
:02/04/27 18:17
>>386
ソケット
388
名前:
親切な人
:02/04/27 18:18
ヤフーオークションで、凄い人気商品、発見!!!
「高性能ビデオスタビライザー」↓
http://user.auctions.yahoo.co.jp/jp/user/NEO_UURONNTYA
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
389
名前:
デフォルトの名無しさん
:02/04/27 18:21
そんなの知ってるよ、厨房
>>387
390
名前:
デフォルトの名無しさん
:02/04/27 18:22
あげるなよ消防
391
名前:
デフォルトの名無しさん
:02/04/27 18:22
>>389
ごめんな、消防
392
名前:
デフォルトの名無しさん
:02/04/27 18:23
自作自演するなよ
393
名前:
デフォルトの名無しさん
:02/04/27 18:24
なんか、ハーフコネクトが出来るとか、ステルスが使えるとか、わくわく
>>391
394
名前:
デフォルトの名無しさん
:02/04/27 19:19
Editのメニューを変更することって出来るんでしょうか?
395
名前:
デフォルトの名無しさん
:02/04/27 19:28
Edit WindowのContextMenu?なら、Subclassすればいくらでも。
396
名前:
デフォルトの名無しさん
:02/04/28 06:49
SDKで件名のようにレジストリのとあるキーの中にあるキーを列挙するプログラムを書こうとしているのですが、ファイルの列挙のように何か手段は無いでしょうか?
397
名前:
デフォルトの名無しさん
:02/04/28 07:38
列挙できるだろ?簡単に
398
名前:
デフォルトの名無しさん
:02/04/28 07:59
http://www.asia.microsoft.com/japan/developer/library/default.asp?URL=/japan/developer/library/jpwinpf/_win32_regenumkeyex.htm
399
名前:
デフォルトの名無しさん
:02/04/28 08:00
>>397
質問スレでそんなレス初めて見た
400
名前:
デフォルトの名無しさん
:02/04/28 08:41
>>399
え? 出来るかどうか重要な情報で、しかも簡単にとまで答えてもらってて不満?
401
名前:
デフォルトの名無しさん
:02/04/28 09:57
リストボックスにデータを足すのってAPIではどうすればいいですか。
GetDlgItem(hDlg,IDC_LIST_XXX);
で取得する所まではわかるのですが…。
402
名前:
398
:02/04/28 10:09
>>399
たま〜〜〜に、いるよ。まあ、
>>396
は、「ないでしょうか ?」と聞いて
るから、
>>397
の「できる」と言う情報で十分と言えん事もないけどね。
でも普通は、「こいつやり方わからんのだな、よしよしおにーさんがヒン
トをあげるから勉強してね。」って感じで、
>>398
みたいに書いちゃるの
が普通だと思う。
でも、RegEnumEx() って
>>400
が言うようにとっても「簡単」に見つか
るんだけど、なんで
>>396
が見つけられなかったかがちょい不思議。
403
名前:
398
:02/04/28 10:24
>>401
得られた、ウィンドハンドルに対して SendMessage() で、
LB_ADDSTRING か LB_INSERTSTRING メッセージを投げれば OK。
PostMessage() で投げてもいいけど、処理されるまで文字列を保持して
おく必要が有るから要注意。
404
名前:
デフォルトの名無しさん
:02/04/28 10:25
enumerateという単語を知らなかったから
405
名前:
デフォルトの名無しさん
:02/04/28 10:57
>>404
"Registry functions" で引けば一覧が出てくると思うが・・・
順番に調べてけば見付かるから単語知らなくても・・・
むしろ調べ方がわからん説を支持
406
名前:
デフォルトの名無しさん
:02/04/28 11:08
そもそもMSDNライブラリを知らなかったんじゃないのかな?
俺もこの板に入り浸るようになるまでは知らなかったよ。
でも、今回の場合は「レジストリ 列挙」でGoogleすれば、
http://www.google.co.jp/search?q=%83%8C%83W%83X%83g%83%8A%81@%97%F1%8B%93&hl=ja&lr=
十分な情報が出るんだよね。
自分で検索すらしない厨房か…。
407
名前:
394
:02/04/28 11:12
>>395
どうもです。
でも変更する方法が解らない、、、。(;´Д`)
408
名前:
デフォルトの名無しさん
:02/04/28 14:06
>>403
WM_RBUTTONDOWNなり、WM_CONTEXTMENUなり、お好きな方をどうぞ
409
名前:
ghuty
:02/04/28 17:14
こんにちは
あの〜CPUの使用率を収得するAPI関数ってありますか?
自分なりに調べたのですが、見つかりません…
もしかして複数のAPI関数を組合さないといけない?
どなたか教えて下さい
410
名前:
Performance Data Helper
:02/04/28 17:16
>>409
> もしかして複数のAPI関数を組合さないといけない?
はい。
411
名前:
409
:02/04/28 17:20
>>410
恐縮ですが
どんなAPIを組合せればいいですか?
412
名前:
デフォルトの名無しさん
:02/04/28 17:33
>>409
PDH でどうぞ。レジストリからもとれますよ。
413
名前:
デフォルトの名無しさん
:02/04/28 19:22
アプリケーションを任意の時点で終了させるには
DestroyWindow()のほうがいいんでしょうか。
PostQuitMessage()ではまずいケースってありますか?
414
名前:
デフォルトの名無しさん
:02/04/28 19:28
WM_DESTROYでなんか後処理をするばあい、PostQuit....ではまずい。
415
名前:
デフォルトの名無しさん
:02/04/28 19:31
なるほど確かに。当たり前ですね。
さんきゅです。
416
名前:
デフォルトの名無しさん
:02/04/28 20:34
>>412
す、すいません(;;)
>PHDでどうぞ。レジストリからもとれますよ。
って言うコメントをいただいたのですが…あまり専門用語(←絶対違うけど)分かりません(汗
なんと言うか…出来ればモウスコシ分かりやすく解釈していただけませんか?
自分でも出来るだけ調べてみます。ほんとすいません;;
417
名前:
>416
:02/04/28 20:38
410氏の名前をgoogleにでも突っ込めばよいのではなかろうか。
418
名前:
412
:02/04/28 21:11
>>417
おっと見逃してました。すでに答えが出てたわけですな。
>>416
そういうわけで、Performance Data Helper について調べてみてください。
VB系ならWMIでやるのが便利です。
419
名前:
デフォルトの名無しさん
:02/04/28 21:12
>>417
ありがとうございます。おかげでいろいろ分かりました^0^
PHDとは「PHD」で始まるAPI関数のことなんですね
でもこれらの関数はWIN9x系でも使えるのでしょうか?
もし使えなかったら…
>>412
さんによると
レジストリという道があるわけですが…
レジストリ怖いです^^;レジストリのどこからCPUの使用率を収得するのですか?
どなたか教えて下さい
えっと私のOSはWIN98SEです
宜しくおねがいします
420
名前:
409
:02/04/28 21:19
>>418
はい。がんばります。ありがとうございます。
>>419
書いているうちに
>>418
さんがアップされたみたいです(汗
>>418
さんにも感謝です
でもPHDはWIN9x系で使えない?みたい?(←
>>419
の繰り返しですいません)
421
名前:
デフォルトの名無しさん
:02/04/28 21:22
>>403
有難うございます。
もう一つ知りたいのですが、実行ファイルの実行中の編集がしたいのです。
メモリー上に実行ファイルを上げたときは、ファイルの手動編集が、
不可じゃないですか。それで何とかファイルとメモリの関係を
切り離したいのですが、どうすればよいですか?
(どう検索するべきかもわからないのです。出来ればCでしたいので、
サンプルがあればありがたいのですが、詳しいページを紹介して
いただければ光栄です)
422
名前:
デフォルトの名無しさん
:02/04/28 21:23
で、409はPDHのことをいつまで「PHD」と言い間違えつづけるわけ?
423
名前:
デフォルトの名無しさん
:02/04/28 21:27
>421
その実行ファイルに次のようなコードを埋める。
1.起動時に、引数がMAGIC_WORDでなければ、
2'.適当でユニークなファイルを作って、自分自身をコピー
3'.MAGIC_WORD付きでCreateProcessし、
4'.終了する。
2.普通に処理を遂行する。
これが君の望みの動作かどうかは知らない。
424
名前:
409
:02/04/28 21:30
>>422
す、すいません
まちがってました;;
ホントすいません「PDH」です;;
425
名前:
デフォルトの名無しさん
:02/04/28 21:51
VC++のSDKで、キーが入力されるまで待たせたいと思い、
...
getch();
...
のようにしたのですが、上手く止まってくれません。
どうすれば、あるキーが押されるまで処理をストップできるのでしょう。
(空ループを使わないで)
426
名前:
デフォルトの名無しさん
:02/04/28 21:56
あの〜小も無い質問ですが、WM_CREATEが呼び出されないのは私だけでしょうか?
427
名前:
デフォルトの名無しさん
:02/04/28 21:57
SDKで、というなら、
WaitForSingleObject( GetStdHandle(STD_INPUT_HANDLE), INFINITE);
を挙げておこう。
428
名前:
425
:02/04/28 22:02
>>427
ありがとうございます。
使えそうな感じなので
この関数について調べて使ってみます。
429
名前:
デフォルトの名無しさん
:02/04/28 22:12
>>426
CreateWindow()を一度も呼んでなかったりして
430
名前:
425
:02/04/28 23:30
重ねて質問すいません。
427さんに教えてもらった関数を使ってみたのですが、
上手くいきません。GetLastErrorで調べても
ハンドルが無効となっていました。
GetStd...の代わりにSetStd...の方を使ってみてもだめみたいでした。
なぜでしょうか。もう一度教えてもらえませんか?
431
名前:
デフォルトの名無しさん
:02/04/29 00:01
>>423
アドバイスありがとうございます。
でも、いまいちよくわかりません。
何か参考になるページなどがあれば教えてください。
432
名前:
デフォルトの名無しさん
:02/04/29 00:04
>>431
要するに、実行中のファイルを書き換えるんじゃなくて、
別のファイルを実行してそっちから本体を書き換えるってことでしょ。
433
名前:
デフォルトの名無しさん
◆E12W1IlM
:02/04/29 00:26
>>426
ウィンドウは開くんですか?
434
名前:
デフォルトの名無しさん
:02/04/29 01:21
>>425
フラグ使って、WM_CHARで処理すれば?
435
名前:
425
:02/04/29 01:32
>>434
レスありがとうございます
でも関数の途中で、いったん停止させるのが目的なので、
WM_CHARが来るまでに処理が進んでしまいます。
GetStdHandleが失敗する理由がわかれば何とかなりそうなんですが、、
(ちなみに環境はVC++6.0,WinMEです)
436
名前:
412
:02/04/29 02:29
>>425
,435
つーか、イベント(メッセージ)ドリブンを理解してないような気がする
437
名前:
デフォルトの名無しさん
:02/04/29 02:34
>>426
モーダルダイアログボックスだとWM_CREATEは来ないので、
WM_INITDIALOGで初期化する訳だが。
…外してるかな。
438
名前:
デフォルトの名無しさん
◆E12W1IlM
:02/04/29 03:02
あとはコントロールとかですかね。(この線はないか・・)
439
名前:
デフォルトの名無しさん
:02/04/29 10:52
>>436
イベントオブジェクトでフラグ作ったりする方がいいのかね。
440
名前:
425
:02/04/29 11:21
>>436
,
>>439
CreateHandleでハンドルを作って、WM_CHARがきたところで
SetEvent。ということもやってみたら今度は完全に止まってしまいました。
もしかしてシングルスレッドではだめとか。
完全にはずしてるんでしょうか?
441
名前:
デフォルトの名無しさん
:02/04/29 11:32
>>440
WaitforSingleobjectって知ってる?
442
名前:
425
:02/04/29 11:37
>>441
それもやってみたんですが...
443
名前:
デフォルトの名無しさん
:02/04/29 12:25
>>435
MessageBoxかましてみたら?
444
名前:
425
:02/04/29 12:39
>>443
うーん、どのキーが押されたのかも取得したいのでちょっと、、
HANDLE handle //グローバル
WndProc(...)
{
case WM_CREATE:
CreateEvent(NULL,TRUE,FALSE,NULL);
break;
case WM_char:
SetEvent(handle);
break;
}
としておいて、処理を中断させたいところで
WaitForSingleObject(handle,INFINITE);を挿入しているのですが、
どのあたりがまずいのでしょうか?
445
名前:
デフォルトの名無しさん
:02/04/29 13:06
>>444
PeekMessage でメッセージループを動かしながら WaitForSingleObject しないと、
そもそも WndProc に処理が行かないと思うぞ。
446
名前:
デフォルトの名無しさん
:02/04/29 13:41
>>444
>うーん、どのキーが押されたのかも取得したいのでちょっと、、
だったらプログラム構造の設計がおかしい。
「何かキーが押されるまで待つ」んじゃなくてだな。
一旦そこまでで処理を終えて(ウィンドウプロシージャを抜けて)
WM_CHARを受け取ったときに残りの処理をするように
プログラム構造を書き換えろ。
447
名前:
デフォルトの名無しさん
:02/04/29 13:59
RegQueryValueExの使い方がさっぱり解りません。
ページを調べたのですが、サンプルも不明で、
引数をどう指定すればいいか良くわからないのです。
この初心者に、手ほどきお願いします。
448
名前:
デフォルトの名無しさん
:02/04/29 14:15
>>447
すいません。自己解決しました。
449
名前:
デフォルトの名無しさん
:02/04/29 14:15
>>447
DWORD dwType;
DWORD dwSize;
if(RegQueryValuEx(キー, 値の名前, NULL, &dwType, NULL, &dwSize) == ERROR_SUCCESS){
BYTE* data = malloc(dwSize);
RegQueryValuEx(キー, 値の名前, NULL, &dwType, data, &dwSize);
}
こんな感じでdwTypeに値の型が、dataにデータが、dwSizeにデータサイズが入ると思うたぶん。
450
名前:
デフォルトの名無しさん
:02/04/29 14:20
>>448
書き込む前にもうちょっとがんばれや・・・
451
名前:
デフォルトの名無しさん
:02/04/29 14:43
>>450
ほっとけ。
452
名前:
MsgWaitForMultipleObjects
:02/04/29 16:58
>>444
> としておいて、処理を中断させたいところで
> WaitForSingleObject(handle,INFINITE);を挿入しているのですが、
> どのあたりがまずいのでしょうか?
そこがマズい。
そんなことしたら、そのスレッドのメッセージポンプが回らないだろ?
シングルスレッドなんだろ?
メッセージポンプが回らなくなったら、誰が GetMessage して
TranslateMessage して DispatchMessage してくれるわけ?
TranslateMessage しなきゃ、誰も WM_CHAR をポストしてくれないよ?
453
名前:
デフォルトの名無しさん
:02/04/29 17:04
つーか、ワーカスレッドでWaitForすればいいような‥‥
454
名前:
425
:02/04/29 21:56
>>445
,446,452,453
レスどうもありがとうございます。
結局、452さんのMsgWaitForMultipleObjectsを使って
どうにか希望どうりの動作をさせる事が出来ました。
皆さんのアドバイスのおかげで助かりました。
455
名前:
デフォルトの名無しさん
:02/04/29 23:33
ちょっとだけなんだけど不安でさ。何がかっていうとさ、
「ダイアログプロシージャ」で、WM_CLOSE:のとこでdelete class;
とやるとすんじゃん。そのダイアログが出ているときにアプリの
一番トップのウィンドウから終了したら、deleteはできているの?
WM_DESTROYのほうがいいんですか?
456
名前:
デフォルトの名無しさん
:02/04/29 23:37
すまん、聞き方悪かった。。
457
名前:
デフォルトの名無しさん
:02/04/29 23:37
>>445
WM_DESTROYでないとマズイ。
WM_CLOSEは破棄ではなく、閉じろという指示を意味するメッセージだから。
458
名前:
デフォルトの名無しさん
:02/04/29 23:42
そっか、ありがとう。WM_DESTROYなら大丈夫なのかな、うんうん。
あ、俺今ごろ思いついちゃった。デストラクタにMessageBox()
書いて試せばいいんだよな、おーー。ありがとうでした。
459
名前:
デフォルトの名無しさん
:02/04/29 23:45
ばっちりWM_DESTROYでOKでした。。
460
名前:
デフォルトの名無しさん
:02/04/29 23:53
HTTP解析の技術ってどれくらいまで進んでるの?
富士山レベル?
461
名前:
デフォルトの名無しさん
:02/04/30 00:21
いや、砂場のお山程度かと。
462
名前:
デフォルトの名無しさん
:02/04/30 01:26
まぁちょっとしたネタに考えてほしーんだが、
あれ、なにヲ隠そうshlwapi.h関係なんだ。
PathIsURLなんかは動く。だがしかしだ。StrStrI()
が動かん。コンパイルはうまくいく。起動した時だ!それは。
なんでもアプリが欠落エクスポートshell32.dll云々らっすぃー。
で、英語だとmissing export shell32.dllだ。
勘違いしないでほっすぃーのはshell32.dllが欠落shlwapi.dllにリンク云々
ではないことだ。
どうやら今更IE4.0をインストールし直してなんたらと、外国のサイト
は言っている。
他に方法ないの?
463
名前:
デフォルトの名無しさん
:02/04/30 02:42
ないの。
464
名前:
デフォルトの名無しさん
:02/04/30 09:09
>>457
WM_NCDESTROYは?
465
名前:
デフォルトの名無しさん
:02/04/30 10:42
パフォーマンスレジストリの構造がわかるHPなどあったらお願いします。
466
名前:
デフォルトの名無しさん
:02/04/30 13:34
WM_DESTROYで上手くゆく。
467
名前:
デフォルトの名無しさん
:02/04/30 13:56
ユーザ定義メッセージを使うとき WPARAM と LPARAM の
使い分けとか、ルールみたいなのってあるんですか?
468
名前:
デフォルトの名無しさん
:02/04/30 13:59
それをあんたが定義するから「ユーザ定義」なんだろ。
469
名前:
デフォルトの名無しさん
:02/04/30 14:04
LPARAMにはポインタが入ることが多いかも。
470
名前:
467
:02/04/30 14:08
WM_XXX でパラメータ一つしか使わないやつを見ると、WPARAMを使ってるのと
LPARAMを使ってるのがあって、どうしたものかと思っていたんですが。
確かに構造体を渡すときとかは LPARAMですね。
471
名前:
デフォルトの名無しさん
:02/04/30 17:26
コンソールアプリ使いにくい〜って言うからGUIで簡単に実行できる
ソフトでも作るか、ってことになったんだけど・・・標準出力の取得の
ところがWin2Kでは動くんだがWin98で動かない・・・。
CreatePipe で名前なしパイプ作成
StartupInfoのhStdOutput/hStdInput にそれぞれハンドルを入れる
(dwFlags は STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW)
(wShowWindow は SW_HIDE)
CreateProcess 実行して書きこみ側ハンドル閉じる
GetExitCode でプロセス監視
PeekNamedPipe で読みこみ側の中身確認
中身があったら ReadFile で実際に読み出し
プロセス終了したらも1度中身の読み出し処理やって終わり
って流れで組んでるんだけど、PeekNamedPipe の所でいつまで経っても
読み出しサイズが 0 のまま・・・。
なにか忘れてることがあるんでしょうか?逆だったら SecurityAttributes
かなとも思うんですが。あとはタイミング・・・なのか?
あ、テスト用の実行コマンドは command.com /c dir で、wShowWindow = SW_SHOW
の時にちゃんと実行できているのまでは確認してます。
472
名前:
デフォルトの名無しさん
:02/04/30 18:56
>>470
WPARAM は 16bit で LPARAM は 32bit だったような時代が
あるので、そんなことを考えつつ決めると他のWM_XXXとの
親和性は多少良いかもしれず。
っつーかどっちでもいいと思う。
473
名前:
デフォルトの名無しさん
:02/04/30 19:48
WPARAMは昔は16bitだった。
今は16bit * 2として使うのが普通。
474
名前:
デフォルトの名無しさん
:02/04/30 21:14
大体、WPARAMは Word size PARAMeter の略で
LPARAMは Long size PARAMeter の略でなかったのかい?
既に意味をなしてないのなら、WIN32移行時に名前変えれば
良かったのに…。
475
名前:
デフォルトの名無しさん
:02/04/30 21:18
一方をWPARAMにして一方をLPARAMにした意味って
あったんでしょうかね。両方LPARAMじゃだめだったんだろうか。
476
名前:
デフォルトの名無しさん
:02/04/30 21:24
>>475
上のレスを読めよ。
477
名前:
デフォルトの名無しさん
:02/04/30 21:25
>>475
昔WORDは16ビットだった。それだけさ。
478
名前:
デフォルトの名無しさん
:02/04/30 21:35
んいや、Wordサイズで一方を渡す必要があったのかなと。
479
名前:
デフォルトの名無しさん
:02/04/30 21:38
LONGだと過負荷だったから。
480
名前:
デフォルトの名無しさん
:02/04/30 21:39
なるほど、納得です。
481
名前:
デフォルトの名無しさん
:02/04/30 21:50
16ビット時代のintであるwparamを一つ(通常こっち一つでかたが付く)
足りない場合用にlparam
482
名前:
デフォルトの名無しさん
:02/04/30 21:56
LPARAMの用途って元はそうだったんですね。Win16を知らない
世代でして(?)。
483
名前:
デフォルトの名無しさん
:02/04/30 21:59
>>482
いや、俺も95から。Delphiマンセー
484
名前:
デフォルトの名無しさん
:02/04/30 22:19
>>481
それもあるけど、far pointer(16:16 の)を渡すために必要だったと思われ。
485
名前:
デフォルトの名無しさん
:02/05/01 06:42
HDDの名前やベンダー名などを取得したいのですが、どうすればいいのでしょう?
デバイスマネージャで表示されるような、名前が欲しいのです。
486
名前:
デフォルトの名無しさん
:02/05/01 17:31
NT4.0SP5以降のTemporary Internet Files
にfwrightでファイルの書き込みを行うことが
できません。C:\ですと書き込めるのですが、、
また、WIN2000ですと、書き込みできるの
ですが、理由がわかりません。
識者の方よろしかったら御教示ください。
487
名前:
デフォルトの名無しさん
:02/05/01 17:34
>>486
fwright ってなんだ ?
488
名前:
486
:02/05/01 17:37
すみませんfwriteのミスでした。
489
名前:
デフォルトの名無しさん
:02/05/01 17:51
>>488
アクセス権は大丈夫 ? fwrite() が失敗した直後に perror() を実行して
みれば、原因がわかるかも...。
490
名前:
デフォルトの名無しさん
:02/05/01 20:59
すいません。
Win2000で、「ハードウェアの取り外し」を制御できる
(もしくはそれと同等の作用をする)
APIを教えて下さい。
※やりたいことは、リムーバブルディスクを「ハードウェアの取り外し」を使用せずに、
ボタンひとつで安全に取り外したいのです。
491
名前:
デフォルトの名無しさん
:02/05/01 21:07
>>490
DeviceIoControl() の、IOCTL_STORAGE_MEDIA_REMOVAL あたりから調べ
ればいいかと。
492
名前:
t
:02/05/02 13:48
win32sdkで
まず、メモリ上に描写を行って、そのあと1度に画面に表示させる。
方法を教えてください。
493
名前:
デフォルトの名無しさん
:02/05/02 14:16
http://pc.2ch.net/test/read.cgi/tech/1018239290/98-
しょうもねぇやつだな。
おまえにプログラムは無理だからあきらめろ
494
名前:
デフォルトの名無しさん
:02/05/02 14:37
>>492
スレをまたがれば連続質問に答えてもらえるとでも思ったか?
漏れは向こうで自分の記憶試しのためにたまたまソースを書いたが、
あんなの自分でググってこいっていって終わりなんだよ、超FAQだからな。
わかったらさっさと首吊って氏ね
495
名前:
デフォルトの名無しさん
:02/05/02 17:05
画像のサムネイルを作成するAPIはありますか?
496
名前:
デフォルトの名無しさん
:02/05/02 17:07
StretchB(以下略
497
名前:
デフォルトの名無しさん
:02/05/02 17:07
StretchBlt
498
名前:
496
:02/05/02 17:08
ひでぇよ・・・おっちゃん・・・
499
名前:
495
:02/05/02 17:13
>>496-498
なるほど、ありがとうございます。
これを使用してサムネイルを作成できるんですね。
でも一度、メモリ上に読み込まないと駄目か。
500
名前:
デフォルトの名無しさん
:02/05/02 17:52
でもStretchBltてSusieの様なきれいなサムネイルにならないんだよね。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.