■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
Win32API質問箱 Build29
251
名前:
デフォルトの名無しさん
:05/03/14 21:19:52
Build27より
756 名前: デフォルトの名無しさん 05/02/08 01:04:27
すみません教えてください
APP(A)からDLL(B)を呼び出しているのですが、DLL(B)からさらにDLL(C)をLoadLibrayでロードしています。
DLL(C)からDLL(B)の関数をGetProcAddress()で読んでいるのですが、DLL(C)はハードコーディングで
GetProcAddress(GetModuleHandle(NULL), "Foo")
みたいになっちゃっていてどうもAPP(A)の空間しか見れて無いらしくDLL(B)の関数がGetProcAddressできてません。
明示的にAPP(A)の関数の名前空間にDLL(B)に関数も含めるにはどうすればいいのでしょうか?
766 名前: デフォルトの名無しさん 05/02/08 14:14:47
>>756
APP(A)に"Foo"関数をエクスポートさせて(保障されてるかは知らない)
APP(A)の"Foo"からDLL(B)の関数を呼んでみてはどうだろか。
768 名前: デフォルトの名無しさん 05/02/08 15:12:06
>>756
>>766
と似たようなもんだけど、APP(A) で forwarder RVA で
DLL(B) の関数をエクスポートする。APP(A) の .def ファイルで、
EXPORTS
Foo = B.Foo
って書くのねん。(ファイル名が B.DLL の場合)
252
名前:
デフォルトの名無しさん
:05/03/14 21:23:28
>>250
それは事実だが、今問題なのはLoadLibrary関数の仕様だろ?
253
名前:
デフォルトの名無しさん
:05/03/14 21:30:49
>>252
メインへのクラスパスを含んだDLLが.NETのEXEだ
くらいなざっくりとした感覚でいいじゃん
世の中単純に行こうよ
254
名前:
デフォルトの名無しさん
:05/03/14 21:33:49
なあ、ここってWin32APIのスレだよな?
255
名前:
246
:05/03/14 21:53:39
m_hRgn==CreateRectRgn(5,5,100,100);
は、
m_hRgn=CreateRectRgn(5,5,100,100);です。すいません。
256
名前:
デフォルトの名無しさん
:05/03/14 22:25:27
>>254
ご安心下さい。
当機は操縦不能に陥っていますが管制塔との通信は繋がっております。
257
名前:
デフォルトの名無しさん
:05/03/14 23:14:49
>>246
とりあえず、
FuncA()で生成したリージョンを含むサイズの矩形リージョンを
描画直前にCreateRectRgn()でつくって
CombineRgn()で合成してできたリージョンを使ってみるとか・・・
258
名前:
デフォルトの名無しさん
:05/03/14 23:34:44
「リージョンは毎回作る必要があります」とドキュメントに書かれています
259
名前:
デフォルトの名無しさん
:05/03/15 00:03:37
>>246
SetWindowRgn()が成功すると、システムはhRgnで指定したリージョンを所有する。その際、リージョンのコピーは作成されないので、
これ以降はこのリージョンハンドルに対して関数を呼び出すべきではない。
必要ならGetWindowRgn()でコピーを作成し、使用する。
260
名前:
デフォルトの名無しさん
:05/03/15 00:26:34
>>259
>>246-247
のどこでSetWindowRgnが使われていると言うのだ?
261
名前:
259
:05/03/15 00:46:19
>>260
勘違いですた。スマソ。
262
名前:
デフォルトの名無しさん
:05/03/15 01:10:47
ここって一人、キチガイが常駐してるよね。
なんとなく・・・
263
名前:
デフォルトの名無しさん
:05/03/15 01:13:03
俺のこと?
264
名前:
デフォルトの名無しさん
:05/03/15 01:17:32
よかった。そういう自覚は持ってるのね。
265
名前:
デフォルトの名無しさん
:05/03/15 01:18:51
>>262
266
名前:
デフォルトの名無しさん
:05/03/15 01:26:57
>>265
がキチガイ。
なんとなくというか、非常にわかりやすいと思うが。
267
名前:
デフォルトの名無しさん
:05/03/15 07:14:54
>>266
268
名前:
デフォルトの名無しさん
:05/03/15 08:03:15
hwnd = GetForegroundWindow ();
で得たウィンドウを横スクロールしようと思って、
PostMessage (hwnd, WM_HSCROLL, MAKEWPARAM (SB_LINELEFT, 0), NULL);
PostMessage (hwnd, WM_HSCROLL, MAKEWPARAM (SB_ENDSCROLL, 0), NULL);
としてメモ帳などで試しても、スクロールしてくれませんでした。
どうすれば、スクロールするようになるんでしょうか?
269
名前:
デフォルトの名無しさん
:05/03/15 08:12:36
PostMessageとSendMessageの違いを教えてください。
Send:そのウィンドウプロシージャがメッセージを処理し終わったら
Post:メッセージをメッセージキューにポストして直ちに
制御を返す、と書いてあるんですが、よく分かりません。
270
名前:
デフォルトの名無しさん
:05/03/15 08:27:52
>>269
そのまんまじゃん・・・
そのメッセージの処理に10秒かかるとしたら、
SendMessageの次の処理を実行するまで、10秒以上かかる。
PostMessageだとキューにポストしたら、すぐに次の処理に移る。
271
名前:
269
:05/03/15 08:37:11
>>270
こんな感じですか?
マウスの左ボタンが押された
↓
PostMessage or SendMessage
↓
PostMessageなら、メッセージを送る
↓
そのコールバックを終わらせず、10秒while文などで待つ
↓
そのコールバックが終わる
↓
SendMessageなら、メッセージを送る
272
名前:
デフォルトの名無しさん
:05/03/15 08:43:14
SendMessageはそのウィンドウのウィンドウプロシジャーをそのまま呼び出してる見たいな感じ
処理が終わるまで戻らない
PostMessageはメッセージを送るだけで返ってくる、あとはOS任せ
273
名前:
デフォルトの名無しさん
:05/03/15 08:45:16
>>271
ちゃうでしょ
関数A内で << SendMessage >> によりマウスの左ボタンが押されたというメッセージを送る
↓
WindowProcが送られたメッセージを処理
↓
メッセージの処理が終わり次第、関数Aに処理が戻る
(SendMessageで送ったメッセージの処理が終わるまで処理を返さない)
関数B内で << PostMessage >> によりマウスの左ボタンが押されたというメッセージを送る
↓
キューにメッセージを挿入し関数Bに処理が戻る
(キューにメッセージを挿入した時点ですぐに戻る)
↓
WindowProcが送られたメッセージを処理
(メッセージ処理のタイミングはキュー次第)
要するに、SendMessageは同期関数で、PostMessageは非同期関数
と言ったほうが解りやすいかな。
274
名前:
269
:05/03/15 08:49:24
>>272
SendMessage:関数の再帰呼び出しみたいな感じ
PostMessage:単純なメッセージ送信
みたいな感じですか?
275
名前:
269
:05/03/15 08:56:04
>>273
詳しくて分かりやすいです。何となく分かった気がします。
お答えくださった皆様、どうもありがとうございました。
276
名前:
デフォルトの名無しさん
:05/03/15 09:28:45
PostThreadMessage()はあるが、SendThreadMessage()はない。
推して知るべし。
277
名前:
269
:05/03/15 11:13:11
>>276
なるほど。
それはまだ使った事が無いですが、その仰る意味は何となく分かりました。
278
名前:
デフォルトの名無しさん
:05/03/15 13:11:49
質問です。
Windowsのペイントにあるツールボックスやカラーボックスみたいに
ウィンドウの画面端に来るとピタッとくっつくようなものを作りたいんですが、
これはウィンドウクラスやCreateWindowEx()のスタイルの設定で
作れるようなものなんでしょうか?
それとも画面端に来ると自分でウィンドウサイズを変更して
そのような動作をするようにしているんでしょうか?
よろしくお願いします。m(__)m
279
名前:
デフォルトの名無しさん
:05/03/15 13:16:28
>>278
ドッキングウィンドウの事か?
280
名前:
デフォルトの名無しさん
:05/03/15 14:04:51
>>278
それはMFCでないと実現できないと思う。
もしくは、Win32を使って独自にシステムを作るか。
MFCの場合、
・CControlBar
・CToolBar
・CDockBar
を用いて実現するみたいだけど。
この辺グーグルすれば見つかるはず。
281
名前:
デフォルトの名無しさん
:05/03/15 14:41:30
>>276
お前は、
>>224
だろ。
何もわかってないくせに古老みたいな態度とってんじゃねーよ。
知識・経験の浅さがばれてんだよ。
自分でプログラムを走らせて確認せずに、
ドキュメント読んだだけで理解したと錯覚してるのは滑稽だぞ。
282
名前:
デフォルトの名無しさん
:05/03/15 14:47:11
ちょっと特定のアプリケーションの話になってしまうのですが、現在EdMaxという
メーラーで、メール本文の表示画面で選択された文字列を加工してファイルに
出力するプラグインを書いています。
プラグインのSDKで表示(ビュー)画面のウィンドウハンドルは取得できるのですが、
EM_GETSEL, EM_GETSELTEXT, EM_GETTEXTEX のどれを使っても正しく取得できません。
空文字列又は0が返ってしまいます。WM_GETTEXTでも空文字列になってしまいます。
ウィンドウハンドルはSpy++で確認した値と同じなので正しく取得できていると思うのですが、
これで選択文字列を取得するにはどのようにすればいいのでしょうか。
↓こんな感じのコードです
---
char buf[1024*64];
eda.GetStaticWindows(&phWnd, &phFolder, &phList, &phView, &phAttach);
SendMessage(phView, EM_GETSELTEXT, 0, (LPARAM)buf);
また、対象のウィンドウはRich Edit Controlだと思っているんですが、それを確認する方法
などはあるのでしょうか。
283
名前:
デフォルトの名無しさん
:05/03/15 14:50:19
>>277
腐った
>>276
みたいな野郎に騙されるなよ。
別プロセス・別スレッドのウィンドウにもSendMessage()できる。
どうしてSpy++がウィンドウキャプション文字列を取得できるのか、考えてみろ。
技術の世界においては、
悠然と構えてる奴・詩歌的記述を好む奴は、ただの無能者だと思え。
284
名前:
デフォルトの名無しさん
:05/03/15 14:52:59
>>282
>対象のウィンドウはRich Edit Controlだと思っているんですが、それを確認する方法などはあるのでしょうか。
Spy++ クラス名見ればわかるだろ。
285
名前:
デフォルトの名無しさん
:05/03/15 14:54:34
>>283
SendMessage()とPostMessage()の違いの話じゃないのか?
286
名前:
284
:05/03/15 14:55:34
>>284
×Spy++ クラス名
○Spy++ でクラス名
orz
287
名前:
282
:05/03/15 15:03:07
>>284
情報不足ですみません。
MFCで作られているためか、クラス名は「Afx:400000:b:0:1900010:0」でした。
これから元の(?)クラス名を調べることもできなさそうな感じでして…。
http://www.microsoft.com/japan/msdn/library/ja/vclib/html/vccontn070mfcwindowclassnames.asp
288
名前:
デフォルトの名無しさん
:05/03/15 15:05:48
どっかからのSendMessage処理中に
その処理の中でまたSendMessageって呼んでも良いんですか?
289
名前:
デフォルトの名無しさん
:05/03/15 15:07:04
>>288
再帰処理がいつから禁止になったの?脳内限定?
290
名前:
デフォルトの名無しさん
:05/03/15 15:10:50
>>289
質問を質問で返すのはマナーに反します。
社会人になったらやってはいけませんよ。
291
名前:
デフォルトの名無しさん
:05/03/15 15:11:04
>>288
いいけど、AとBが別スレッドの時
AからBへSendMessage
応答したBからAへSendMessage
するとデッドロックする。
292
名前:
デフォルトの名無しさん
:05/03/15 15:12:28
それは恐ろしい。
293
名前:
デフォルトの名無しさん
:05/03/15 15:27:25
SendMessage(SendMessageCallBack)
↓
ウィンドウプロシージャ直呼び出し・処理
↓
ウィンドウプロシージャの処理終了したら
↓
制御を返す(指定したコールバック関数を呼び出し、後処理)
PostMessage
↓
メッセージキューに、メッセージを追加。
↓
追加後、即制御を返す。
→そのメッセージの順番がきたらOS側で処理
バス停で、皆が順番どおり並んでいる時、
・礼儀を知らないじーさんが突然先頭に割り込む→SendMessage
・常識どおり、列の後ろに並ぶ普通の人→PostMessage
294
名前:
デフォルトの名無しさん
:05/03/15 15:28:02
>>292
別に恐ろしいというほどでもないっしょ。
メッセージに応答しない(描画さえしない)糞アプリなぞ世の中に無数にあるじゃないか。
デッドロックが深刻な問題になるのはUIをもった可視アプリではなく、サービスなどの不可視アプリの話。
余談になるが、WindowsXPからは、
フリーズした糞アプリの可視ウィンドウの位置を強制移動できるようになってる。
XPを糞とみなす2000ユーザはこの密かな拡張をも軽視するのだろうがな。
295
名前:
デフォルトの名無しさん
:05/03/15 15:33:38
>>293
残念ながら、たとえ話として不完全だ。
>バス停で、皆が順番どおり並んでいる時、
> ・礼儀を知らないじーさんが突然先頭に割り込む→SendMessage
> ・常識どおり、列の後ろに並ぶ普通の人→PostMessage
自分が運転手の立場ならそれでよいが、
自分が客の立場だった場合の意味が、間違ってさえいる。
296
名前:
デフォルトの名無しさん
:05/03/15 15:45:36
post - 郵便受けに入れる普通の郵便
send - 中の人に直接渡す書留
という例えはどうか?
297
名前:
デフォルトの名無しさん
:05/03/15 15:57:58
日曜日に困るな。
298
名前:
デフォルトの名無しさん
:05/03/15 16:03:21
年中無休24時間営業
299
名前:
278
:05/03/15 16:15:05
>>279
>>230
ドッキングウィンドウで検索してみたら
ttp://techtips.belution.com/ja/vc/0004/
トップに↑のサイトが見つかりました。
そうです!まさにこれと同じようなことがしたかったんです!!
・・・が、MFCはさっぱり分からんので諦めることにしました。_| ̄|○
失礼しました。(´Д`;)
300
名前:
デフォルトの名無しさん
:05/03/15 16:18:16
いや、普通にsdk/cでコード書けばできるから。
301
名前:
デフォルトの名無しさん
:05/03/15 16:24:00
いや、むしろWin32よりMFCのほうが簡単なんだけど…。
302
名前:
デフォルトの名無しさん
:05/03/15 16:24:25
WTLつかっとけ
303
名前:
デフォルトの名無しさん
:05/03/15 16:26:47
自分で書くのは無理じゃね?似たようなのなら作れるだろうけど
WTLには無いでしょ
304
名前:
デフォルトの名無しさん
:05/03/15 16:32:44
DockコントロールあるクラスライブラリってMFCとVCL以外になにかあったっけ?
305
名前:
デフォルトの名無しさん
:05/03/15 16:35:42
というか、ドッキングツールバーってかなり使いづらいけどね。
ドッキング機能を使いこなしたことはないな。
いらない。
306
名前:
デフォルトの名無しさん
:05/03/15 16:56:49
wxWidgets にドッキングウィンドウライブラリが入ってますよ。
307
名前:
デフォルトの名無しさん
:05/03/15 17:04:58
ビットマップからトリミング(スケーリングはしない)されたビットマップを作成するにはどうしたら良いでしょうか?
元のビットマップが上書きされるのは構いません。
308
名前:
デフォルトの名無しさん
:05/03/15 17:09:57
>>307
BilBltのどこが不満なんだ?
309
名前:
デフォルトの名無しさん
:05/03/15 17:10:35
名前
310
名前:
デフォルトの名無しさん
:05/03/15 17:13:07
BilBlt ビルゲイツご用達のもの
通常はBitBltを使用する
311
名前:
デフォルトの名無しさん
:05/03/15 17:19:46
>>294
>余談になるが、WindowsXPからは、
>フリーズした糞アプリの可視ウィンドウの位置を強制移動できるようになってる。
>XPを糞とみなす2000ユーザはこの密かな拡張をも軽視するのだろうがな。
なんとなく役に立ちそうに見えて実は全然無意味なんだよね
312
名前:
デフォルトの名無しさん
:05/03/15 17:25:33
可視ウィンドウの位置を強制移動ができたからって、
なにかいいことでもあるの?
313
名前:
デフォルトの名無しさん
:05/03/15 17:29:15
>>312
ログ検索中のかちゅ〜しゃのウィンドウを移動させられる
314
名前:
デフォルトの名無しさん
:05/03/15 17:45:43
かちゅーしゃってログ検索するだけでフリーズするんだ(わらい
315
名前:
デフォルトの名無しさん
:05/03/15 18:10:11
>>308
>>310
CreateBitmapで欲しい大きさの空Bitmap作って
そこにBitBlt(to_mdc,0,0,width,height,from_mdc,x,y)で上書きでよろしい?
316
名前:
デフォルトの名無しさん
:05/03/15 18:10:41
SRCCOPY付け忘れた
317
名前:
デフォルトの名無しさん
:05/03/15 19:08:45
ビットマップに上書きというより、メモリDCに上書きってことでしょ?
318
名前:
デフォルトの名無しさん
:05/03/15 20:23:04
>>317
うう、違いがよくわかりません。
スクリーンショットの一部を書き出したかったのですがうまくいきません。
指定範囲が真っ黒に塗りつぶされるだけなのです。どうすればうまくいくのでしょうか?
HWND hDesktop = GetDesktopWindow();
HDC hdc = GetDC(hWnd);
HDC hDesktopDC = GetDC(hDesktop);
HDC mdc = CreateCompatibleDC(hDesktopDC);
HBITMAP hBitmap, hOldBitmap;
hBitmap = CreateCompatibleBitmap(mdc,1152,864);
hOldBitmap = (HBITMAP)SelectObject(mdc,hBitmap);
BitBlt(hdc,100,100,300,300,mdc,0,0,SRCCOPY);
SelectObject(mdc,hOldBitmap);
DeleteDC(mdc);
ReleaseDC(hWnd, hdc);
ReleaseDC(hDesktop, hDesktopDC);
UpdateWindow(hWnd);
319
名前:
デフォルトの名無しさん
:05/03/15 20:25:53
スクリーンショットじゃなくてデスクトップの背景でした。
320
名前:
デフォルトの名無しさん
:05/03/15 20:31:11
mdcに最初選択されているビットマップは2色ビットマップで
それと互換のビットマップhbitmapを作れといったから
hbitmapが2色だから
だから、そこはmdcじゃなくてhdcかhdesktopdcにする
321
名前:
デフォルトの名無しさん
:05/03/15 20:32:54
srcDCとdstDC逆じゃネ?
322
名前:
デフォルトの名無しさん
:05/03/15 20:38:13
hbitmapのDeleteは?
323
名前:
デフォルトの名無しさん
:05/03/15 20:42:21
>>320
出来ました。感動です。ありがとうございました。
そしてやはりスクリーンショットであってることを確認 orz
>>321
背景を窓に描く仕様ですので、あっとりました。
324
名前:
デフォルトの名無しさん
:05/03/15 20:42:53
>>322
うおっ、ありがとう修正します orz
325
名前:
デフォルトの名無しさん
:05/03/15 20:56:31
すごい初歩的なことですみませんが、フォルダの表示で詳細にすると
名前、サイズ、種類、更新日時と出ますよね。
このような感じで表示するのはどのAPIなんでしょうか?
リストボックスかなと思っていろいろとやってみたんですが、なんか違うみたいです
326
名前:
デフォルトの名無しさん
:05/03/15 20:57:36
リストビュウ
327
名前:
デフォルトの名無しさん
:05/03/15 21:01:48
>>326
おお、ありがとうございます
listviewですね
プログラムWindows買ったのに載ってないっぽい・・・
OTL
328
名前:
デフォルトの名無しさん
:05/03/15 21:10:55
>>327
MSDN
329
名前:
デフォルトの名無しさん
:05/03/15 21:17:30
コントロールを画像一覧にしてリンクしてないMSDNって何気に不便。
そういうサイトってあるのかな?
330
名前:
デフォルトの名無しさん
:05/03/15 23:49:52
>291
ネタか。良い子はあどを読みましょう。
331
名前:
デフォルトの名無しさん
:05/03/16 00:26:54
>>330
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/messagesandmessagequeues/messagesandmessagequeuesreference/messagesandmessagequeuesfunctions/sendmessage.asp
デッドロックの所見ると、SendMessageはコントロールを譲渡するから大丈夫だね。
332
名前:
デフォルトの名無しさん
:05/03/16 00:48:22
1行の文字数を取得したいのですがどのAPIを使えばいいか教えてください。お願いします
333
名前:
デフォルトの名無しさん
:05/03/16 00:53:52
デスクトップで右クリックすると出てくる「最新の情報に更新」。
コレって、WinApiから呼び出せるんでしょうか?
もしくはコレに近い関数があれば教えてください。
334
名前:
デフォルトの名無しさん
:05/03/16 01:12:07
>>332
その1行とやらはどこにあるんだ?
335
名前:
332
:05/03/16 01:13:54
エディットコントロールです
336
名前:
デフォルトの名無しさん
:05/03/16 01:19:38
任意のエディタ・ワープロ上で右クリックしたときに出る
コンテキストメニューに独自の項目を追加したいのです。
こういうことはやっぱりシステムフックでMenuの生成や選択の
メッセージをフックしてやるんですよね?
何か参考になるソースを探しています。
337
名前:
デフォルトの名無しさん
:05/03/16 02:05:28
>>336
ttp://www.codeguru.com/Cpp/COM-Tech/shell/article.php/c4505/
338
名前:
332
:05/03/16 02:13:52
解決しました
339
名前:
デフォルトの名無しさん
:05/03/16 02:30:55
どう解決したか書けよ
340
名前:
332
:05/03/16 02:35:25
>>339
自分で調べろよヴォケ。
341
名前:
デフォルトの名無しさん
:05/03/16 03:07:35
ワラタ
342
名前:
デフォルトの名無しさん
:05/03/16 04:18:38
>>340
フィードバックしないなら聞くなよカス。
343
名前:
デフォルトの名無しさん
:05/03/16 04:21:26
>>217
DIBだと広域検索の時何度もGetDIBitsして効率悪くない?
広域ならDDB、どんぴしゃならDIBとか?
344
名前:
デフォルトの名無しさん
:05/03/16 16:56:39
>>337
ありがとうございます、と言いたいですが、
これはShell Extensionの話ですよね。
Explorerとかデスクトップの右クリックじゃないですか?
エディットコントロールとかのデフォルトのコンテキストメニューのハンドルは
どうやって取得したらいいんでしょうね。
HMENUが取れたらサブクラス化で項目追加もできそうな気が。。
345
名前:
デフォルトの名無しさん
:05/03/16 17:30:09
>>344
サブクラスしてWM_INITPOPUPMENUでちょちょいとすればいいんじゃないの?
346
名前:
デフォルトの名無しさん
:05/03/16 19:21:16
テキストエディタを作ってるんですが、以下のコードで大きなファイルを読み込んだときにエラーが出ます。
dwSize = GetFileSize( hFile, NULL );
hMem = GlobalAlloc( GHND, sizeof( char ) * dwSize + 1 );
lpszBuf = ( char * )GlobalLock( hMem );
調べてみると、2行目のGlobalAllocは成功しているのに
3行目のGlobalLockからの戻り値はNULLです。
どうしてでしょう?
347
名前:
デフォルトの名無しさん
:05/03/16 19:27:43
なんでいまどきハンドル経由なの?
348
名前:
デフォルトの名無しさん
:05/03/16 19:35:06
>>346
GetLastErrorは?
349
名前:
デフォルトの名無しさん
:05/03/16 19:47:19
9xでは数MB以上ならVirtualAlloc(Ex)使えと書いてある。
そうでなくともWin32ではHeapAllocを使えと書いてあるがな。
350
名前:
デフォルトの名無しさん
:05/03/16 19:48:13
ウルセー俺の勝手だろ
351
名前:
デフォルトの名無しさん
:05/03/16 21:07:09
>>346
メモリ取得に失敗したから。
352
名前:
デフォルトの名無しさん
:05/03/16 21:25:46
if(SendMessage( hwnd_button, BM_GETSTATE, 0, 0) == BST_PUSHED) {
MessageBox(NULL, "押されたよ", "メッセージボックス", MB_ICONERROR);
}
とやって、ボタンが押された時にメッセージボックスが出るようにしたのですが、うまく機能しません
何が原因なんでしょうか?
353
名前:
デフォルトの名無しさん
:05/03/16 21:39:41
なぜに、WM_COMMANDをトラップして調べないのかが理解できない。
それと、上記コードがどこに書いてあるのかによっても現象は違ってくるんじゃないだろうか。
354
名前:
デフォルトの名無しさん
:05/03/16 21:41:09
>>352
ステータスはビットが立ってるかどうかで調べる。
==じゃなくて&
355
名前:
デフォルトの名無しさん
:05/03/16 21:42:28
>>353
>>354
どっちがカッコよくてどっちがカッコわるいの?
356
名前:
デフォルトの名無しさん
:05/03/16 21:42:54
>>352
ボタンが押されたらWM_COMMANDが送られてくるから普通そっちを見る。
357
名前:
デフォルトの名無しさん
:05/03/16 21:51:11
ゲームを作る時、sendmessageを使った方がいいかなと思いましたが、
WM_COMMANDのほう使うことにします
358
名前:
デフォルトの名無しさん
:05/03/16 23:26:12
EndPaintは、内部でDeleteDCもされているのでしょうか?
それとも、別にEndPaintのあとに、DeleteDCもしないといけないのでしょうか?
359
名前:
デフォルトの名無しさん
:05/03/16 23:26:27
すんません全角になってる部分があります。
360
名前:
デフォルトの名無しさん
:05/03/16 23:29:59
したらいけん
361
名前:
デフォルトの名無しさん
:05/03/16 23:30:18
DeleteDCは不要。こういう対応になるようにそれぞれ呼べば良い。
BeginPaint⇔EndPaint
GetDC(Ex)⇔ReleaseDC
CreateDC⇔DeleteDC
362
名前:
346
:05/03/16 23:31:12
エラーが発生するのが稀でGetLastErrorが意味を成さないんですよ
こういう場合だとVirtualAllocとHeapAlloc、どちらを使うべきですか?
363
名前:
358
:05/03/16 23:32:04
>>360
>>361
ご返答助かります。
ありがとうございました。
364
名前:
デフォルトの名無しさん
:05/03/16 23:36:29
どうでもいいことですが、sizeof( char )はいらないと思います。1バイトですから。
あと、GlobalAllocは使わない方向になったっぽいような。
HeapAllocで〜。
365
名前:
デフォルトの名無しさん
:05/03/16 23:38:53
自作エディタなら作ったことあるなぁ。
選択処理(マウスでクリックドラッグして、その部分を強調する)に手こずったな。あぁなつかSEA。
366
名前:
デフォルトの名無しさん
:05/03/16 23:39:05
>>364
そんなもんコンパイラが直すだろ
ソースの可読性を落としてどうする
367
名前:
デフォルトの名無しさん
:05/03/16 23:46:38
sizeof(char)は何があろうと1なんだからわざわざ書くほうが可読性落ちるだろアホ
368
名前:
デフォルトの名無しさん
:05/03/16 23:54:23
>>367
落ちないよ。バカ?
369
名前:
デフォルトの名無しさん
:05/03/16 23:54:34
うるせーな
がたがた細かいこと言うと禿げるぞ
370
名前:
346
:05/03/16 23:54:53
ありがとうございました
371
名前:
デフォルトの名無しさん
:05/03/16 23:55:05
今週の標語
余計な突っ込みで無駄なリソース
372
名前:
デフォルトの名無しさん
:05/03/16 23:57:16
GlobalAllocの引数に設定するのはバイト単位なんだから、sizeof(char)なんて書く必要はないと思うが。
373
名前:
デフォルトの名無しさん
:05/03/16 23:58:39
sizeof(_TCHAR)
なら意味あるけどな。
374
名前:
デフォルトの名無しさん
:05/03/16 23:58:58
型情報と必要量を同時に記述したほうが可読性高いよ
375
名前:
デフォルトの名無しさん
:05/03/16 23:59:12
Windows付属のメモ帳をあなどるなかれ。
メモ帳と同機能を「自作」するとなると、結構大変なんだよなw
完全自作だよ。
376
名前:
デフォルトの名無しさん
:05/03/16 23:59:45
>>375
チラシの裏シミュレータにいちゃもんですか?
377
名前:
デフォルトの名無しさん
:05/03/17 00:02:28
>>375
簡単だよ。EDIT_CLASSウィンドウ作ればいいだけ。
EDIT_CLASSと同等のものを作るのは初心者には結構骨だけど。
378
名前:
デフォルトの名無しさん
:05/03/17 00:02:53
喧嘩してる途中で、コーヒーブレイク。
オッパイポロリ
http://abcdane.net/blog/archives/200503/psp_la.html
379
名前:
375
:05/03/17 00:03:59
>>377
いや、そのEDITクラスを使わずに、さっき言ったように「完全自作」。
380
名前:
デフォルトの名無しさん
:05/03/17 00:06:44
ノノノヽヽ
(´・ω・`)从 優しくしてネ
/ y/⌒ヽ_
_/ ヽ/ i / 'ヽ
と\ / イ\/'\
 ̄ヽ と\__ノ ̄ ノ
