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