■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build31
251
名前:
232
:2005/05/07(土) 17:20:02
>>235
顧客からの要求で、「ダイアログが画面内に収まらないなら画面縦一杯に出してListCtrlにスクロールバーを出せ。
さもなくば、適切なサイズにListCtrlをあわせてスクロールバーは出すな。
ただし、ダイアログのサイズは自由に変えられるようにしろ」なんてのがあったりするわけだがね。
#あ、説明不足で誤解されそうな悪寒。
252
名前:
デフォルトの名無しさん
:2005/05/07(土) 17:38:14
もうしゃべらないでいいよ無能
253
名前:
デフォルトの名無しさん
:2005/05/07(土) 18:56:17
指定されたフォルダから指定されたファイルを検索するWindowsの標準関数は、
ファイル名を一字一字比較して、末尾まで一致するファイルへのポインタを返す
という仕様になっていると思うのですが・・・間違ってないでしょうか?
254
名前:
デフォルトの名無しさん
:2005/05/07(土) 19:00:31
http://YahooBB219029188008.bbtec.net/
っ
うはっwwwwwwっwうはっwwwっwwwwwwwwwwww
wwwwwwっうぇ
wwwwwwwwwwww
wおkwww
wwwwwwおkwww
255
名前:
デフォルトの名無しさん
:2005/05/07(土) 19:01:22
>>253
指定されたフォルダから指定されたファイルを検索するWindowsの標準関数
の名前を書いてくれなきゃわからない。
256
名前:
デフォルトの名無しさん
:2005/05/07(土) 20:09:12
>>249
その方法でうまくいきました。
どうもです。
>>252
無能で悪かったな。
257
名前:
デフォルトの名無しさん
:2005/05/07(土) 20:15:57
最近よくみかける
>>254
みたいなのってなんなんだ?
258
名前:
デフォルトの名無しさん
:2005/05/07(土) 20:16:56
>>257
山田ウイルス
259
名前:
デフォルトの名無しさん
:2005/05/07(土) 20:36:24
>>253
ファイルへのポインタ?
260
名前:
デフォルトの名無しさん
:2005/05/07(土) 22:07:33
>>253
ワイルドカードがあるからそう単純ではないと思う。
261
名前:
デフォルトの名無しさん
:2005/05/07(土) 22:29:05
>>260
ワイルドカードは内部でPathMatchSpecを呼んでるだけだろ。
262
名前:
デフォルトの名無しさん
:2005/05/07(土) 22:39:10
ポップアップメニューって親ウィンドウの中じゃないと絶対表示できない?
グローバルなフックプロシージャからTrackPopupMenu使ってみたけど親ウィンドウ以外では表示されません。
なんか方法ありますか?
263
名前:
デフォルトの名無しさん
:2005/05/07(土) 22:50:19
なんのポップアップだよ
264
名前:
デフォルトの名無しさん
:2005/05/07(土) 22:56:45
別にウィンドウに限定されないけどなあ
265
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:00:39
質問させてください
Cの構造体ってコンパイラによってメンバが
4バイトの境界にそろえられてしまったりすると思うんですけど、
Windowsビットマップをそのまま読み込んで表示しようとした時に
読み込んだバッファに構造体のポインタをそのまま当てはめて使っているサンプルを
見かけるのですが問題ないのでしょうか
手持ちのbccではオプションに色々指定してもちゃんと1バイト区切りになっていましたが
そういう取り決めになっていたりするんでしょうか
266
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:10:27
多分心配無用
267
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:19:49
>>265
構造体の定義で
struct {
char a;
int b;
};
なんていう馬鹿なことしなければ大概大丈夫。
268
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:30:25
>>265
普通はBITMAPFILEHEADERの定義の前に
#pragma pack(2)
とか入ってるから大丈夫よ。
まあメンバごとに読んだ方が行儀がいいのは確かだけど。
269
名前:
265
:2005/05/07(土) 23:32:37
ええと、BITMAPFILEHEADERやRGBQUADでWORDとBYTEがあるので大丈夫かなあと心配してみたんです
お話を聞く限り大丈夫そうなので構造体使って画像読み込む関数つくってみます
ありがとうございました!
270
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:34:53
何もしないと、パディングされちまうけど、
BITMAPFILEHEADERとかBITMAPINFO、INFOHEADERとかRGBQUADとかのような、
パディングされたら困るやつは、ちゃんと定義のとこでパディングされないように細工してある
271
名前:
デフォルトの名無しさん
:2005/05/07(土) 23:52:14
>>166
MSDNのmixer〜のあたりを読めば書いてあります。
マイクはMIXERLINE_COMPONENTTYPE_SRC_MICROPHONEでmixerGetLineInfo。
272
名前:
デフォルトの名無しさん
:2005/05/08(日) 00:22:52
ただ、ビットマップに関する構造体に関しては定義でパディング対策してあるけど
ビットマップの実際のビットデータ部は、画像の横幅によってはスキャンラインごとに、
ラインの最後にパディングが有るから、ビットマップファイルを触るときはそこに注意だな
273
名前:
265
:2005/05/08(日) 00:28:51
>>270
>>272
レスありがとうございます
きちんと対策がしてあるものなのですね
データ部の4byte境界は横幅とビットカウントから1ラインのバイト数出す
関数作って対応済みです(`・ω・´) シャキーン
いろいろ心配していただいてありがとうございました
274
名前:
デフォルトの名無しさん
:2005/05/08(日) 00:56:53
>>273
その対策というのが
>>268
275
名前:
デフォルトの名無しさん
:2005/05/08(日) 00:57:46
Win32API でのファイル操作についての質問です。
#include <windows.h>
HANDLE hFile;
・・・・・・・・・・・・
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow) {
HWND hwnd;
MSG msg;
WNDCLASS winc;
hFile = CreateFile(lpCmdLine , GENERIC_READ , FILE_SHARE_READ , NULL ,
OPEN_EXISTING , FILE_ATTRIBUTE_NORMAL , NULL);
if (hFile == INVALID_HANDLE_VALUE) {
MessageBox(NULL , TEXT("ファイルが開けません") , NULL , MB_OK);
return -1;
}
(以下略)
をコンパイルして実行したら、存在するファイル名をコマンド引数に指定しても
「ファイルが開けません」のエラーメッセージが出てしまいます。
当方の開発環境は、
OS:Windows XP
コンパイラ: lcc-win32 Ver3.8
です。
どなたか問題点を教えて下さい。お願いしますm(_ _)m
276
名前:
デフォルトの名無しさん
:2005/05/08(日) 01:03:26
>>275
CreateFileに渡しているlpCmdLineに何が入っているか確認してみようとは思わん?
277
名前:
デフォルトの名無しさん
:2005/05/08(日) 01:33:09
>>276
ダイアログボックスには何度も表示しましたが、改めてコンソールに出力してみると、
276さんに言われるまで見落としていたのですが、lpCmdLine に入っていたのは
C:\Document and Settings\・・・・\filename.txt
ではなくて、
"C:\Document and Settings\・・・・\filename.txt"
↑ ↑
文字列そのものの両端にダブルクォーテーションがある
ということに気づきました。
気づかない方がヴァカなのかも知れませんが、(私にとって)これは盲点でした。
でも、その一言のお陰で解決しました。どうも有難うございましたm(_ _)m感謝感謝
278
名前:
デフォルトの名無しさん
:2005/05/08(日) 02:41:52
>>277
ちなみにD:\とかだとダブルクォーテーションが排卵よ
279
名前:
デフォルトの名無しさん
:2005/05/08(日) 03:23:07
スペースが入れば入る
280
名前:
デフォルトの名無しさん
:2005/05/08(日) 03:24:34
スペースって宇宙の事だよね
281
名前:
デフォルトの名無しさん
:2005/05/08(日) 03:59:09
急速にスレの質が低下してまいりました
282
名前:
デフォルトの名無しさん
:2005/05/08(日) 04:18:38
>>278
D:\・・・ でもダブルクォーテーション入りました(当方の環境では D ドライブは CD-ROM)。
こちらの環境が Windows XP だからなのか、それとも lcc-win32 のためなんでしょうか・・・・・・
283
名前:
デフォルトの名無しさん
:2005/05/08(日) 06:19:39
サボらないでコマンドラインパーサ書けよ
284
名前:
デフォルトの名無しさん
:2005/05/08(日) 06:54:03
>>283
"を含むパス名って存在しないんだっけ?
パーサを書こうにも仕様がわからんとね。
285
名前:
デフォルトの名無しさん
:2005/05/08(日) 07:31:04
存在しねぇよ
仕様がわからんとねとか言う前に、自分でファイル名つけてみろよ
286
名前:
デフォルトの名無しさん
:2005/05/08(日) 07:31:21
なんでファイル名にスペースなんて使えるようにしたんだろう
287
名前:
デフォルトの名無しさん
:2005/05/08(日) 07:46:14
ファイル名に\ とか / とか使われたらお手上げだよ。
288
名前:
デフォルトの名無しさん
:2005/05/08(日) 08:53:31
CreateFileの前にPathUnquoteSpaces(lpCmdLine);を入れると解決するよ。
289
名前:
デフォルトの名無しさん
:2005/05/08(日) 11:00:01
Path系のAPIはIE4以降必須だから・・・
290
名前:
デフォルトの名無しさん
:2005/05/08(日) 11:12:03
今時IE4以降が入ってないようなWinマシン使ってるヤツが居るのか?
天然記念物だな
291
名前:
デフォルトの名無しさん
:2005/05/08(日) 11:41:22
>>290
某コンピューター系大企業の生産現場では、製品チェック用のノーマルWin95PCが現役だったよ。
工場とかには結構な数あるんじゃないかな?
292
名前:
デフォルトの名無しさん
:2005/05/08(日) 11:50:33
Win95ならもう既にshlwapi.dll入ってたと思うが
293
名前:
デフォルトの名無しさん
:2005/05/08(日) 11:51:37
おいおい
製品チェック用のマシンにどこの馬の骨とも知らんヤツの作ったアプリ入れるんかい
294
名前:
デフォルトの名無しさん
:2005/05/08(日) 13:03:46
自社製より信頼性が高いと思っているのかも知れない。
295
名前:
234
:2005/05/08(日) 14:59:05
だれかおせーて
296
名前:
デフォルトの名無しさん
:2005/05/08(日) 15:58:27
質問したかて、必ず知ってる人間が居るとは限らん
とりあえず俺はしらね
297
名前:
デフォルトの名無しさん
:2005/05/08(日) 16:21:16
仮想の意味がわからんが、モニタ2台あるとスクリーン座標はそのまま出るよ
たとえば、1024幅が2台あってプライマリを左にすれば、 0 - 2047 の範囲になる
298
名前:
デフォルトの名無しさん
:2005/05/08(日) 17:07:38
ダライアス可能?
299
名前:
デフォルトの名無しさん
:2005/05/08(日) 17:33:52
>>298
ひっくり返るほどスレ違いすぎ。
300
名前:
デフォルトの名無しさん
:2005/05/08(日) 18:46:41
Gと外伝なら見たことあるな。
えっ、ダライアスだよ。
301
名前:
234
:2005/05/08(日) 20:19:46
>297
ありがとうございます。
仮想スクリーンてのはこのあたりの文章を参照しました。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/monitor_7hym.asp
302
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:31:20
すんません、
セミコロン(;)つきのファイル名って存在しますか?
303
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:37:52
どころか、セミコロンだけでも存在できる。
304
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:42:12
あちゃあ、まぢですか?
セミコロンをファイル名リストの区切りにしようとしてたんだけど、
破綻しちゃった。
おススメの区切り文字ってありますか?
305
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:51:20
>>304
タブ文字でも改行でも
306
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:52:21
>>304
MFCのCFileDialogでやってるように縦簿'|'はどう?
307
名前:
306
:2005/05/08(日) 21:53:35
「棒」ね
308
名前:
デフォルトの名無しさん
:2005/05/08(日) 21:58:03
>>304
普通にセミコロンでいいじゃんか。
環境変数のパス名とかの区切りだし
309
名前:
デフォルトの名無しさん
:2005/05/08(日) 22:02:29
>>304
'\0'
310
名前:
デフォルトの名無しさん
:2005/05/08(日) 22:06:10
縦棒にします!
ありがとうございました!
311
名前:
デフォルトの名無しさん
:2005/05/08(日) 23:05:50
環境変数ではどうしてんだろう・・・
312
名前:
デフォルトの名無しさん
:2005/05/08(日) 23:31:17
UIやメッセージを表示する専用の子ウィンドウを沢山持つアプリケーションを作る場合、
その時点で使ってない子ウィンドウは、どのようにしておくのが推奨されていますか?
毎回、使う度にCreate と Destroyを繰り返すのはシステムに負荷が掛かるのでしょうか?
一応、作成しておいて、ただ見えなくしておくだけの方がいいのでしょうか?
313
名前:
デフォルトの名無しさん
:2005/05/08(日) 23:32:27
>>312
好きにしろ
314
名前:
デフォルトの名無しさん
:2005/05/08(日) 23:44:28
>>312
TPOに応じて方法を使い分けるべきかと。
少数の複雑なウインドウなら隠蔽するだけのほうがいいと思うが、多数のボタンやエディトボックスなら使うたびにCreateとDestroyを繰り返したほうがいい。
一つのプログラムに二つの方法を混在させると開放し忘れでリークするということもあるだろうからどちらかに統一するのがベター。
315
名前:
デフォルトの名無しさん
:2005/05/09(月) 00:11:27
回答ありがとうございます。
マナーの良いプログラミングを心掛けていきたいと思っています。
316
名前:
デフォルトの名無しさん
:2005/05/09(月) 00:15:47
フックについてですが、WH_GETMESSAGE でフックをかけているんですが、
ウィンドウのアクティブ/非アクティブを変えても WM_ACTIVE が捕捉できません。
全く同じコードで WM_LBUTTONDBLCLK などのメッセージは捕捉できるのですが
WM_ACTIVE は何か特別扱いになっているのでしょうか?
317
名前:
デフォルトの名無しさん
:2005/05/09(月) 00:44:41
>>311
フォルダ名を""で括ればok
318
名前:
デフォルトの名無しさん
:2005/05/09(月) 00:57:32
引用符切り分けるのめんどくさい
319
名前:
デフォルトの名無しさん
:2005/05/09(月) 01:08:14
>>316
WM_ACTIVEはsendされるメッセージ。
WH_GETMESSAGEはpostされたメッセージしか捕らえられない。
320
名前:
デフォルトの名無しさん
:2005/05/09(月) 01:51:38
>>319
なるほど。ありがとう御座います。
WH_CALLWNDPROC でフックできました。
321
名前:
デフォルトの名無しさん
:2005/05/09(月) 03:41:12
FindFirstChangeNotification()
や
ReadDirectoryChangesW()
のように、ディレクトリごとではなく、ファイルごとに変更を知る方法はありませんか?
一つのファイルを複数のプロセスが共有で開いて読み書きしている時に、
他の誰かが書きこんだことを知りたいので、書き込まれた位置までわかるとありがたいのですが。
322
名前:
デフォルトの名無しさん
:2005/05/09(月) 04:07:20
FindFirstChangeNotification
323
名前:
デフォルトの名無しさん
:2005/05/09(月) 04:27:12
それって、ネットワークドライブでも使える?
324
名前:
デフォルトの名無しさん
:2005/05/09(月) 05:43:25
使える
325
名前:
デフォルトの名無しさん
:2005/05/09(月) 07:18:57
PROCESSENTRY32構造体についてなんですが
PROCESSENTRY32 unko;
と宣言してるのですが
「'PROCESSENTRY32' : 識別名を宣言するのに、型が指定されていません」
とエラーがでます。解決方法を教えてください
326
名前:
デフォルトの名無しさん
:2005/05/09(月) 08:44:11
PROCESSENTRY32 構造体を宣言してください。
327
名前:
デフォルトの名無しさん
:2005/05/09(月) 08:47:08
#include <tlhelp32.h>
328
名前:
デフォルトの名無しさん
:2005/05/09(月) 09:03:47
>>327
既にやってる
329
名前:
デフォルトの名無しさん
:2005/05/09(月) 09:13:09
http://dhcp255-146.tamatele.ne.jp/
うぇwwwっうぇwwwwwwwwwwwwっwwwっうぇ
うはっwwwwwwwwwwwwwwwうはっwww
うぇwwwっwおkwwwっwwwwwwwwwwwww
330
名前:
デフォルトの名無しさん
:2005/05/09(月) 09:13:12
というか<tlhelp32.h>にインクルードしてるのに
「CreateToolHelp32Snapshot' : 定義されていない識別子」って出ます。原因と解決方法を教えてください
331
名前:
330
:2005/05/09(月) 09:17:51
すいません解決しました
332
名前:
デフォルトの名無しさん
:2005/05/09(月) 09:41:32
どう解決したんだよ
>>328
を書いた以上、経過を説明してくれないかな
333
名前:
330
:2005/05/09(月) 10:18:54
関数名間違ってただけ
334
名前:
デフォルトの名無しさん
:2005/05/09(月) 10:28:52
>>325
...ENTRY... に「出るもの」の名前は後任者が勘違いしやすい。ここはもっと
ピタッとする名前があるのにしないのはまずいな。
335
名前:
デフォルトの名無しさん
:2005/05/09(月) 11:34:35
334 が非常に的外れなレスをしている気がしないでもないが、
336
名前:
デフォルトの名無しさん
:2005/05/09(月) 16:00:17
>>334
いやいや、その変数をEntryするのかもしれんぞ。
#どこにかは知らんが。
337
名前:
デフォルトの名無しさん
:2005/05/09(月) 16:46:46
シリアルポート2つ使うプログラムで同じCOM番号を指定した時にそれを共有して使う方法を教えてください
338
名前:
デフォルトの名無しさん
:2005/05/09(月) 16:49:33
Telephony API
339
名前:
デフォルトの名無しさん
:2005/05/09(月) 17:05:29
>>338
詳しく
340
名前:
デフォルトの名無しさん
:2005/05/09(月) 17:17:22
>>339
http://www.google.co.jp/
341
名前:
デフォルトの名無しさん
:2005/05/09(月) 17:45:05
>>336
あの続きのコードを見たくなった。日経の小説も気になってんだけど。
342
名前:
デフォルトの名無しさん
:2005/05/09(月) 18:06:47
>>340
知らないならレスしないで下さい。ウザイだけです、消えてください
343
名前:
デフォルトの名無しさん
:2005/05/09(月) 18:08:01
オマエモナ
344
名前:
デフォルトの名無しさん
:2005/05/09(月) 18:14:45
騙りが横行してる希ガス
345
名前:
デフォルトの名無しさん
:2005/05/09(月) 18:20:42
共有ねぇ。DuplicateHandleするとどうなるのかは気になるけど、
素直にアウトプロセスCOMみたいなRPCな仕掛けを挟んだら?
346
名前:
デフォルトの名無しさん
:2005/05/09(月) 19:37:00
めんどい
347
名前:
デフォルトの名無しさん
:2005/05/09(月) 21:09:50
コンボボックスを選択して確定することにするにはどうしたらいいでしょうか?
ただたんにテキストをかえるだけではだめなようです。
そのコンボボックスのハンドルはわかっています。
wm_Settext文字を変更することはできたのですが内部的には確定されていないのか結果が反映されないのです
348
名前:
デフォルトの名無しさん
:2005/05/09(月) 21:24:51
?#
>>347
CB_ADDSTRINGで文字列を追加して、帰ってきたインデックスをCB_SETCURSELで選択。
349
名前:
321
:2005/05/10(火) 09:58:23
>>322
あの、それはディレクトリごとだし、
ファイルの変更部分は通知されませんが。
350
名前:
デフォルトの名無しさん
:2005/05/10(火) 10:32:06
ReadProcessMemoryを使ってもことごとくNULLが返ります。アクセス権がないようなのですが解決方法を教えてください。
あとPROCESSENTRY32構造体のメンバth32ProcessIDにはProcess32Nextなどで最後に得たプロセスIDが格納されるのですか?
351
名前:
デフォルトの名無しさん
:2005/05/10(火) 10:49:53
>>349
ファイル単位で監視っていうのは無かったと思う。
352
名前:
デフォルトの名無しさん
:2005/05/10(火) 10:58:45
>>349
ディレクトリの変更がきたら自分で調べりゃいいだろ
353
名前:
デフォルトの名無しさん
:2005/05/10(火) 10:59:49
なんでもかんでもAPIに無いと、何もできないのだろうか
354
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:20:28
>348
ありがとうございます
しかしそれでは目的のテキスト(CB_SETCURSELでセットしたインデックスのテキスト)は一瞬表示されますが
それが選択状態にはならず元にもどってしまいます
なにかいい方法はないでしょうか
355
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:30:30
>>353
を晒し上げ(´,_ゝ`)
356
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:40:49
>>354
他のイベントで変な事してるんじゃないのか?
357
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:45:30
そのようなこともないと思います
新規で試しにワードパッドのフォントを変えるものを作ってみましたが
同様でした。
コードは
SendMessage((HWND)コンボボックスのハンドル,CB_SETCURSEL,77,0);
念のためそのコンボボックスの親ウィンドウに
SendMessage((HWND)親ウィンドウのハンドル, WM_COMMAND,MAKEWPARAM(165, CBN_SELCHANGE),(LPARAM)(HWND)コンボボックスのハンドル);
と送ってみましたがそれでもダメでした
358
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:48:32
>>357
>新規で試しにワードパッドのフォントを変えるもの
新規で作って検証するなら、
ウィンドウにコンボボックスのみを貼り付けて、
そのコンボボックスに CB_SETCURSEL を送るだけじゃないのか?
って言うか、外部プロセスのコンボボックスを変えようとしている?
359
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:50:06
申し遅れましたがその通り外部のプロセスのコンボボックスです。
360
名前:
デフォルトの名無しさん
:2005/05/10(火) 12:51:08
やはりこれもwin98で影響を受けたsetforeground同様の制限をもらってしまうのでしょうか?
361
名前:
デフォルトの名無しさん
:2005/05/11(水) 01:28:05
質問なのですが
Win32において
Destoryを実行した場合
Destoryを実行されたWindowが一番最後にうけとるメッセージはなんなのでしょうか?
WM_NCDESTROYが最後でいいのでしょうか?
私的ライブラリでGUIをクラスライブラリ化したのですが
ウィンドウが破棄されたタイミングで自身のインスタンスにたいして
delete thisを行いたいのです。
MFCのほうではPostNcDestroyなるメソッドがあるっぽいのですが・・・
Win32オンリーの場合はどのように対処したらよいのでしょうか?
362
名前:
デフォルトの名無しさん
:2005/05/11(水) 01:30:29
つspy++
363
名前:
デフォルトの名無しさん
:2005/05/11(水) 01:53:31
>>361
それで良いと思う。気になるならMFCのソースを見てコードをまねれ。
364
名前:
デフォルトの名無しさん
:2005/05/11(水) 06:52:22
DestroyWindowを実行すると、WM_DESTROY、WM_NCDESTROYの順番でメッセージが送られる
その後のWM_QUITはウィンドウプロシージャでは受け取らない
よって、NCDESTROYが最後にウィンドウが受け取るメッセージ
365
名前:
349
:2005/05/11(水) 09:55:50
>>351-353
ありがとう。
無駄に重くなるけど、ディレクトリごと監視します。
>>350
ReadProcessMemoryの返り値はBOOLですよ。
0が返ってきたら、GetLastError()してエラーコードを見ましょうよ。
366
名前:
デフォルトの名無しさん
:2005/05/11(水) 11:59:41
>>365
あぁ?失敗したらヌルポが返るんだよデブ。もう原因わかったからどっか行っていいよ
367
名前:
デフォルトの名無しさん
:2005/05/11(水) 12:09:09
>>366
「ヌルポ」がcatchできないんですが^^
368
名前:
デフォルトの名無しさん
:2005/05/11(水) 13:30:36
>>366
まあしねよぶた
369
名前:
デフォルトの名無しさん
:2005/05/11(水) 14:28:27
StretchBltの縮小画質がありえないくらい
汚いんですが(ゴミが入るようなかんじ)、フリーか何かで代用のAPIないでしょうか?
教えてください
370
名前:
デフォルトの名無しさん
:2005/05/11(水) 14:31:15
何でもかんでも API って言えばいいと思ってる奴
キタ━━━━(゚∀゚)━━━━ッ!!
371
名前:
デフォルトの名無しさん
:2005/05/11(水) 14:36:43
>>369
SetStretchBltMode はどのモードでやった?
372
名前:
デフォルトの名無しさん
:2005/05/11(水) 15:28:24
>>369
つ[DirectX]
373
名前:
デフォルトの名無しさん
:2005/05/11(水) 15:35:07
gdi plus
374
名前:
デフォルトの名無しさん
:2005/05/11(水) 16:14:07
IPicture::Render
375
名前:
デフォルトの名無しさん
:2005/05/11(水) 16:22:29
自前でリサイズしたら?
376
名前:
デフォルトの名無しさん
:2005/05/11(水) 16:57:48
誘導されてきました
フォルダの中のファイルの監視をしたいのですが
下のコードを実行して c:\test フォルダ内のファイルの内容を変更すると
メッセージボックスが二回表示されてしまいます。
変更は一回しかしていないのに二回でてしまうのですが
ここまでコードを短くしても出るので行き詰まってしまいました
二回検知してしまう動作が正しいのでしょうか?
どこかおかしくて二回出てしまうのならばご指摘お願いします。
HANDLE hFind = FindFirstChangeNotification( "C:\\test\0", FALSE, FILE_NOTIFY_CHANGE_SIZE );
if( hFind == INVALID_HANDLE_VALUE )
return;
while( 1 )
{
DWORD ret = WaitForSingleObject( hFind , INFINITE );
if( ret == WAIT_OBJECT_0 )
{
MessageBox( NULL, "TEST", "Changed!", MB_OK );
if( FindNextChangeNotification( hFind ) == 0 )
return;
}
}
FindCloseChangeNotification( hFind );
377
名前:
デフォルトの名無しさん
:2005/05/11(水) 17:54:36
>>376
変更手段によるかと。
例えばエディタの場合、一時ファイルを作ったりするから一回の変更と思っても
複数回ファイル操作が行なわれているかも。
実際、fopen(..., "w")を行なうと空のファイルができるのでこの段階で一回、
fclose()でバッファフラッシュが起きて一回、都合2回通知されることは実験で確認した。
378
名前:
デフォルトの名無しさん
:2005/05/11(水) 18:02:26
>>376
何でファイルを変更しているのか知らないけど、多くのソフトはファイルを一度
0 サイズにクリアしてから改めて書き込む (CreateFile() で CREATE_ALWAYS を
指定したり、fopen() で "w" を指定していたりなど) ので、
1. 0 クリアで 1 回
2. データの書き込みで 1 回
の合計 2 回、変更が検知される。
(試しに 0 バイトのデータを保存してみること)
さらに、ディスクキャッシュサイズごとに書き込むので、そのたびに
変更が検知される可能性もある。
379
名前:
376
:2005/05/11(水) 18:40:25
>>377
>>378
そういうことだったのですか!よく分かりました。
ファイルが変更されたあとフォルダのサイズが変わる?ので二回きている
とか色々考えていました
ちなみにファイルはテイストファイルでnotepadで書き換えていました
でも二回くるのはどうしようもないですね
ちょっと厄介になってきましたが
上手く一回だけ処理できるよう試行錯誤してみます
ありがとうございました
380
名前:
デフォルトの名無しさん
:2005/05/11(水) 18:54:06
テイストファイル(・∀・)!! ワラタ!!
381
名前:
デフォルトの名無しさん
:2005/05/11(水) 18:57:14
>>380
箸が転がっても笑う人?
382
名前:
デフォルトの名無しさん
:2005/05/11(水) 18:59:37
>>381
いやそれはさすがに 笑う
383
名前:
デフォルトの名無しさん
:2005/05/11(水) 19:11:28
笑う(・∀・)!! ワラタ!!
384
名前:
デフォルトの名無しさん
:2005/05/11(水) 19:17:41
_ ∩
( ゚∀゚)彡 ワラタ!!ワラタ!!
⊂彡
385
名前:
デフォルトの名無しさん
:2005/05/11(水) 19:18:55
ここはハッピーなインターネットですね?
386
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:12:21
WAVEファイルに格納されているサンプリングデータを取得するには、
WAVEファイルを自前で解析するしか方法はありませんか?
WAVE ファイルを解析するための API はないのでしょうか?
387
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:17:27
WaveOut
388
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:33:09
そもそもWaveファイルにしてもBitmapファイルにしてもファイル構造はどっちも単純だろうに。
389
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:35:59
>>386
標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。
低レベル再生したいのなら、
>>387
のWaveOut系APIでも使えば良い。
再生中に、サンプルデータも自由に処理できるしね。
高レベルAPIでいいなら、PlaySound()やsoundPlaySound()で。
390
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:43:59
解析したいと言ってるのにPlaySoundはないだろうw
ところでMCIってまだあるのかな。
考えたら5年ぐらいマルチメディア刑API触ってないや
391
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:47:12
>>389
waveファイルってRIFF形式だった気がするんだが。
mmio〜系のAPIで操作できる・・・はず
392
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:48:47
>>389
> 標準のwavファイルならヘッダを取り除けば、あとは生のPCMデータのはずだけど。
PCMとは限らないんだけど。。。
393
名前:
デフォルトの名無しさん
:2005/05/11(水) 20:52:55
>>390
もちろん残ってる。Win95の頃と実装は変わってるようだけど。
394
名前:
デフォルトの名無しさん
:2005/05/11(水) 22:19:33
>>386
作るのが面倒臭かったらこんなの使ってみたら?
Wave File Library(Windows95/98/Me/プログラミング)
ttp://www.vector.co.jp/soft/win95/prog/se214677.html
395
名前:
デフォルトの名無しさん
:2005/05/11(水) 22:25:02
宣伝乙。
いやしかし、既成ライブラリに頼るというのはこの場合正解だよ。
WavOutは使いやすいとは言い難いしな。
396
名前:
デフォルトの名無しさん
:2005/05/12(木) 01:11:31
ピクチャーコントロールにDirectXで描画するダイアログベースのツールを作ろうとしているのですが、
ピクチャーコントロールの更新されるタイミングが分からず困ってます。
DirectXの描画特有の問題かとも思ったのでDXスレで伺ったのですが、
なかなかレス頂けないみたいなのでこちらにも失礼します。
まずはアプリ起動時にDXで適当な矩形でも表示してみようと、
WM_INITDIALOGで矩形描画関数を呼んでみたのですが、
一瞬描画されたあと、ピクチャーコントロールの色で塗りつぶされてしまうようでした。
なので、WM_PAINT内でも同じように描画関数を呼んで見たのですが相変らず
起動時に矩形を表示してくれません。
(というかピクチャーコントロールの描画で消されているような感じ。)
WM_LBUTTONDOWN内などで描画すればきちんと表示されるのですが、
WM_MOVE内で呼んだ時などは、一度目の移動では表示されず、
二度目以降の移動では表示されるという、よく分からない挙動になっています。
どうしたらいいのでしょうか?
環境はW2k、VC6、DX9.0bです。よろしくお願いします。
397
名前:
デフォルトの名無しさん
:2005/05/12(木) 01:58:25
>>396
まずはDirectX描画域の背景を描画しない設定にする。
ダイアログのスタイルにWS_CLIPCHILDRENを適用、
コントロール側のWM_ERASEBKGNDで0以外の値を返す
これでちらつき・上書きは消えるはず。
398
名前:
デフォルトの名無しさん
:2005/05/12(木) 02:18:11
Win32API を使用したプログラムを実行したときに、コマンドプロンプトを待たせない方法はないのでしょうか?
例えば、コマンドラインから notepad を起動したとき、
C:\>notepad[改行]
C:\>
(notepad が開く)
となりますが、自作のプログラムでは
C:\>hogehoge[改行]
(hogehoge が終了するまで待機状態)
となってしまいます。
これを解決するにはどうすればよろしいのでしょうか?
399
名前:
デフォルトの名無しさん
:2005/05/12(木) 02:23:26
>>398
コンソールアプリでビルドしてないか?
400
名前:
398
:2005/05/12(木) 02:28:36
ビルドというか、lcc-win32 でプログラムを作成し、
C:\>lcc hogehoge.c
C:\>lcclnk hogehoge.obj
というふうに実行ファイルを作成しています。
それとも、この環境では
>>398
の問題を解決することは出来ないのでしょうか?
401
名前:
デフォルトの名無しさん
:2005/05/12(木) 02:46:14
Meadow2ってエディタについてくるfiber.exeってやつなら
C:\ > fiber.exe hoge.c
ってすれば
「.c」拡張子のファイルをクリックした時に起動するプログラムがそのファイルを開いて
シェルにも処理がもどる。
402
名前:
デフォルトの名無しさん
:2005/05/12(木) 02:54:22
>>400
それは「Win32API」の話ではなく、特定の処理系の話なのでスレ違い
403
名前:
398
:2005/05/12(木) 02:58:49
すみません、説明不足でした。
エディタのことではなくて、自分で作成(コンパイル)した Win32API プログラムを実行したときに、
そのプログラムが実行したままシェルにも処理が戻るようなプログラムを作りたいのです。
C:\>lcc hogehoge.c
C:\>lcclnk hogehoge.obj
C:\>hogehoge
C:\>
(hogehoge.exe は実行されたまま)
となるような hogehoge.c を作りたいのですが、どうすればよろしいのでしょうか?
プロセスやスレッドについて調べてみても、どうもうまく行きません。
404
名前:
デフォルトの名無しさん
:2005/05/12(木) 02:59:28
void FreeConsole(void);
405
名前:
398
:2005/05/12(木) 03:13:58
>>404
そんな関数があったんですね。
どうもありがとうございました!!m(_ _)m感謝感謝
406
名前:
396
:2005/05/12(木) 03:38:07
>>397
ありがとうございます。
>まずはDirectX描画域の背景を描画しない設定にする。
>コントロール側のWM_ERASEBKGNDで0以外の値を返す
この二つの意味は同じでしょうか?別の事を指してますか?とりあえず
DirectXで描画したいのはダイアログ内に配置したピクチャーコントロールなのですが、
これをサブクラス化してその自前プロシジャ内に
case WM_ERASEBKGND:
return 1;
と追加してみたのですが、変わりませんでした。
>ダイアログのスタイルにWS_CLIPCHILDRENを適用、
これはピクチャコントロールが乗ってる親ダイアログのプロパティで設定しても変わりませんでしたし、
ピクチャコントロール自体にSetWindowLongでWS_CLOPCHILDRENを設定してみても変わりませんでした。
407
名前:
デフォルトの名無しさん
:2005/05/12(木) 03:47:08
犯罪予告祭り会場
http://ex10.2ch.net/test/read.cgi/news4vip/1115834824/
408
名前:
デフォルトの名無しさん
:2005/05/12(木) 04:03:08
>>398
今の状態だとエクスプローラから実行するとコンソールが開くんでないかい。
それで構わないのならFreeConsoleでも使ってればいいんだけど、
そうじゃないのなら、lcclnkのマニュアルをよく読んどけ。
409
名前:
デフォルトの名無しさん
:2005/05/12(木) 05:37:12
Win32APIの話っていうより
そもそもWindowsプログラミングの
410
名前:
デフォルトの名無しさん
:2005/05/12(木) 06:34:19
>>376
何をしたいのかによるけど、
通知を何度受けるかわからない
という前提で作ったほうがいいですよ。
また通知を受けるたびに処理をしてたら重くなるので、
通知を受けたら、変更があったということだけ覚えておき、
それに対するアクションはその場ではしないほうがいいです。
もし通知に対してアクションをしたいのであれば、
1秒くらい待ってからやったほうがいいかも。
411
名前:
デフォルトの名無しさん
:2005/05/12(木) 10:40:44
ウインドウのタイトルや枠などの色の取得方法を教えてください。
412
名前:
デフォルトの名無しさん
:2005/05/12(木) 11:18:49
GetSysColor
413
名前:
デフォルトの名無しさん
:2005/05/12(木) 12:26:40
文字列が正当なURLであるかどうかを確かめるAPIと、
URLからホスト名などを抜き出すAPIはありますか?
414
名前:
デフォルトの名無しさん
:2005/05/12(木) 12:31:00
>>413
使ったことは無いけど、
>文字列が正当なURLであるかどうかを確かめるAPI
::UrlIs()にURLIS_URLを渡して確認する。
>URLからホスト名などを抜き出すAPI
::UrlGetPart()にURL_PART_HOSTNAMEを渡して切り出す
415
名前:
デフォルトの名無しさん
:2005/05/12(木) 14:58:39
>>414
できました。
ありがとうございます。
#shlwapi.dllには、自前で書くこともできるけど、面倒くさいから書きたくない処理をする関数がたくさんある気がする。
416
名前:
デフォルトの名無しさん
:2005/05/12(木) 16:22:36
MSはレジストリを使うことを推奨してるのに
レジストリを使うアプリが嫌われる理由は何?
417
名前:
デフォルトの名無しさん
:2005/05/12(木) 16:42:40
ユーザーが消しにくいから。
インストールしたフォルダを削除しても消えないからね。
まあそれが利点でもあるんだけど。
418
名前:
デフォルトの名無しさん
:2005/05/12(木) 17:03:32
レジストリをいじりまくるとレジストリファイルが断片化・肥大化するから。
Win9xの場合はそれが原因で不安定になることがあった。
もういい加減過去の話だが。
419
名前:
デフォルトの名無しさん
:2005/05/12(木) 17:08:54
.NETではXMLで保存するのが推奨されるとかどこかで読んだ気がするんだけど
420
名前:
デフォルトの名無しさん
:2005/05/12(木) 17:41:01
ちょっとしたツールだと、フォルダごとコピーすれば設定もコピーできて楽。
421
名前:
デフォルトの名無しさん
:2005/05/12(木) 18:15:16
しかしファイルで保存するにしてもユーザーのフォルダにしてほしいなあ
自分ちのマシンならどこでもいいが・・・
422
名前:
デフォルトの名無しさん
:2005/05/12(木) 19:53:11
ユーザのフォルダに設定ファイルを置くと、
1つのフォルダごとコピー・移動・削除
では済まなくなるので、レジストリと大差ないんだよね。
その割には、メリットがない。
EXEと同じフォルダにINIファイルを置くのは、
シングルユーザ当たり前のDOS時代の悪い慣習を引きずってると思う。
レジストリにすれば、ファイルのインストール先を気にしなくていいし、
レジストリをバックアップすれば、一括して設定をバックアップできるよね。
423
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:06:10
便乗で質問ですが、
ユーザーのフォルダの取得って何を使えばよいですか?
ユーザー毎の設定を\Documents and Settingsの奥深くにある
フォルダに置きたい。
424
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:10:22
>>422
初心者の発想だね
425
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:17:34
>>423
GetEnviromentVariableで環境変数HOMEPATHを取得
USERPROFILEでもいい
426
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:23:18
2000、XPでもレジストリのコンパクションはできないから肥大化する一方
427
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:37:49
>>425
ありがとう。
428
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:41:31
なんだよ、レジストリってのは欠陥システムだな。
429
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:42:21
ややこしいことが1つの売りだったんだよ
商用とかシェアウェアにとっては
430
名前:
デフォルトの名無しさん
:2005/05/12(木) 20:56:28
>>423
,425
ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnw2kcli/htm/AppSpecDesk5.asp
SHGetFolderPath() を使ったやり方が書いてある。
こっちの方が MS の推奨ということか?
431
名前:
デフォルトの名無しさん
:2005/05/12(木) 22:14:00
SH〜系ってなんかアバウトというか、信用ならねーって感じのAPI群だけど、
それがMS推薦っぽいね。
432
名前:
デフォルトの名無しさん
:2005/05/12(木) 23:35:08
なんていうかもうapi関数大杉('д`)
433
名前:
デフォルトの名無しさん
:2005/05/13(金) 00:29:19
>>426
レジストリのサイズは消せば小さくなると思うけど・・・
VS.NETをインストール中に、一時的にものすごく大きくなるけど、インストール終わると減るし。
>>424
他に良い方法があれば教えてください。
1つのINIファイルの中にユーザごとに設定を書くと、
一人の設定を他所に移すのが難しくなるよね。
ユーザ別にINIファイルを分けると、
ユーザ名が変わったときにファイル名を変更しないといけない。
ユーザ名の代わりにSIDを使うと、他所のドメインやPCに移したら困るし。
434
名前:
デフォルトの名無しさん
:2005/05/13(金) 00:52:58
>>433
キーや値を削除してもサイズが減らない、それがWINDOWSのレジストリ
435
名前:
デフォルトの名無しさん
:2005/05/13(金) 00:55:48
VACUUMかければいいじゃない
436
名前:
デフォルトの名無しさん
:2005/05/13(金) 01:39:36
>>435
詳しく
437
名前:
デフォルトの名無しさん
:2005/05/13(金) 01:42:17
そりゃPostgreSQL
438
名前:
デフォルトの名無しさん
:2005/05/13(金) 01:50:05
どうせレジストリがパンクする頃には
新ウィンドウズが出てるんだろ。
XPももう過去の物だろw
439
名前:
デフォルトの名無しさん
:2005/05/13(金) 04:05:29
Snes9xにキーの入力情報送りたいんだけど
SendMessageやPeekmessageでは矢印や
ABYXに相当するボタンの情報を送っても無反応です。
(F1や1等ゲームというよりSnesの機能に相当するものは動きます。)
(例えばキーボードのAにSnesのAを割り当ててSendMessage送っても効果なし)
なんかこれ解消するAPIないっすか?
440
名前:
デフォルトの名無しさん
:2005/05/13(金) 04:47:21
Peekは受ける側だったorzPostMessageね
441
名前:
デフォルトの名無しさん
:2005/05/13(金) 04:54:38
DirectInput使ってるからだろ。
442
名前:
439
:2005/05/13(金) 05:37:47
どうにかならんもんですかね。
443
名前:
デフォルトの名無しさん
:2005/05/13(金) 05:56:07
SendInpu()とかはだめ?
444
名前:
439
:2005/05/13(金) 06:14:58
試してみようと思ったらサンプル少ねぇ
MSいってみます
445
名前:
439
:2005/05/13(金) 12:56:46
>>443
キタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
後世の為に置き去りメモ
SendInputを使う為にstdafx.hの中に
#define _WIN32_WINNT 0x0501
#define WINVER 0x0501
を宣言。呼び出したい場所で
UINT ret;
INPUT tt;
tt.ki.wVk=0x41;
tt.ki.dwFlags=0;
tt.ki.time=0;
tt.type=INPUT_KEYBOARD;
ret=SendInput(1,&tt,sizeof(INPUT));
押しっぱになるのでdwFlagsで適度に補正してやる必要あり。
446
名前:
デフォルトの名無しさん
:2005/05/13(金) 13:43:20
GetWindowThreadProcessIdなどで取得したプロセスIDのベースアドレスを求めるにはどうしたらいいのでしょうか?教えてくださいお願いします
447
名前:
デフォルトの名無しさん
:2005/05/13(金) 15:23:29
>>446
プロセスIDのベースアドレス
この時点で、何か間違ってるよ。
いったい何がしたいの?
448
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:10:32
うるせぇカスだなぁ。わかんねぇならでしゃばんなよボケが。
readprocessで戻ってきたハンドルのベースアドレスだよタコ。ほんとお前みたいカスがくると気分悪くなるぜ。
お前のせいでまたこんなレスしてしまった俺は結局自分で解決するハメになると。ほんとうぜぇ・・・
449
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:17:25
スレのレベルが急速に低下してまいりました。
450
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:18:10
お前が読み取りを始めたいアドレス=ベースアドレス(ReadProcessMemory()では)。
プロセスID→プロセスハンドルにはOpenProcess()がある。
451
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:26:00
だからReadProcessMemoryで指定するベースアドレスがわかんねぇから教えろっつってんだよ。あ?わかんねぇんだろ?お?あぁ?コラ
452
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:27:23
__ ┌┬┬┬┐ __
―――┴┴┴┴┴―――――、
/.  ̄ ̄ ̄//. ̄ ̄| || ̄ ̄ ̄||| ̄ || __________
/. ∧// ∧ ∧|.|| ||| || /
[/____(゚_//[ ].゚Д゚,,) ||___||| || <
>>448
,451を迎えに来ました
||_. * _|_| ̄ ̄ ∪|.|. .|ヽ. _|| \__________
lO|o―o|O゜.|二二 東|.|京 精神 .病院 ||
| ∈口∋ ̄_l__l⌒l_|_____|_l⌒l_||
 ̄ ̄`ー' ̄ `ー' `ー' `ー'
453
名前:
デフォルトの名無しさん
:2005/05/13(金) 16:52:25
>>451
お前がやりたいこと次第。
454
名前:
デフォルトの名無しさん
:2005/05/13(金) 17:03:08
おまえらわかんねーならレスするなつってんだろ!
455
名前:
デフォルトの名無しさん
:2005/05/13(金) 17:10:11
>>454
ごめんよ、おれもわかんねーや
456
名前:
デフォルトの名無しさん
:2005/05/13(金) 17:57:30
>>454
http://www.microsoft.com/japan/msdn/subscriptions/resources/additionalincident.aspx
http://www.microsoft.com/japan/msdn/subscriptions/resources/support.aspx
457
名前:
デフォルトの名無しさん
:2005/05/14(土) 01:12:53
おいおい、騙りを何相手してやってんだ?
458
名前:
デフォルトの名無しさん
:2005/05/14(土) 04:00:39
うるせーよ。煽りたいだけのやつはしゃしゃりでんなよカスどもが
ほんと使えねーなー
459
名前:
デフォルトの名無しさん
:2005/05/14(土) 04:10:02
リソースエディタで作ったダイアログ内のボタンコントロール上に
矩形を描画しようとしているのですが、全く表示されません。
TextOutしてみても何も文字が表示されません。
どこがおかしい部分があるでしょうか?
何か他の部分で、ここがあやしそう、などありましたら教えてください。
hdc=GetDC(hWnd);//hWnd=GetDlgItemで取得したボタンのハンドル
hPen=CreatePen(PS_SOLID,1,RGB(r,g,b));//rgbは適当な値が入ってる
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hPen);
SelectObject(hdc,hBrush);
Rectangle(hdc,0,0,100,100);
TextOut(hdc,0,0,"iii",3);
460
名前:
459
:2005/05/14(土) 04:22:41
WM_PAINT内でやったらうまくいきました。
WM_INITDIALOG内でやってたのでダメだったようです。
461
名前:
459
:2005/05/14(土) 05:02:09
度々すいません。やはり挙動が変です。
今までデバイスコンテキストの取得はGetDCを使ってたのですが、
GeginPaintとかいうのを使った方がいいらしいので書き換えました。
ですが、ダイアログ起動時に四角形は描画されるものの、ボタン自体が描画されません。
ボタンの部分を押してみるとボタンは出現するのですが、
今度は四角形が消えてしまいます。どうしたらよいのでしょうか。
//ダイアログのプロシジャ内
case WM_PAINT:
DrawRect(GetDlgItem(hWnd,IDC_BUTTON),100,100,0);
return FALSE;
//矩形描画関数
void DrawRect(HWND hWnd,int r,int g, int b){
PAINTSTRUCT paint;
HDC hdc;
HBRUSH hBrush;
RECT rct;
GetClientRect(hWnd,&rct);//hWnd はボタンのハンドル
hdc=BeginPaint(hWnd,&paint);
hBrush=CreateSolidBrush(RGB(r,g,b));
SelectObject(hdc,hBrush);
Rectangle(hdc,4,4,rct.right-5,rct.bottom-5);
EndPaint(hWnd,&paint);
ReleaseDC(hWnd,hdc);
DeleteObject(hBrush);
}
462
名前:
デフォルトの名無しさん
:2005/05/14(土) 06:47:52
>>446
ほんとここの無知どもはウザイよね。
おまえの気持ちはよくわかる。
特に
>>449
の馬鹿は、わかんねーのに答えるからレベル低下してるってのが
どうやら理解できないらしい。
というわけだから、わかるおれが答えてあげよう。
全部説明するとなると大変なのでかいつまんで言うと、
まずプロセスといっても中で実行されてるのはスレッドという単位だ。
つまりプロセスで実際に動いているスレッドを特定する必要がある。
これはいろんな方法があるので別途AdvancedWindows読むなり
すればわかる。PSAPIとかでググるのもいいかも。
スレッドを特定するまでできたら、そのスレッドに対して一旦
SuspendThreadなりで停止させ、GetThreadContextを呼ぶ。
すると現在の正確なEIPが得られる。
EIPが得られたら、そのアドレスからこんどはプロセスに
割り当てられているメモリのベースアドレスを特定する。
メモリのチェインをたどっていけばEIPの範囲に収まる
ブロックが見つかるはず。
それが質問のベースアドレスということになる。
まあPSAPIを使わなくても、たとえば普通のアプリなら
0x400000以降がベースアドレスだとか決め打ちされてる。
もちろんこの辺を細工しているアプリもある。
これの特定はプロセスにロードされているコードセクションの
PEヘッダ部分を見るのが手っ取り早い。
一番早いのは、そのプロセスに侵入してしまうという方法。
この辺のやり方の詳細を知りたいなら、やっぱり
AdvancedWindowsを読んどくのが良い。
463
名前:
デフォルトの名無しさん
:2005/05/14(土) 07:13:03
結局AdvncedWindows嫁って結論になったけど、
プロセス・スレッド周りの質問は説明しようとすると長くなるからね。
こんな糞スレだと、その説明が正確とも限らないし。
とりあえずやり方だけでも知っとけば道は開ける。
やっぱあの本の存在は偉大なんだよなあ。
ちなみにAdWinにはPEヘッダの読み方は載ってないので、
その辺はWebか何かで調べるしかない。
pe formatかなんかでぐぐれば出てくる。
PEヘッダの構造を理解するのにはかなり時間がかかると思うけど、
プロセスを解析する近道はPEヘッダなので、この辺はぜひ調べて欲しい。
464
名前:
459
:2005/05/14(土) 08:41:54
いろいろ試してるのですが解決しないので
簡略化してUPしました。ソースとVC6のリソースが入ってます。
おかしい所を指摘していただけると助かります。
ダイアログ内にボタンが二つあります。
起動時にボタンの上に白い四角が表示されるのが理想なのですが、
なぜかボタン自体が描画されません。
ボタンを押すと色選択ダイアログが開き、
選択した色の四角がボタンの上に表示されるようにしたいです。
ですが、このサンプルではなぜか、一方のボタンで色を選択すると
もう一方のボタンの上の四角が消えてしまいます。
常に表示されているようにしたいです。
よろしくお願いします。
ttp://gamdev.org/up/img/2660.zip
465
名前:
デフォルトの名無しさん
:2005/05/14(土) 08:50:44
>>461
ボタンはダイアログの子ウィンドウ。
WM_PAINTが来たのはダイアログであって、ボタン(子ウィンドウ)に来たわけではない。
だからそのコードは不正。
で、そういうことがしたければオーナードローしなさい。
466
名前:
デフォルトの名無しさん
:2005/05/14(土) 08:53:32
>>464
>おかしい所を指摘
あんたの頭。
以下解説を書こうとしたら
>465
に先を越されたので割愛。
467
名前:
デフォルトの名無しさん
:2005/05/14(土) 12:05:12
>>464
オーナードローの他に、サブクラス化すると言う手もある。
どちらも詳細はググルか
ttp://www.kumei.ne.jp/c_lang/
辺りを探せ。
468
名前:
デフォルトの名無しさん
:2005/05/14(土) 12:11:23
>>448
> うるせぇカスだなぁ。わかんねぇならでしゃばんなよボケが。
人に文句つける前に、自分の日本語を見直せよ。
[
>>446
より ]
> プロセスIDのベースアドレスを求めるには
・プロセスID
プロセスを一意に識別するための識別子
識別子にベースアドレスなどない。
君の質問は、
「整数値 1 のベースアドレスを求めるにはどうすればよいか?」
などと言っているのと大差ない。
日本語は正しく使え。
469
名前:
デフォルトの名無しさん
:2005/05/14(土) 12:48:59
>>462-463
ありがとうございます。
>>468
カスは黙っとけ(プw
470
名前:
デフォルトの名無しさん
:2005/05/14(土) 12:59:53
質問です
ウィンドウを何よりも最前面に表示するにはどうすればいいのでしょうか?
DirectDraw等で全画面+最前面になってる物のさらに上に表示したいです
普通に最前面にしただけでは無理でした orz
471
名前:
459
:2005/05/14(土) 13:09:56
>>467
サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
ボタンを押したらColorChooserダイアログを出して色を選択し、
ボタン上の四角に反映させたかったのですが、
押された後ではボタンのイベントは発生しないので、
オーナードローでは次に押すまで色が反映されないのでダメでした。
結局、消極的な方法で妥協しました。ありがとうございました。
472
名前:
デフォルトの名無しさん
:2005/05/14(土) 13:28:52
DirectDrawサーフェイスの前に持ってくるにはクリップするしかない
473
名前:
デフォルトの名無しさん
:2005/05/14(土) 13:51:58
質問です。
@ウインドウ作成してアクティブな状態にする
Aマウスでウインドウ外をクリックして非アクティブにする
Bタイマーで定期的に ShowWindow や SetForegroundWindow などを呼ぶ
AとBを繰り返すと、一回目は最前面にウインドウが表示されるのに、2回目以降は最前面に表示されません。
どうすれば最前面に表示することが出来るのでしょうか?
よろしくお願いします。
474
名前:
デフォルトの名無しさん
:2005/05/14(土) 14:04:12
>>473
CreateWindowEx(WS_EX_TOPMOST, ...
>>470
のような高度な要求をしなければこれでいい。
SetForegroundWindow()は2000/XPで挙動が変更されたはず。
475
名前:
470
:2005/05/14(土) 14:24:43
>>472
まえゲームで全画面+最前面なものをしてたときに、
なんかの拍子で、最前面表示してた後ろのWinampがゲーム画面内にずっと表示されたままになったので
なにかほかに方法があるのかなと思ったのです orz
#Winampは再生中の時間もちゃんと表示され操作も可能でした
476
名前:
デフォルトの名無しさん
:2005/05/14(土) 15:18:29
>>475
ttp://saw.minidns.net/software/index.html#soft09
こーゆーの使うとかじゃ駄目か?
477
名前:
470
:2005/05/14(土) 15:41:59
>>476
某MMORPG用のツールなので窓化はむりぽいです
公認ツールとして交渉中なので orz
478
名前:
デフォルトの名無しさん
:2005/05/14(土) 19:22:54
ゲームのウィンドウをオーナーに指定する
DirectDrawSurfaceはGDIのクリッピング領域に従わないと思うから
ちゃんと描画されない気がするけど
479
名前:
デフォルトの名無しさん
:2005/05/14(土) 19:30:28
だからDirectDrawClipperでやるしかないって
480
名前:
デフォルトの名無しさん
:2005/05/14(土) 21:57:59
>>471
に亀レス
> ボタンを押したらColorChooserダイアログを出して色を選択し、
> ボタン上の四角に反映させたかったのですが、
そういうボタンならサクラエディタなるオープンソースのテキストエディタに
あるからソースを参照にしてみるのはどうかな?
ちなみにサクラエディタではオーナードローで描画してるよ。
> 押された後ではボタンのイベントは発生しないので、
> オーナードローでは次に押すまで色が反映されないのでダメでした。
これはどこかソースがまずいんじゃない?
オーナードローは大した手間ではないし、コントロール上で自分の
好きなように描画する定石なんで知ってて損は無いよ。
あと、
> サブクラス化はボタン一個ずつに対してプロシジャ作るのが面倒くさいからやめました。
こいつは実装次第でどうにでもできる。
481
名前:
デフォルトの名無しさん
:2005/05/14(土) 22:53:41
ReadProcessMemoryなんていうスケベなAPIを使うのに、
自力で使いこなせないようなレベルの低い香具師って、
ろくでもないことをやろうとしている人間の屑だろうな。
どうせゲームのチートツールやウィルス等の怪しげなものを作ろうとしてるんだろ?
いいかげんウザイので、答えを教えてやる。
VirtualQuery()だ。
もうこのスレに出てくるなよ。
482
名前:
デフォルトの名無しさん
:2005/05/15(日) 09:49:47
>>481
カスが必死にググッてその様かwwwwwそんなもん質問する前から知ってますがwwwwwwwいい加減カスは黙ってチンポでも弄ってろwwwww
483
名前:
デフォルトの名無しさん
:2005/05/15(日) 09:53:03
最近w使う人増えたね。
484
名前:
デフォルトの名無しさん
:2005/05/15(日) 10:51:41
Windows, DWORD, WM_*
485
名前:
473
:2005/05/15(日) 11:02:32
>474
レスサンクス
早速試してみましたが駄目でした
486
名前:
デフォルトの名無しさん
:2005/05/15(日) 11:15:18
>>485
SetWindowPosでHWND_TOPMOS指定したら?
487
名前:
デフォルトの名無しさん
:2005/05/15(日) 12:04:33
レスサンクスと書かれると、less thanks と読んでしまう。
488
名前:
デフォルトの名無しさん
:2005/05/15(日) 12:48:46
GetLastErrorの使い方がわかりません
489
名前:
デフォルトの名無しさん
:2005/05/15(日) 12:52:49
MSDNに載ってます
490
名前:
デフォルトの名無しさん
:2005/05/15(日) 13:00:50
使い方は載ってません
491
名前:
デフォルトの名無しさん
:2005/05/15(日) 13:05:41
>>490
プログラムなんかやめたほうがいいよ
492
名前:
デフォルトの名無しさん
:2005/05/15(日) 13:28:36
載ってます
493
名前:
デフォルトの名無しさん
:2005/05/15(日) 13:57:40
msdnのトップに出てる赤シャツの男って凄い頭よさそうだよな。
腕組みながらあの自信に満ち溢れた顔なんかとくに。
494
名前:
デフォルトの名無しさん
:2005/05/15(日) 15:11:36
どうも、赤シャツの男です。
495
名前:
デフォルトの名無しさん
:2005/05/15(日) 15:18:03
>>494
IQいくつ?
496
名前:
デフォルトの名無しさん
:2005/05/15(日) 15:25:09
80−130です
497
名前:
デフォルトの名無しさん
:2005/05/15(日) 15:43:31
血圧かよ!
498
名前:
デフォルトの名無しさん
:2005/05/15(日) 16:13:14
漏れのIQは 10D10+5 だぜ。
499
名前:
デフォルトの名無しさん
:2005/05/15(日) 17:56:00
期待値で60…低っ
500
名前:
デフォルトの名無しさん
:2005/05/15(日) 18:00:55
急速にスレの質が低下してまいりました
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.