1 名前:デフォルトの名無しさん [2007/04/18(水) 01:54:51 ] スレ立てるまでもない、Win32APIのついての質問はこちらへどうぞ。 やさしいお兄さんやお姉さんたちが答えてくれるかも。 過去スレ、関連リンクは>>2-5 くらい。 ■注意 ・質問する前にMSDNライブラリやPlatformSDK、Google等で検索しましょう。 ・日本語版MSDN Online Libraryは不完全です。英語版(msdn.microsoft.com/library/ )の利用推奨。 ・APIフックなど高度な事をしたい場合はできるだけAdvenced Windowsを読みましょう。 ・言語特有の問題やIDE、MFCやVCLなどの質問はそれぞれの言語や開発環境スレで
10 名前:デフォルトの名無しさん [2007/04/18(水) 09:22:36 ] >9 どこからLoadResourceするのかで違うのでは?
11 名前:デフォルトの名無しさん [2007/04/18(水) 09:39:13 ] あらかじめPEに含まれたリソースなら予めメモリに展開されてるからロードしても体積は増えんが 外部からロードするとメモリを確保して展開するから体積が増える ガンガン外部からロードするとガンガンメモリを圧迫していく その時の開放用 つかMSDNのLoadImageの項に書いてあるけど msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_loadimage.asp リソースを使っているプロセスが終了すると、システムがそのリソースを自動的に削除します。 しかし、対応する関数を呼び出してメモリを解放すれば、メモリが節約され、 プロセスのワーキングセットのサイズも小さくなります。
12 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 09:58:45 ] >>9 ttp://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/resourcereference/resourcefunctions/freeresource.asp >The FreeResource function is obsolete and is only supported for backward compatibility with 16-bit Microsoft Windows. >For 32-bit Windows applications, it is not necessary to free the resources loaded using LoadResource function. >For more information, see INFO: FreeResource Not Necessary to Free Resources in Win32 ttp://support.microsoft.com/default.aspx?scid=kb;en-us;193678
13 名前:9 mailto:sage [2007/04/18(水) 10:37:44 ] ありがとうございます。 >>10 BCCで猫とかみたいにオーソドックスにリソースファイルに書いて、 ロードは以下みたいにやっています。 get = LoadResource(hInst, FindResource(hInst, (char *)IDR_WAVE*, "wave"); >>11 そのPEというのについて調べてみます。 >>12 訳してみました。 FreeResource機能は、16ビット用に残してあるもの。 32ビットの場合、RoadResourceの場合、開放する必要はない。 ただ、以下の物に付いては、開放する必要がある。 (FreeResourceを以下の機能に取り替えた) Accelerator:DestroyAcceleratorTable Bitmap:DeleteObject Cursor:DestroyCursor Icon:DestroyIcon Menu:DestroyMenu
14 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 13:08:17 ] ガンガンDVD思い出した
15 名前:9 mailto:sage [2007/04/18(水) 13:30:40 ] 少し調べてきました。 >>10 >>11 >どこからLoadResourceするのか >あらかじめPE(実行ファイル)に含まれたリソースなら 実行ファイルに含まれたリソースだと思います。 リソースに含むと、その分exeの容量が増えますので。 そもそも、それ以外のリソースがどういうものか分かりません。 >予めメモリに展開されてるからロードしても体積は増えん それは、直にリソースからwavを使ってもあまり変わらないという事でしょうか。 PlaySound(HGLOBAL, NULL, SND_MEMORY | SND_ASYNC); を以下にする感じで。 PlaySound((char *)IDR_WAVE**, hInst, SND_RESOURCE | SND_ASYNC); ビットマップをLoadImageするのは、メモリを確保するから速くなるのではなく、 HBITMAPに変換するから速くなるという事なんですかね。
16 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 13:49:10 ] >>15 >それ以外のリソースがどういうものか分かりません。 「実行ファイルに含まれたリソース」と「実行ファイルに含まれてないリソース」 「実行ファイルに含まれたリソース」は基本的にプログラムを実行した時点でメモリにロードされる 「実行ファイルに含まれてないリソース」はLoad*****されるまでメモリの上には無い LoadImageで速くなるかどうかはしらんが オブジェクトをハンドルで管理する理由は細々としたデータを管理しなくて良い所にある
17 名前:デフォルトの名無しさん [2007/04/18(水) 13:51:03 ] >>15 リソースを何か特殊なもんだと勘違いして内科医? テキストファイルだってリソースだよ? リソースを直訳してみ。
18 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:11:40 ] 利葬巣
19 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 14:44:49 ] これは酷い
20 名前:9 mailto:sage [2007/04/18(水) 15:53:05 ] >>16 >>17 >それ以外のリソース > == 実行ファイルに含まれてないリソース > == テキストファイルだってリソースだよ? それらは外部ファイルという風に言っていました。 実行ファイルに含まれてないリソースと外部ファイルの違いが分かりません。 >「実行ファイルに含まれたリソース」は基本的に DISCARDABLEとかですか? >LoadImageで速くなるかどうかはしらんが 始めはDIBの状態なので、DDBにすると早くなるという意味です。 >細々としたデータを管理しなくて良い所にある きっちり管理したいです。 64M、128Mメモリとか、ロートルマシンなので、 ある程度の量(5Mぐらい?)メモリを使うと極端に遅くなるんです。
21 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:38:28 ] どうしてSetWindowsHookExを使うとけ#pragma data_seg〜って書かないといけないの?
22 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:40:20 ] >>21 フックするプロセスごとにDLLがロードされるので、変数をプロセスを跨いで共有する必要がある。
23 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:44:07 ] へぇ
24 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 16:45:15 ] 書きたくなければFMOでも使うといいさ
25 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:01:23 ] >>4 のSDKは古いんだって・・・
26 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 20:14:42 ] 何度言っても分からない それがム板クオリティ
27 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 21:12:32 ] MSDNライブラリも2006/06と2006/12の両方を載せるのは無駄。 >>4-5 は整理しろよ。
28 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:13:09 ] >>22 複数のプロセスがロードしないなら書かなくておk?
29 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:16:32 ] >>28 良いと思うよ。DLLにする意味も薄くなるが。
30 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:19:01 ] いや、グローバルフックはDLL化必須じゃん?
31 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:19:04 ] >>28 ローカルフックならそう。そもそもDLL関係ないし。 グローバルフックなら CallNextHookEx に渡す HHOOK を共有しなければいけない。
32 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:25:50 ] >>30 複数のプロセスからロードしないならグローバルフックじゃない気がするが
33 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:28:43 ] え?別にDLLのフックを呼び出すのが単一でもグローバルフックはグローバルフックだろ? それとも>>30 と同じく俺も勘違いなのか?
34 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:30:24 ] >>前998&999 ありがとうございました、何とかなりそうです
35 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:33:52 ] >>21 はグローバルフックとは一言も言ってないんだよね。 この時点ですでに勘違いなのかもシレン。 要>>21 のレス。
36 名前:32 mailto:sage [2007/04/18(水) 22:39:10 ] 俺も語弊があるなw >複数のプロセスからロードされないなら だな
37 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 22:50:14 ] msdn2.microsoft.com/en-us/library/ms644974.aspx 実のところNT系は、CallNextHookExのHHOOK型の引数を無視するので フックハンドルを共有する必要がない罠。
38 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:00:36 ] >>36 それが良くわからんのだが フックには特定のスレッドを対象にしたもの(これがローカルフック)と 特定の対象スレッドを指定しないグローバルのものの2種類のスコープがあって 後者はフックプロシージャがDLLにないと出来ない で、たとえばWH_GETMESSAGEなんかは ローカルだと対象のスレッドのメッセージだけ取ってくるし グローバルだととにかくどこのメッセージでも取ってくる ローカルとグローバルの違いってこれだろ? SetWindowsHookEx呼ぶDLLの関数を複数のプロセスが呼ぶかとか関係無いと思うんだが
39 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:03:45 ] >フックには特定のスレッドを対象にしたもの(これがローカルフック)と 違う。 ローカルフックは自分自身のスレッドのみを対象としたもの。 他のスレッドを指定してのフックはグローバル。 もちろんスレッドを指定せずシステム全体が対象の場合もグローバル。
40 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:12:24 ] DestroyIconとDestroyCursorの違いってなに? CreateIconIndirect で作ったらDestroyIconで処分するってMSDNに かいてあるんですが
41 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:23:50 ] DestroyIcon はアイコンを破棄する。 DestroyCursor はカーソルを破棄する。
42 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:46:23 ] っていうレス以外でお願いします
43 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:49:00 ] CreateWindowExのheightやWidthを弄って実行しても 何故か画面に反映されません・・・ エスパー回答でもいいので助けてください・・・
44 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:53:01 ] >>40 言われた通りにしとけばいいだろ 哲学的な答えが欲しいならモニターにキーボード投げつけろ >>43 CreateWindowExを呼んでる部分晒してよ
45 名前:デフォルトの名無しさん mailto:sage [2007/04/18(水) 23:53:11 ] ShowWindow
46 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:02:10 ] >>44 2画面分割のスプリットウィンドウで、親ウィンドウの上に 子1&2ウィンドウを作っており、その子2のCreateWindowです。 CreateWindowは、親のProcのWM_CREATEで呼んでいます。 +--+-------+ |子1|子2 | | | | +----------+ +----------+ (a)の行をg_c2w.height-20にしても変化しません・・・ 20はステータスバーの高さです。 // 子2ウィンドウ作成 g_hChild2 = CreateWindow( clsChild2, (LPCWSTR)"", WS_CHILD | WS_VISIBLE | WS_BORDER, g_c1w.width - g_frame, 0, g_c2w.width, g_c2w.height, ←(a) hWnd, NULL, hInstance, NULL );
47 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:05:25 ] >>40 CreateIconFromResourceExとCreateIconIndirectは 与えたパラメータによってはカーソルを返すこともあるが、 そのハンドルがカーソルであったとしても、DestroyIconで破棄しなくてはならない。
48 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:23:19 ] >>46 g_c2w.heightの中の値は確認した?
49 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:28:31 ] >>48 すみません、今解決しました。 親のProcのWM_SIZEの中に子2ウィンドウのサイズを変更する個所が ありまして、それがWM_CREATEで設定したg_c2w.heightを上書きして いたようです。WM_SIZEでも-20してやると希望通りに動作しました。 ウィンドウ作成時にもWM_SIZEが走るとは知りませんでした・・・
50 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:35:31 ] ∧∧ ヽ(・ω・)/ ズコー \(.\ ノ 、ハ,,、  ̄  ̄
51 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:15:14 ] 自己解決しました。 50にカチンときたので教えません。 バーカ!
52 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:26:30 ] 自己解決メソッドは↓のスレのみで有効です 【厨房満開】HSP初質51【ビラビラ満開】 pc11.2ch.net/test/read.cgi/tech/1142529119/
53 名前:40 mailto:sage [2007/04/19(木) 01:54:44 ] >>47 ありがとう
54 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 06:08:02 ] エクスプローラで、コンテキストメニュー項目を追加したいのですが、 ファイルやフォルダを無選択時の場合(新規作成(W)とかが出るやつ)に 使用されるレジストリはどこなのでしょうか?
55 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 06:22:08 ] *に書いておけばいいんじゃね?
56 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 07:14:33 ] >>54 HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers だけど、これだけを聞いてちゃんとContextMenuHandlerを作れるのか?
57 名前:デフォルトの名無しさん [2007/04/19(木) 10:31:39 ] 任意のアプリのウィンドウを SetParentで子ウィンドウにするプログラムを作りたいんですが 普通にSetParentしただけでは描画に問題がでました。 それでCreateRemoteThreadで同じプロセスに作ったスレッドの ウィンドウを親にしてみても同様に描画の問題がでますた。 なのでSetParentは同じスレッドじゃないとまともに動かないと結論付けて 今度は別のAPC未対応のスレッドにウィンドウを作らせるか、 もしくはウィンドウを別スレッドで作ってからウィンドウのハンドルを 別のスレッドに関連づけるような方法を試してみたいのですが そんな方法はありませんか?
58 名前:デフォルトの名無しさん [2007/04/19(木) 14:48:06 ] ttp://www.kumei.ne.jp/c_lang/sdk/sdk_29.htm 猫でも・・のソースで実行してみると、メニューとダイアログボックスは 表示されるんですが、ビットマップが表示されないです。 何かが足りないと思うのですが、原因わかるかたおりますか? Webページの実行結果と同じようにしたいので。。
59 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 14:58:16 ] >>58 念のために聞くけど、 猫の画像ファイル(bitmap1.bmp)は自分で用意しないといけないけど用意した?
60 名前:デフォルトの名無しさん [2007/04/19(木) 15:05:27 ] アイコンとビットマップ両方用意してあります。 ちなみに、フォルダでexeをみると、アイコンは変わって 表示されてました。
61 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:17:16 ] >>60 .rcのファイルにちゃんと MYBMP BITMAP DISCARDABLE "bitmap1.bmp" の行がある?
62 名前:デフォルトの名無しさん [2007/04/19(木) 15:20:26 ] >>61 あります。 もしかしてビットマップが大きすぎたりすると 表示できないとかありますかね。。 でもDlgの左上にアイコンも表示してくれないし・・・
63 名前:54 mailto:sage [2007/04/19(木) 15:21:57 ] >>55 >>56 どうもありがとうございます。 >>56 やっぱりそれしかないんですか・・・ そこだとActiveXオブジェクトである必要がある訳ですよね・・・? HKEY_CLASSES_ROOT\*\shell\foo\command みたいに適当なEXEとかでできる所はないんでしょうか・・・ ないですか・・・そうですか・・・ でも何でDirectoryなんでしょうか・・・?
64 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:29:09 ] >>62 当たり前だけど .rcのファイルのダイアログの定義のところに CONTROL "MYBMP",IDC_STATIC,"Static",SS_BITMAP | SS_REALSIZEIMAGE, 19,18,13,14 の行はあるよね? "MYBMP"の綴り間違ってたりしてないよね? こっちの環境では2000x2000ピクセルのサイズでも、 モノクロビットマップでもちゃんと表示されるんだけどなぁ・・
65 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 15:42:40 ] 普通のBitmapじゃ表示されないよ アイコン用Bitmapを作るツールで作らないと
66 名前:デフォルトの名無しさん [2007/04/19(木) 15:45:48 ] >>64 あります。ビットマップが表示されないだけで ほかのはきちんと機能します。
67 名前:デフォルトの名無しさん [2007/04/19(木) 15:55:31 ] >>65 ビットマップの新規作成から こぴぺしてつくりました。 アイコンは **.icoでBMPは **.bmpです。
68 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 16:01:59 ] >>67 エクスプローラとかデスクトップを右クリックの「新規作成」のことだろうか? 作っただけのそのままのファイルだと何も表示されない。 一度、ペイントブラシで適当に色塗っただけのBMP作って試してみたら?
69 名前:デフォルトの名無しさん [2007/04/19(木) 16:04:56 ] >>68 VCのリソースエディタに貼り付けました。 なんか色数が多いらしく、減色&小さめにリサイズして 貼り付けました。 リソースタブからプロパティをみると表示されています。 実行すると表示されません。
70 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 16:55:06 ] とりあえずビットマップ・描画関連APIの戻り値見て、どこまで成功してるのか調べた方がいいかもね。
71 名前:58 [2007/04/19(木) 17:04:34 ] いろいろすみません もうちょっとがんばってみます。
72 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 20:43:41 ] スタティックコントロールが"MYBMP"で参照しているのに、 ビットマップはMYBMPで定義されている件について。
73 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 21:58:35 ] IDB_MYBMP
74 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:01:04 ] 皆様、質問があります。 コンソール画面で ipconfig > "c:\ipinfo.txt" とすると、リダイレクタより、 ipconfigの標準出力がc:ドライブ下のipinfo.txtに出力される。 これをCreateProcess関数のlpszCommandLineに、 「ipconfig > \"c:\\ipinfo.txt\"」と指定しても、 c:ドライブ下のipinfo.txtに出力されるものなんでしょうか? (自分はうまくいかない) それとも、 > はcmdの機能? パイプで組まなきゃダメなんかなぁ・・・
75 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:02:35 ] >>74 シェルの機能なのでcmd.exeごと起動する。cmd /? をチェキ。
76 名前:74 mailto:sage [2007/04/19(木) 22:06:48 ] >>75 納得!! cmd.exeに委託しているんですかー。 ありがとうございます。
77 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:38:43 ] CreateWindowのEDITで、書き込みとか書き換えを不可能にするために EnableWindow(h1, FALSE)をしたところ、背景が灰色になって文字も薄くなりました。 書き換え書き込みは不可能なまま、背景白、文字黒に直したいのですが どうすればいいのでしょうか?
78 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:47:20 ] >>77 ES_READONLY WM_CTLCOLORSTATIC でどう?
79 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 22:55:03 ] >>78 できました!ありがとうございます! しかし、目的のEDITのウィンドウの背景を変えるにはどのように指定すればいいのでしょうか?
80 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 23:59:54 ] >>79 親ウィンドウでWM_CTLCOLOREDITを捉える
81 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:20:58 ] リストビューの行にチェックボックスはどうやって付けるのでしょうか ↓こんな感じです _______ |__|_____ |□ | |□ | |□ |  ̄ ̄ ̄ ̄ ̄ ̄ ̄
82 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:25:49 ] >>81 www.kumei.ne.jp/c_lang/sdk2/sdk_198.htm ここらへんで幸せになれると思う
83 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:27:54 ] >>82 即レスありがとう 幸せになってきます
84 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 09:52:05 ] >>72 それでした。 ""を追加したら表示されました。 ありがとうございました。
85 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:35:32 ] ReadFileで読み取ったファイルを1行づつ二次元の配列に格納して 構文解析したいです ReadFileの第二パラメータのバッファから、二次元の配列に移すAPI はありますか?
86 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:45:42 ] CopyMemory
87 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 10:57:17 ] 物臭もここまでくると素晴らしいな MSが何の為にそんなAPI用意するんだろうか
88 名前:デフォルトの名無しさん [2007/04/20(金) 11:50:11 ] 質問です。 ツールバーを作ろうとしているのですが、色々なサイトを調べても、ツールバー上にはボタンしか置いていないようです。 コンボボックスをツールバー上にのせたいのですが、可能でしょうか? ツールバーと似た、レバーコントロールというものの上におけるのは調べて発見できたのですが…
89 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 11:58:39 ] >レバーコントロール 思わずふきだしてしもた。
90 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 12:57:22 ] エクセルでオープンしているファイルを、 CreateFileでオープンしたいのですが、どうすれば出来るでしょうか。 エクセルでオープンしていなければ、CreateFileでオープンできるのですが、 エクセルでオープンしていると、CreateFileでオープンできないようです。 ただ、他のファイルビュアーでは読めたりするので、どうやればそれができるのかわかりません。
91 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:01:21 ] CreateFileのリファレンス読めば明らかだと思うが・・
92 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:01:24 ] >>90 排他モードで開いてるんだろ
93 名前:85 mailto:sage [2007/04/20(金) 13:06:25 ] ReadFileの第二パラメータのバッファの中は 111\r\n222\r\n333\r\nEOF と連続した文字列なのはわかったのですが、これをCopyMemoryを使って、 1行づつ二次元の配列に移す場合、バッファを先頭から1文字づつ読んで\r\n 毎に切り分けて格納するしかないのでしょうか・・・ 定番の読み方(例えば仕事(?)でやられる方)が知りたいです ↓こうしたい char hairetsu[5000][1024] (5000はファイルの行数、1024は1行の最大の長さ) hairetsu[0][1024]に111\r\n hairetsu[1][1024]に222\r\n hairetsu[2][1024]に333\r\n hairetsu[3][1024]にEOF
94 名前:85 mailto:sage [2007/04/20(金) 13:07:03 ] >>86 ありがとうございます
95 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:12:28 ] てかCの標準関数にそのものズバリなのあるじゃねぇか
96 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 13:19:12 ] バッファはそのまま使いつづけて 各行開始位置のポインタ値を保持する変数配列を用意し バッファを一旦頭から末尾まで全部捜査し 行開始位置のポインタをとりつつ\r\nを\0\0に書き換えていく これで文字列系関数にもポインタを渡すだけで行ごとに処理が可能に! つーか>>93 みたいな多元配列はメモリの無駄だし
97 名前:デフォルトの名無しさん [2007/04/20(金) 14:00:55 ] Win2000+VC.net2003の環境で QueueUserAPCをコンパイルすると error C3861: 'QueueUserAPC'識別子は、引数依存の照合を使用しても見つかりません。 と出るんですがどうすれば解決できますか? winbase.hをインクルードしてもkarnel32.dllとリンクしても駄目みたいなんですが。。
98 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:06:49 ] _WIN32_WINNT を 0x0400 以上の値で define した後にヘッダーをインクルード (コンパイラ設定でマクロ設定する でも可)
99 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:22:34 ] 子ウィンドウが開かれていて、親ウィンドウの上を移動させる時、 9x系と再描画されて、XPだと再描画されないのですが、 9x系とXPでは、再描画の挙動が違ったりしているのでしょうか。
100 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 14:46:22 ] そりゃあ、OSの設定の問題だろ 移動を終えてドラッグ止めたら再描画されるだろ?
101 名前:99 mailto:sage [2007/04/20(金) 15:35:25 ] >>100 ありがとうございます。 されないです。 最小化して標準に戻すのでもダメです。 WM_PAINTが来てない可能性すらあるので、 そこらへんから実験してみます。
102 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:22:57 ] それはあれか、全く同じEXEを9xとXPで動かしてるのか? >WM_PAINTが来てない可能性すらあるので、 ネェヨwwwww
103 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:29:05 ] 子ウインドウは動かしただけでは再描画されなくても正常だが WS_EX_LAYERED付なら親でも
104 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:34:47 ] そういえばレイヤードウィンドウなんてありましたねぇ 全然必要性を感じないから使ったこと無いですが
105 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:39:05 ] レイヤードウィンドウは雑誌やスクリーンショットで見る分にはかっこいいが 実際に使ってみると使いにくくてしょうがない
106 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:42:11 ] >>95 ありがとうございますstrtok確認しました >>96 >\r\nを\0\0に書き換えていく このやり方で行きます目から鱗です こういうテクニックって本に書いてあるんでしょうか? ウェブでも本でも見たことない・・
107 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 16:51:04 ] >>105 完全不透明のレイヤードウィンドウもつくれるよ。 見た目は普通のウィンドウと変わらないけど、WM_PAINTは激減する。
108 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:05:24 ] 外部プロセスのCPU使用率を強制的に制限する方法を探しています。 最初に、CreteProcessのPROCESS_INFORMATIONから得られるhThreadに対して SuspendThread/ResumeThreadを試しましたが、 複数スレッドがある場合に対応できない様です。 次にCreateToolhelp32Snapshotによるプロセス内のThreadの列挙で SuspendThread/ResumeThreadをやろうとしましたが、 Thread32First/Thread32Nextで得られるThreadIDに対し、 OpenThreadでHandleへ変換しようとすると失敗してしまいました。 また、JobObjectの関連付けでJOB_OBJECT_LIMIT_JOB_TIMEや IDLE_PRIORITY_CLASSで時間制限を掛けてみましたが、このオプションは 設定時間にプロセスが終わってしまうだけみたいなので目的と違う様です。 使用率制限を行うツールとして既にBESという物がありますが、 あれはどうやっているのでしょうか?
109 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 17:07:32 ] すいません、BESはソースが公開されていますね。 調べてみます…。
110 名前:99 mailto:sage [2007/04/20(金) 17:12:42 ] >>102 はい。基本は9xで作っているんですけど、 動作確認のためxpで動かそうと思いました。 >>103 再描画されて欲しいのは、下にある親ウィンドウの方です。 ただ、最小化→標準化とすると、子ウィンドウの方も再描画されません。 WS_EX_LAYEREDについても調べてみます。