/ -'"⌒'/
ヽ,_____/つ
\___/-'
381
名前:
デフォルトの名無しさん
:05/03/17 01:44:56
>>364
D&Dやクリップボードを使おうとすると
HGLOBALが手っ取り早い。
382
名前:
デフォルトの名無しさん
:05/03/17 09:44:04
そんなことよりさ、ううわーなにを
383
名前:
デフォルトの名無しさん
:05/03/17 13:27:32
>>381
MSDNもそれだけは仕方が無いと書いてある。
384
名前:
デフォルトの名無しさん
:05/03/17 16:03:07
初歩的な質問で申し訳ないのですが質問があります。
DialogBox関数で作られた複数のダイアログがあります。
このダイアログ間で変数の受け渡しをやるにはどうすればいいのでしょうか?
385
名前:
デフォルトの名無しさん
:05/03/17 16:07:32
>>384
「複数のダイアログ」は同一のプロセスでつくられたものなの?
386
名前:
デフォルトの名無しさん
:05/03/17 16:11:50
DialogBoxParam 関数を使って変数を渡して、
EndDialog 関数の呼び出しで指定された戻り値で受け取る
387
名前:
デフォルトの名無しさん
:05/03/17 16:56:29
>>385
言葉足らずですみません。
その通りで同一のプロセスで作られたものです。
>>386
調べてみたいと思います。
お二人ともありがとうございました。
388
名前:
デフォルトの名無しさん
:05/03/17 18:55:57
シリアルキー解析集「ALTEA」
大好評発売中!
http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960?
市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。
これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。
解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。
シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;
WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。
オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。
もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?
389
名前:
デフォルトの名無しさん
:05/03/17 20:10:10
↑ここだけよんでいない
俺様用しおり
390
名前:
デフォルトの名無しさん
:05/03/17 22:11:33
IEコンポーネントを使っています。
通常のナビゲーションはDocumentCompleteで検出できるのですが、
リロードはどんなイベントで検出できるのでしょうか?
391
名前:
デフォルトの名無しさん
:05/03/18 00:23:16
いくつかのファイルからなるプロジェクトがあります。
NotePad.h
関数プロトタイプ・グローバル変数の宣言と初期化
WinMain.cpp
WndProc.cpp
functions.cpp
のソースでグローバル変数を使用します。
すると、以下のようなエラーが出ます。いったいどうなっているんでしょう?
NotePad error LNK2005: "char * szClassName" (?szClassName@@3PADA) は既に functions.obj で定義されています。
392
名前:
デフォルトの名無しさん
:05/03/18 00:25:57
>>391
#ifndef __NOTEPAD_H
#define __NOTEPAD_H
//やりたいこと
#endif
393
名前:
デフォルトの名無しさん
:05/03/18 00:26:58
>>391
Cレベルの基本的なことだけども(つまりスレ違い)、
複数のソースで使われるヘッダでグローバル変数の初期化しちゃダメ。
394
名前:
デフォルトの名無しさん
:05/03/18 00:27:47
初期化じゃないや、定義
395
名前:
デフォルトの名無しさん
:05/03/18 01:07:43
>>393-394
知らなかった
どうすればいいんですか?
396
名前:
デフォルトの名無しさん
:05/03/18 01:19:52
どうせexternだろ
他人様には関係ないものなら#ifndefでいいじゃん
397
名前:
デフォルトの名無しさん
:05/03/18 01:26:33
>>395
ヘッダには宣言だけ書いて、ソースのどれか一箇所で実体を定義する。
398
名前:
デフォルトの名無しさん
:05/03/18 01:27:58
つーかWin32APIには関係ないな。
399
名前:
デフォルトの名無しさん
:05/03/18 02:24:36
1ミリビットも関係ないね。
400
名前:
デフォルトの名無しさん
:05/03/18 02:28:43
分割可能なbitってなんかやだなぁ。
401
名前:
デフォルトの名無しさん
:05/03/18 07:35:04
同じ拡張子に対して、エクスプローラなどで見たとき
任意のアイコンを表示させることはできるのでしょうか?
ご存知の方がいたら教えてください。
.exeとか.lnkではなく、自分で作ったファイルの拡張子
に対して行いたいです。
402
名前:
デフォルトの名無しさん
:05/03/18 07:52:59
タスクバーに出てくるアイコン(トレイアイコンではなく)を
動的に変更したいのですが、どうやったらいいのでしょう?
403
名前:
デフォルトの名無しさん
:05/03/18 08:30:38
>>401
レジストリを操作。
HKEY_CLASSES_ROOT\<HKEY_CLASSES_ROOT\<拡張子>の規定>\DefaultIconの規定
にアイコンのパスを書き込む。
404
名前:
デフォルトの名無しさん
:05/03/18 08:40:31
WM_SETICONメッセージかな
405
名前:
401
:05/03/18 10:58:04
>>403
すいません。説明がおかしかったです。
ある拡張子に対して、固定のイメージではなく、ファイルごとに
違うアイコンにしたいのです。
引き続きよろしくお願いします。
406
名前:
デフォルトの名無しさん
:05/03/18 13:25:06
>>405
無理なんじゃない?
407
名前:
デフォルトの名無しさん
:05/03/18 13:31:00
wisdomに8ビットの各ピクセルの情報は、
パレットの参照番号を表していると書いてありました
この8ビットの値を参照番号ではなくて、RGBの形に変換することは
できないでしょうか
408
名前:
デフォルトの名無しさん
:05/03/18 13:44:01
できるよ
409
名前:
407
:05/03/18 14:08:25
どうすればできるか教えてください
お願いします
410
名前:
デフォルトの名無しさん
:05/03/18 14:13:12
がんばればできるよ。
411
名前:
デフォルトの名無しさん
:05/03/18 14:33:53
春厨ばっかり・・・
>409
BITMAPINFO構造体のRGBQUAD bmiColors[ 可変長配列 ]を見る。
8ビット色なら256個のRGBQUADが並んでいる。
色の深度はBITMAPINFOHEADER構造体のbiBitCountメンバ。
412
名前:
デフォルトの名無しさん
:05/03/18 14:38:59
いっそのことシェルを自作すr
413
名前:
デフォルトの名無しさん
:05/03/18 14:49:43 ID:???
?
エロイな。
414
名前:
デフォルトの名無しさん
:05/03/18 14:59:34
むしろ必要な数だけ拡張子を作るのが
415
名前:
デフォルトの名無しさん
:05/03/18 15:03:52
>405
HKEY_CLASSES_ROOT\lnkfile\shellex\IconHandler
とか見るとGUID書いてるから、COMとかその辺で出来そうな気はする。
416
名前:
デフォルトの名無しさん
:05/03/18 15:20:49
>>407
411みたいな、てきとーな事ぬかす奴を信用しなければ、できるよ。
417
名前:
デフォルトの名無しさん
:05/03/18 15:24:46
ありました
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/iconhandlers.asp
418
名前:
デフォルトの名無しさん
:05/03/18 16:38:58
>401
各ファイルにアイコンイメージを持たせて
DefaultIcon = %1
…だった気がしないでもない。
違うかも…
419
名前:
418
:05/03/18 16:40:19
すまん、
>417
のリンク先読んでなかった…
そに書いてあったな…
420
名前:
デフォルトの名無しさん
:05/03/19 01:31:24
Windowsプログラミングを本格的にやりたいのなら、
AdvancedWindows第4版は買っておいたほうがいいよ。
421
名前:
デフォルトの名無しさん
:05/03/19 02:36:33
>>405
シェルエクステンションのアイコンハンドラ
422
名前:
デフォルトの名無しさん
:05/03/19 02:39:36
>>421
頼むからスレを最後まで読んでからレスしてくれ。
423
名前:
421
:05/03/19 03:08:02
すまん、
>417
のリンク先読んでなかった…
そに書いてあったな…
なんてね。orz
424
名前:
デフォルトの名無しさん
:05/03/19 03:27:38
>>405
IExtractIconを実装すればいいのでは?
425
名前:
デフォルトの名無しさん
:05/03/19 03:31:56
>>420
マルチスレッドプログラミング相談室 その3
http://pc5.2ch.net/test/read.cgi/tech/1098268137/488
488 名前:デフォルトの名無しさん[sage] 投稿日:05/03/18(金) 14:59:13
Windowsのマルチスレッドプログラミングを本格的にやりたいのなら、
AdvancedWindows第4版は買っておいたほうがいいよ。
426
名前:
デフォルトの名無しさん
:05/03/19 06:32:46
コレがホントのマルチスレッド。
427
名前:
デフォルトの名無しさん
:05/03/19 08:16:32
AdvancedWindowsは昔よんだんですが、
描画関係があんまり詳しくなかったと思うんですが、
それについては何を読めばいいですか?
428
名前:
デフォルトの名無しさん
:05/03/19 09:13:17
Petzoldの上だか下だかわすれた。
429
名前:
デフォルトの名無しさん
:05/03/19 11:24:07
https://bookweb.kinokuniya.co.jp/guest/cgi-bin/wshosea.cgi?W-NIPS=9970208349
http://www.amazon.co.jp/exec/obidos/ASIN/4756136001/249-5256933-3106709
同じ本だけど内容が結構違うので、できれば両方嫁。
430
名前:
デフォルトの名無しさん
:05/03/19 13:46:28
他のプロセスから送信されたウィンドウメッセージの処理を拒否する
方法があれば教えてください。よろしくお願いします。
私はずっと WM_APP〜 を使えばこの要求は自動的に満たされると思っていたのですが、
どうやら WM_APP〜 は他のプロセスからも普通に送信することができるみたいで。
送信元を調べようにも、MSG構造体には送信元の情報は入っていないようですし…。
431
名前:
デフォルトの名無しさん
:05/03/19 13:53:26
>>430
ありません。
自分で送信した分についてフラグでも持っておいて、
それが立ってなかったら処理しない様にするしかないのでは。
432
名前:
デフォルトの名無しさん
:05/03/19 14:00:58
WindowMessageって8割くらいはシステムから送られてないか?
んで、おそらく
>>430
が無視したいメッセージつうのは
マクロソフトなどから送られるキーダウンとかなんじゃないかなぁ…
433
名前:
デフォルトの名無しさん
:05/03/19 14:05:40
>>430
思考の切り替え。
>>431
が言うように他のプロセスを拒否するんじゃなくて自プロセスのみを処理する方向で考えてみては?
クリティカルセクションは他プロセスからしかアクセスできないことを利用するっててはどうよ。
クリティカルセクションのハンドルをlparamで渡すと。
>>432
WM_APP以降だけの話なら問題ない。
434
名前:
デフォルトの名無しさん
:05/03/19 14:06:21
>>433
誤植
他プロセスからしか→他プロセスから
435
名前:
>>429
:05/03/19 14:10:23
ありがとう。早速買ってみるよ。
436
名前:
430
:05/03/19 16:57:57
レスをくださった皆様、どうもありがとうございます。
>>431
もしかしたらと思って質問したのですが、システムではそのような手段は用意されていないんですね。
>>432
他のプロセスのバグ、もしくは悪意により送信されたメッセージを拒否したいと思ったのです。
でも、確かに、システム以外がシステムメッセージを送信する可能性だってあるんですよね…。
>>433
すべての自作メッセージにクリティカルセクションのハンドルを渡すってのも、ちょっと…(笑)
でも、そういう発想はありませんでした。今後の参考にさせていただきます。
437
名前:
デフォルトの名無しさん
:05/03/19 17:15:08
WPARAMにマジックナンバーでも埋めれば。
438
名前:
デフォルトの名無しさん
:05/03/19 17:24:58
発想を変えて、どんなメッセージが来ようと正常動作するような
つくりにすればいい。
439
名前:
デフォルトの名無しさん
:05/03/19 17:26:54
すいません
VisualStuido.net2003で、Tahomaフォントを選びたいのですが、
なぜか、Tahoma Boldしかえらべません。
これって仕様?
440
名前:
デフォルトの名無しさん
:05/03/19 17:29:51
>>436
RegisterWindowMessageならどうだ?
登録文字列をユニーク(GUIDとか)にすれば
他プロセスが意図的に同じ文字列を使わない限り同じメッセージは来ないと思うが。
441
名前:
デフォルトの名無しさん
:05/03/19 17:32:00
>>439
つうか、どこが?
442
名前:
430
:05/03/19 19:00:55
>>437
クリティカルセクションのハンドルを渡すのと同様、2つしかないパラメータのうちの
1つをそれで消費してしまうというのは、ちょっと厳しいものがありそうです。
>>438
パラメータの妥当性のチェックにかかるオーバーヘッドを気にして避けていたのですが、
それが最も現実的な対処法のような気がしてきました。
ただ、ポインタを必要としているときに面倒くさいことになりそうな気はしますが…。
>>440
それも、RegisterWindowMessage() を使わず、直接 0xC000〜 のメッセージが送信された
としたら、かち合う可能性がないとは言えないですよね。神経質過ぎるかもしれませんが…。
443
名前:
デフォルトの名無しさん
:05/03/19 19:14:44
パラメータの一つを構造体のポインタにしとけばいい。事実上パラメータ数無制限だ。
444
名前:
デフォルトの名無しさん
:05/03/19 19:18:10
それほどまでチェックを厳しくするなら、独自のメッセージ機構作った方が早いかもしれんね。
445
名前:
デフォルトの名無しさん
:05/03/19 23:48:09
アイコンの話題が出たので、ヘーと思って試していたら、ExtractAssociatedIcon()
を使うと、bmp ファイルも中身を見てくれるのを知り、便利と思ったのですが、
同じ 8 bit color bmp ファイルでも、その絵のアイコンを返してくれる場合と
くれないで、default の(絵筆の) .bmp のアイコンの場合があります。
これは、こんなものということでしょうか、何か制約条件があるのでしょうか。
446
名前:
デフォルトの名無しさん
:05/03/20 05:57:48
画像の大きさとか関係ないのかなあ
大きすぎるとか小さすぎるとか、4ビットとか2ビットのも出るのかな
あと、bmpフォーマットに従ってないとか
昔、写真屋で減色すると一部まちがったフォーマットで吐き出したことがあったような
447
名前:
デフォルトの名無しさん
:05/03/20 09:48:09
アイコンフォーマットに従ってないんだろうね
448
名前:
デフォルトの名無しさん
:05/03/20 09:53:43
独自のデスクトップでアプリを動かせば
他アプリからのメッセージは届かないかも、
と、制限事項の多いことを言ってみる。
449
名前:
デフォルトの名無しさん
:05/03/20 13:35:50
Win32のファイル操作APIを使うのと、
ANSI-C標準ライブラリのファイル操作関数を使うのとでは、なにがちがうの?
450
名前:
デフォルトの名無しさん
:05/03/20 13:39:22
出来上がるバイナリ的には、Cランタイム使うか使わないか。
使い分けによる、移植性などのメリット、デメリットは↓よろすく。
451
名前:
デフォルトの名無しさん
:05/03/20 13:42:06
おっと、スタティックリンクすれば、どっちもランタイム使わないか。あほすぎorz
452
名前:
デフォルトの名無しさん
:05/03/20 13:46:47
>>449
標準ライブラリは機能が抽象化されてる。
環境に依存するような細かい操作はできない。
Win32APIを使えばOSが提供するサービスをフルに使えるが移植性は落ちる。
453
名前:
449
:05/03/20 13:49:59
どーもです。
一応、CAnsiFileというクラスを作って、ANSI-CLibを用いたファイル操作クラスも作ろうと思います。
Win32APIを用いた自作クラスはすでに完成してます。
454
名前:
デフォルトの名無しさん
:05/03/20 14:06:14
>>453
意気込んでるところ失礼だが、そんなものは全くいらんよ。
例外処理の使い方を覚えたほうがいい。goto文的使い方。
455
名前:
449
:05/03/20 14:20:26
ええ、使わないクラスですが、勉強用に作るだけです。
このくらいなら数時間でできちゃうし。
例外処理も深く勉強したいです。
まだまだ発展途上です。
456
名前:
デフォルトの名無しさん
:05/03/20 14:22:38
>>453
fstreamで十分じゃないか?
必要ならこんな感じでWindowsのファイル操作のAPIを使うクラスをstreambufから継承して作ってみろ。
http://www.jah.ne.jp/~naoyuki/Writings/ExtIos.html
457
名前:
449
:05/03/20 14:26:53
>>456
ありがとうございmす。
今からそれを熟読してみたいと思います。
458
名前:
デフォルトの名無しさん
:05/03/20 15:59:31
別のプログラムに構造体(ポインタ)を渡す(送る)事は出来るのでしょうか。
出来るなら、やり方、またはヒントを教えてください。
CreateProcessで文字列、PostMessageで2つの整数の渡し方は
知っているのですが、構造体の渡し方が分かりません。
459
名前:
デフォルトの名無しさん
:05/03/20 16:09:46
struct foo data;
SendMessage(hwOthers,WM_APP,(WPARAM)0,(LPARAM)&data);
460
名前:
デフォルトの名無しさん
:05/03/20 16:12:52
>>459
キャストして渡せばいいんですか。
渡し先のプログラムにも同じ構造体があれば、正しく動作するんですね。
ありがとうございました。
461
名前:
デフォルトの名無しさん
:05/03/20 16:15:47
他のプログラムってのが別プロセスならポインタ送っても無駄。
462
名前:
デフォルトの名無しさん
:05/03/20 16:21:22
>>458
WM_COPYDATA
>>459
駄目。
463
名前:
デフォルトの名無しさん
:05/03/20 16:25:26
>>461
勉強不足ですが、ポインタ(アドレス)って、パソコンで共通のものだと思うから、
構造体の始めの位置と、そのサイズが分かれば、渡せると考えていたんですが。
464
名前:
デフォルトの名無しさん
:05/03/20 16:26:55
>>458
プロセス毎にアドレス空間が違うから他のプログラムにはそのまま渡せないよ。
WM_COPYDATAというメッセージで渡すのが安全。
COPYDATASTRUCT cds;
cds.dwData = 0; // 32bit値。識別用に使う
cds.cbData = sizeof(Struct); //データサイズ
cds.lpData = &Struct; // データアドレス
SendMessage(hTo, WM_COPYDATA, (WPARAM)hFrom, (LPARAM)&cds);
>>459
おっさんおっさん
それじゃダメだよ・・・
>>460
正しく動作しないよ。
他のプロセスから渡されたポインタは全て無効になるよ。
465
名前:
デフォルトの名無しさん
:05/03/20 16:27:17
えー
466
名前:
デフォルトの名無しさん
:05/03/20 16:31:42
>>462
>>464
WM_COPYDATA、すごく安全で使いやすそうです。
ありがとうございました。
467
名前:
デフォルトの名無しさん
:05/03/20 16:35:19
>>466
このスレ住人の言う事は嘘も混ざってるから気をつけてね。
もしプロセスとかの詳細が知りたかったらAdvancedWindows読んだほうがいい。
今回みたくWM_COPYDATAとかキーワードがわかったらMSDNで検索する手もある。
468
名前:
デフォルトの名無しさん
:05/03/20 16:53:51
>>467
ありがとうございます。
今までは、別のプログラムに何か渡すとか使い方はしなかったんですけど、
ファイル分割をすると便利なように、プログラムを機能毎に分割すると、
単体で起動して、小さい機能としても使えて便利な事が分かったんで、
質問をさせていただきました。その本を読んで勉強したいと思います。
469
名前:
デフォルトの名無しさん
:05/03/20 17:03:46
CreateWindowExでWS_CHILDと親ウィンドウのハンドルを設定して、
親ウィンドウに子ウィンドウを貼り付けたのですが、
キーボードから文字を入力しても子ウィンドウにWM_CHARが来ないようなのですが、どうすれば解決できるでしょうか。
子ウィンドウの上でマウスをクリックするとWM_LBUTTONDOWNは来ます。
470
名前:
デフォルトの名無しさん
:05/03/20 17:21:29
WM_CHARは親ウィンドウへ飛びます飛びます♪
471
名前:
469
:05/03/20 17:31:32
>>470
親ウィンドウのメッセージをフックしたりしないとだめなのかな・・・
独立したボタンコントロールみたいなの(ボタンコントロールのオーナードローという意味じゃなくて)を実現するdllを作ろうと思ってるので・・・
ところでWindowsのエディットコントロールとかはどうやってるの?
472
名前:
デフォルトの名無しさん
:05/03/20 17:45:51
>>471
自作のUI作ろうとしてるんですか?
何人くらいで作るつもりですか?
一人でつくるとなると、かなり大変ですよ。
あの有名タブブラウザSleipnirもUIを企業から購入してるんですから。
http://www.bcgsoft.com/bcgcontrolbar.htm
大変でしょうが、頑張ってください。
473
名前:
469
:05/03/20 17:53:32
>>472
そういうすごいもん作るんじゃないんだけど・・・
ただ絵が表示されててクリックしたら親ウィンドウにメッセージを送るだけのボタン。
なんだけど、Enterとか(A)とかの動作をさせるのにメッセージが取れなかっただけ。
誤解されそうな書き方スマソ。
474
名前:
デフォルトの名無しさん
:05/03/20 17:58:50
たぶん、SetFocusで解決
475
名前:
デフォルトの名無しさん
:05/03/20 18:35:45
ウィンドウの拡縮できる幅を制限したいのですが、
方法が思いつきません。どうすればいいでしょうか?
教えてください。
476
名前:
デフォルトの名無しさん
:05/03/20 18:42:38
>>475
WM_MINMAXINFO
477
名前:
デフォルトの名無しさん
:05/03/20 18:43:36
じゃねぇ、WM_GETMINMAXINFOだ。
478
名前:
デフォルトの名無しさん
:05/03/20 18:49:33
>>468
そういう分割の仕方は中途半端でよろしくない。
メッセージの仕様を厳格に規格化するならともかく、
単に個別のプログラムにしても再利用しにくいし、
メッセージのやり取りが増えるとリソース消費量も大きくなる。
普通にDLL使うのが無難。
DLLなら一般的には呼び出し元と同一のメモリ空間で動く。
479
名前:
デフォルトの名無しさん
:05/03/20 18:54:08
一般的には?
480
名前:
デフォルトの名無しさん
:05/03/20 19:03:28
>>479
そういう風に作れば DLL が独自にメモリ空間を確保することもできなくはない。
481
名前:
デフォルトの名無しさん
:05/03/20 19:08:15
>477
dクス
482
名前:
469
:05/03/20 19:11:08
>>474
うまくいきました。
でも別のソフトのウィンドウをアクティブにしてから戻すとフォーカスが解除される模様。
当然といえば当然だけど親ウィンドウがアクティブになったらSetFocusを呼び出すにはどうしたらいい?
483
名前:
デフォルトの名無しさん
:05/03/20 19:15:32
WM_ACTIVATE
484
名前:
445:bmpIcon
:05/03/20 19:26:10
>>446
,
>>447
レスをありがとうございます。
画像処理のスレで聞いて、自分で ImageList へ追加する処理をやっていて、
bmp から直接 icon を返してくれるなら、そうしようと思ったのですが、
ImageList へ渡すところで ExtractAssociatedIcon() を使っても HICON
は default のものしか返って来ませんね。(bmp を縮めて ImageList へ
今は Add しています)
別にテスト用にメニューを作って、bmp ファイルを指定して、この API を
呼び、返って来た HICON を表示させると、bmp の絵が出ます。で、このとき
も絵が出るときと default icon の場合があります。デジカメの 2240x1780
でも jpeg -> bmp -> xpadie による 8 bit color 化のは出ます。
レタッチしたほぼ同サイズの 4 bit color のは出ません。
485
名前:
469
:05/03/20 19:26:56
>>483
親に貼り付けた子ウィンドウには来ないみたい。
親で対処するしかないのか・・・
486
名前:
デフォルトの名無しさん
:05/03/20 19:28:18
>>485
親でSetFocusすればいいんじゃねえの?
487
名前:
469
:05/03/20 19:33:50
>>486
やっぱりそうしたほうがいいですか・・・
親もCで組みなおせばウィンドウメッセージ取れるし。
488
名前:
デフォルトの名無しさん
:05/03/20 19:41:36
バルーンファイト面白いな
初めて遊んだけど感動した。
489
名前:
デフォルトの名無しさん
:05/03/20 19:56:03
>>488
ファミコン?というかそれだったら板違い
490
名前:
デフォルトの名無しさん
:05/03/20 20:21:36
>>485
WM_KEYDOWN もこない?
491
名前:
469
:05/03/20 20:35:18
>>490
親がアクティブでもSerFocusしない限り
子にはWM_KEYDOWNは来ないみたい
492
名前:
デフォルトの名無しさん
:05/03/20 20:37:24
キーフォーカスの意味勉強しようね、ねっ?
493
名前:
デフォルトの名無しさん
:05/03/20 21:19:57
質問です。
OS は Windows XP で、コンパイラは mingw-jp の gcc です。
コマンドプロンプトのウインドウの現在の縦サイズ(行数)をプログラムから得るには
どうすればよろしいのでしょうか。
よろしくお願い致しますm(_ _)m
494
名前:
デフォルトの名無しさん
:05/03/20 21:32:43
>>493
自分でウィンドウ作ればいいじゃん。
495
名前:
458
:05/03/21 00:27:12
>>464
のやり方は、いわゆる値渡しなんでしょうか。
同じような感じで、HBITMAPを渡そうと思っているんですけど、
値渡しだと重くなるんでダメだなと思いまして。
496
名前:
デフォルトの名無しさん
:05/03/21 00:31:57
>>495
msdnみろ
497
名前:
デフォルトの名無しさん
:05/03/21 00:32:02
>>472
次はそれを使わないとか何とか。
498
名前:
493
:05/03/21 00:33:42
>>494
実は、コマンドプロンプトで (Linux 環境にある) less コマンドを作りたいのです。
自分でウインドウを作る以外に方法はないのでしょうか?
499
名前:
デフォルトの名無しさん
:05/03/21 00:36:39
>>495
ハンドルもそのままじゃ他プロセスに渡せない。
500
名前:
デフォルトの名無しさん
:05/03/21 00:44:30
LinuxでWin32API
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.