■過去ログ置き場に戻る■ 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.