1 名前:デフォルトの名無しさん mailto:sage [03/10/09 00:41.net] とにかくdat落ち必死なこの話題をどうかひとつ。 関連スレ: 【GUIライブラリ】wxWindowsでのひょーん pc2.2ch.net/test/read.cgi/tech/1052186697/
355 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 08:59:35 .net] 何で X の事を X Windows って間違えちゃうんだろうね。Windows XP を Window XP と 書いたらおかしいべ。何と言うか、作者のやる気の無さが伝わって来て食指が動かない。
356 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 14:40:13 .net] 触手うねうね
357 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:30:17 .net] >>355 "windows"という語をウィンドウによるGUIの一般的な総称のように 認識しているのかも。または他の適切な呼称を思いつかずそれで代用している。 そういう概念に対してXは "window system" という呼称を当てている けど、それがいまひとつ認知されていないせいもあるかと。長いし。 概念があまりに一般的になると、説明的な呼称は廃れていくのかもね。 > The X Window System is a network transparent window system which runs > on a wide range of computing and graphics machines.
358 名前:デフォルトの名無しさん mailto:sage [2007/06/09(土) 17:10:45 .net] >>351 AEL つう GUI 記述言語を使うのは面白そうだね。JavaFX みたい。 プラットフォームは Mac OS X と W i n X P みたいだけど、X11 じゃ動かないの?
359 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 19:46:10 .net] 宣言的にユーザインターフェイスを定義出来るのは良いね。
360 名前:デフォルトの名無しさん [2007/07/25(水) 01:07:29 .net] あ げ
361 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 01:12:30 .net] FireFox の GUI toolkit を拝借すると良い感じになる様な気がする XUL じゃなく純粋に C++ のウィジェットライブラリとして
362 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 06:30:51 .net] >>361 C++や他の言語からもっと簡単に使えるようにして、 ウェブとデスクトップの境界を云々とはもう何年も前から言われてるけど、 mozillaにやる気がないっぽい。 もうだめぽ
363 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 09:59:58 .net] >>362 いや、そうじゃなくて、Firefox のソースツリーの中の mozilla/widget 以下を 自分のアプリにコピって使うということ。もちろんライセンスはそこだけ MPL で。
364 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 17:43:27 .net] >>362 最近GNOMEの連中がいろいろやってるな。スラドでは「ネットとデスクトップの融合なんて、 MSの二の舞になるつもりかよw」なんて煽られてたけど。 Clutterの話題なんてなかなか出てこないよね。
365 名前:デフォルトの名無しさん [2007/09/06(木) 10:09:02 .net] age
366 名前:デフォルトの名無しさん [2007/10/15(月) 21:28:19 .net] FoxToolkit-1.6のtests/glviewerをMacOSX(v10.4)でg++を使ってコンパイル (OpenGLはネイティブのものを使用)すると、エラーおよびワーニングなしで コンパイルできるんですけど、実行するとOpenGLの部分がうまく動作しません。 キャンバスを含む窓の中身が真っ白で何も描画されないのです。 二十回くらい実行すると一回くらいは巧くいくのですが、 どこが悪いのかよく解りません。なにか知ってる人はいませんか?
367 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 21:40:43 .net] >>366 ×ワーニング ○ウォーニング
368 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 02:41:14 .net] 俺も昔は、ウォーニングだよ^^、って毎回突っ込んでたけど、 cos をコウサインって書くのか? って言われてから黙ることにしてるw
369 名前:デフォルトの名無しさん [2007/10/16(火) 13:23:00 .net] それで本題にはノーコメントですか?
370 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 08:24:31 .net] 単にOpenGLの各種設定をちゃんと初期化してないだけでは。 忘れがちな設定についてはこの辺を見れ。 ttp://homepage2.nifty.com/tooshy/document/opengl.html
371 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 00:16:14 .net] Linux系のOSで、MFCのCListViewのようなコントロールが付いているGUIライブラリで、なるたけサイズが小さいのってあるんでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 07:09:21 .net] >>371 FLTK
373 名前:371 mailto:sage [2007/10/27(土) 13:00:29 .net] >>372 ありがとうございます。ちょっと試してみます。 ttp://seriss.com/people/erco/fltk/Fl_Table/screenshots.html
374 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 01:51:52 .net] まいなー、wxWidgetsだな
375 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:01:17 .net] fltkとfltk2の違いってなんですか? どちらも更新されているようなのですが、 やっぱり2を使った方がいいことありそうですか?
376 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:44:02 .net] 何をしたいかによるんじゃない。FLTK は小さいから、ソースコードを読んで 自分で手直ししながら使うものだと思う。
377 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:56:22 .net] スタティックリンクにしてもEXEのサイズ小さくて OSのルック&フィール(特にWindows)で ってある? wxWidgetsとかgtkmmとかはランタイムが巨大だしなー マルチプラットフォームとか気にせずにWTLとかを素直に使った方が良いのかな?
378 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:33:59 .net] 誰かWTLとwxWidgetsを統合化して、超軽量のwxWidgetsを作ってくれないかなぁ。 ライセンス的にどうなるのか分かんないけど。
379 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 12:44:38 .net] >>377 >マルチプラットフォームとか気にせずにWTLとかを素直に使った方が良いのかな? Yes, that's right!! But, 一番賢いのはサイズなんてもう気にしない事。
380 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:15:37 .net] >>377 Java + SWTでがんばってください。 というのは冗談にしても、実行ファイルのサイズが数十kb以内なんてのはプログラム開発者の グルーコード以外全部プラットフォームのAPIに丸投げしてなせる技だろうし、 少なくともマルチプラットフォームでってのはあきらめたほうがいいんじゃない?
381 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 13:30:05 .net] > マルチプラットフォームとか気にせずにWTLとかを素直に使った方が良いのかな? どうでもいいが、 一昔前って、 マルチプラットフォーム対応のUIライブラリで、ダサイのしかなかったよな・・・ なんで、Windowsに持ってくるとあんなにダサイんだ?というものしか。 今は、SWTなんかは、まだましだけど
382 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 19:35:46 .net] Tkがダサいと申したか
383 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:03:33 .net] Tkは普通じゃん?
384 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 16:42:33 .net] >>378 つ wxForms WTLは入ってないけど、ポトペタできてクロスコンパイルできるらしい。
385 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:57:14 .net] Turbo C++ Explorerじゃ無理か。
386 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:25:03 .net] 保守したほうがいい?
387 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:03:56 .net] 頼んだ
388 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:26:15 .net] お前らの連携のよさと言ったら!
389 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 12:44:24 .net] めも ttp://www.thefreecountry.com/sourcecode/gui.shtml
390 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 23:06:16 .net] どなたかOMGUIのサイトの行方を知りませんか? ttp://www.omgui.org/ (参考:ttp://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostGUI) 昨年夏頃までは見れてたように思うのに、今はドメイン売り出し中って…。
391 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 02:21:04 .net] >>390 ttp://cia.vc/stats/project/omgui
392 名前:390 mailto:sage [2008/01/22(火) 07:31:59 .net] >>391 ありがとうございます。プロジェクトそのものは消えてないようで助かりました。
393 名前:デフォルトの名無しさん [2008/02/04(月) 20:09:28 .net] ttp://dclib.sourceforge.net/api.html#gui_widgets
394 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 23:33:39 .net] こんな感じかあ ttp://www.geocities.jp/mocchi_2003/soft_readme/dlib_patch/dlib_patch_sample1.png
395 名前:デフォルトの名無しさん [2008/02/27(水) 23:42:49 .net] マイナーじゃないけど ttp://www.tcl.tk のtk見た目がだいぶましになったな tclに依存してなければいいのに
396 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 05:14:11 .net] スクリーンショットにたどり着きにくい ttp://wiki.tcl.tk/13636 これか
397 名前:デフォルトの名無しさん [2008/03/26(水) 21:10:53 .net] FOX-Toolkitって使っている方いらっしゃいますか?
398 名前:デフォルトの名無しさん [2008/03/27(木) 11:17:17 .net] 使ってますよ。OpenGLも使ってます。
399 名前:デフォルトの名無しさん [2008/03/27(木) 22:39:58 .net] このスレの住人なら知っていますね、あの糞開発ツールのことを ・自分のプログラムのバグなのかコンパイラのバグなのかわからない ・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している ・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている ・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる 糞だけど、政治的な理由で無理やり使わされているんですよね。 もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。 ・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。 ・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。 ・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。 バグレポートなどしてはいけません。改善要求などもってのほかです。 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。 ・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」 なんて話が出たら力強く机を叩き、会議室を出ましょう。 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。 糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
400 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:40:10 .net] trixul ttp://trixul.com/ 使ったことはないけど、本屋で少し立ち読みしたら結構面白そうだったので。
401 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:31:26 .net] >>400 書名キボンヌ
402 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:31:46 .net] XUL と違うんだね
403 名前:400 mailto:sage [2008/05/12(月) 01:56:52 .net] 書名は「Cross-Platform Development in C++」 ttp://www.amazon.co.jp/Cross-Platform-Development-C%2B%2B-Building-Applications/dp/032124642X/ref=sr_1_1?ie=UTF8&s=english-books&qid=1210522918&sr=1-1 XULと.NETのWindowsForms(XAML?)の概念を組み合わせてJavaScript(SpiderMonkey)でイベントハンドリングできるようなことが書いてあったような気がする。 でもSourceForge(ttp://sourceforge.net/projects/trixul/)の方を見た感じではまだまだ発展途上なのかな。
404 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 08:19:51 .net] Fox-ToolkitってIME制御ってできない? コピペで漢字入力はできるんだけどね。
405 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:20:00 .net] FoxToolkitの1.7の最新でIMEの制御もできて漢字入力もできるっぽい。
406 名前:本田 [2008/05/25(日) 06:20:45 .net] >>312 >C++/Tcl cpptcl.sourceforge.net/ >A C++ library for interoperability between C++ and Tcl >C++/Tk cpptk.sourceforge.net/ >A complete C++ interface to the Tk GUI toolkit
407 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 21:46:52 .net] GUIまったくわからないC++初心者が手を出しやすいGUIってありますか?
408 名前:デフォルトの名無しさん [2008/06/15(日) 00:03:43 .net] とにかく標準のGUIツールを使え マイナーなものは糞だからマイナーなんだ
409 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:22:48 .net] 標準=Qt/wxWidgets?
410 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 14:04:34 .net] >>409 そのOSの標準GUIからってことじゃない? いきなりクロスプラットフォームなんて欲張りだと思う
411 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 09:26:28 .net] MFCみたいなこれって何語っていうようなカスもあるお。
412 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 09:58:39 .net] Windowsで初心者なら.NET一択じゃね ウンコウンコ言われながらも、情報量が圧倒的過ぎる
413 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:06:46 .net] 情報量は圧倒だが、アウトプットのアプリは皆無。
414 名前:デフォルトの名無しさん [2008/06/16(月) 13:28:18 .net] >>413 俺もそれ不思議。 「delphiで作った有名ソフトって何があるの?」に対抗して 「.NETで作った有名ソフトって何がある?」スレないのかな?
415 名前:デフォルトの名無しさん [2008/06/16(月) 13:32:49 .net] .NET(C#,C♯,C#)で作られた有名なアプリって何? pc11.2ch.net/test/read.cgi/tech/1213590713/ 立てました
416 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:37:21 .net] 一番好きなプログラミング言語は? itpro.nikkeibp.co.jp/article/OPINION/20080528/304478/ プログラマに対象を絞って聞いた「一番好きなプログラミング言語」は,「C/C++」(24%)が最も多く, 「Visual Basic(VB)」(20%),「COBOL」(13%)と続いた(図2)。企業の基幹システムに浸透しつつあるJavaや, Webアプリケーション関連で使われることの多いスクリプト言語は,上位3位までに食い込むことができなかった。 C/C++ 24% VB6.0 20% COBOL 13% Java 9% Perl/PHP 7% C# 2% ← m9(^Д^)プギャー 一番好きな言語と対比する格好で「最もよく使っているプログラミング言語」も聞いてみたが, ここでは「C/C++」と「VB」の順位が逆転,「VB」が一位だった。
417 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:56:13 .net] C#はいい言語だと思うんだがなぁ… .NETじゃくネイティブコードコンパイラなければもっと使ってるのに… COBOL(13%)ってのはITPro(というか日経)の読者層を反映しすぎてる気がする
418 名前:デフォルトの名無しさん [2008/06/19(木) 23:55:15 .net] ここにも貼っておく ttp://torjo.com/egui/
419 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:45:15 .net] VB6.0にCOBOLが2〜3位って、時代に取り残されたおっさん確定だろ そんな奴らにC#の良さが分かるとは思えないw
420 名前:デフォルトの名無しさん [2008/08/10(日) 06:46:14 .net] >>419 4番目にJavaはともかく、5番目にPerl/PHPだもんなw
421 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 08:56:54 .net] GC.AddMemoryPressureが追加されるまでのC#は実用にならないゴミだったから仕方が無い
422 名前:デフォルトの名無しさん [2008/08/11(月) 04:31:35 .net] >>417 海外だとC#で書いたものが多くなってますよね 日本じゃまだ目新しすぎてついて行けないだけじゃないかなぁ C/C++が一番多いのは納得だけど、VB6が20%なのは厨房SE/PGが多い日本ならでわかと。
423 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 07:57:16 .net] Delphiがその他のどのくらいの割合なのかが気になる上に VB6.0て分けるぐらいならC/C++も分けるべきだったろに。
424 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 20:01:01 .net] >>422 厨房がVB6なんて知ってるわけねえだろ。
425 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 08:25:15 .net] >>424 はぁ?リアル池沼乙。
426 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 10:38:25 .net] >>422 の言葉が悪いな 厨房じゃなくてオッサンなだけなんだよ >>416 の調査のメインの対象が >回答者の年齢構成は,40才代が最も多くて39.4%,続いて30才代が34.8%, >50才以上が19.3%,20才代が6.2%だった という年齢層分布で察しる
427 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 00:05:28 .net] gtkmm
428 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:03:40 .net] だれか、使いやすいのを作ってくれ
429 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:59:18 .net] >>426 でも20代なんてカネ稼いでない層だろ。 仕事でも無いのにプログラムを書くような人間が多い時代でもないだろ。 今の20代が10年後に何を好むのかは気になるけどな。
430 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:25:07 .net] >>429 > でも20代なんてカネ稼いでない層だろ。 え? 現役で「プログラマ」をやってるのは圧倒的に20〜30代が多い、でしょ? 少なくとも日本では。 業界にもよるが、基本的にプログラマは下っ端の兵隊で、高級なデベロッパが ほとんど存在しないという文化だからね。
431 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 02:22:15 .net] >>430 20代。 いわゆるプログラマではほとんどカネが稼げない現実もあるだろうなぁ。 稼げないと好きになんてならないだろうに。
432 名前:デフォルトの名無しさん [2008/09/06(土) 02:59:58 .net] 脱しようと今起業しているがなかなかプログラムだと稼げないね 今年入った収入は1万8千円 受注仕事やるといいんだろうが、起業している意味ないしなあ
433 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 03:16:16 .net] 1万8千円って俺の月収より低いな
434 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:49:21 .net] 携帯ゲームあたりだろうか
435 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:25:16 .net] WTL
436 名前:デフォルトの名無しさん [2008/11/07(金) 23:19:54 .net] 自作してみたいんだが、どうすればいい? 環境は WindowsXP で VC2008EE
437 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:28:14 .net] 既存APIのラッパーを作ることから始めてはどうか
438 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:31:14 .net] 質問する段階なら、APIの薄いラップのみでいいんじゃない 物足りなくなったら、他のツールキットがどういうアーキテクチャになってるか 調べて取り入れるとか あと、オレオレライブラリの類は、演習と割り切って作らないと前に進むのが遅くなるよ 結局、既存のツールキットを使ったほうが便利な場面も多いし ってこのスレで言うことじゃないなw
439 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 01:33:29 .net] ボタンもリストも基本はWindow。その辺はググれば出てくる。 多くの人間が通る道として、それらをC++でラップしたコントロールを作る。 そしてメソッドで対応するのが面倒になり、GetHwnd()とか作ってごまかして終了する。 VC2008EEで生産性を追及してGUIを自作したいなら、個人的には ResEditとかフリーのリソース作成ツールが吐き出したソースを サポートする形にするのが良いかと。
440 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 17:29:15 .net] ふむ、アドバイスdクス まず、ラッパからやってみるよ。 できたら晒しにくるよ。
441 名前:デフォルトの名無しさん [2008/11/08(土) 22:08:18 .net] ラッパやってみたけど、うまくいかない。。orz アドバイスくれorz www.geocities.jp/hoge12make/ 置き場を↑にする
442 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 22:30:22 .net] メンバ関数名にまでWindowは付けなくていい。 あとメッセージループもメンバ関数にしたらどうだろう。 エラーの原因はポインタの扱いだから、 その辺復習しながら作るといいよ。
443 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:43:45 .net] 久しぶりにネット繋いだらVC++6.0に怒濤のごとく更新入った
444 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:53:16 .net] >>442 アドバイス有難う。 うまく表示できた。 さて、ウィンドウの表示はできた。 次は、 LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) の中でしているのをどうするかだ。。。 ここで、メッセージループをしているのをどうにかしたい。 じゃないと、ラッパを作る意味がないきがする。
445 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 00:13:01 .net] >>444 WindowインスタンスごとにVirtualAllocで確保した領域に ECXにthisを入れてメンバのWndProcに飛ぶコードを動的生成して それをRegisterClassExでコールバックとして渡しておく。 そうすればWindowsが直接メンバ関数を呼んでくれるようになる。 あとはそれをOnXXXとかのvirtualなハンドラに飛ばして、 必要に応じて外部に委譲させておけばおk。
446 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 01:47:00 .net] >>445 ググって、VirtualAllocこれが何かはわかった。 (呼び出し側プロセスの仮想アドレス空間に領域を確保) が、そのほかの部分がわからない。 もうちょっと噛み砕いてお願いしたい。
447 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:04:48 .net] とりあえず他でやって欲しい。
448 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:05:45 .net] マイナーGUI(ラッパか・・・)作ってるからいいんじゃね?
449 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:27:18 .net] >>446 君がどういうレベルかわからないと説明は難しい。 stdcallとcdeclは知っている? clのABIはthiscallでECXにthisが入るのは知っている?
450 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 02:41:11 .net] 私のレベルは、簡単なものならAPIをガリガリでモノを作れる。 MFCは使ったことなし。 >stdcallとcdeclは知っている? これは名前は知っている。 >clのABIはthiscallでECXにthisが入るのは知っている? これは、知らない。 cl・・・コンパイラ? ABI・・・アプリケーション・バイナリー・インターフェイス? thiscall ≒ cdecl? ECX・・・アセンブリは全く知らない つまり、アセンブリを知らないとできないってこと?orz
451 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:14:18 .net] >>450 アセンブリと言っても別に難しい知識は必要ない。 C言語が使えるんなら、レジスタとスタックの操作、 つまりmovとpushくらいは3分でわかるはず。 そして引数がスタックに積まれることが理解できれば良い。 そのスタックをどこで戻すかの違いがstdcallとcdecl。 インスタンスメソッドに対してはインスタンスが引数として扱われる。 それがcl(VC++のコンパイラ)ではECXで渡されるということ。 ちなみにgccだと第一引数としてスタックに積まれる。 こういう呼び出し規約のことをABIと呼ぶ。 なぜこんな知識が必要か? それはインスタンスメソッドに対してコールバックさせるため。 実際にATLではこの方法が使われている。 ハッシュで済ませるんなら必要ないんだけど、 外部に委譲させるときに悩むことになる。
452 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:23:19 .net] ふと疑問に思って昔作ったGUIクラスをひっぱりだして覗いてみたら SetWindowLong( hWnd, GWL_USERDATA, (int)this ); みたいな感じのを使ってた。ハンドルと32bitデータを関連付けられるらしい。 で、Windowプロシージャで GetWindowLong( hWnd, GWL_USERDATA ); を使って、ハンドルから対応クラスのポインタをひっぱってきて Window別のイベントを処理してた。なつかすぃ。
453 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 03:33:48 .net] >>452 その方法だとたとえばウィンドウ上でIMEの入力をしているときに 候補の上でホイール回したりしてIMEが作ったhWndが飛んでくると 不正なポインタに飛ばすことになって落ちるよ。 結局、登録されたhWndかどうかチェックするとハッシュになってしまう。
454 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 07:15:09 .net] >>445 ウィンドウインスタンスごとにRegisterClassExって何か違うと思う。 ATLでやってるのは、StartWindowProcってのを登録しといて、 StartWindowProcの中でサンクつくって、次回以降はそれが呼ばれるようにする、っていう方法だったと思う。 >>453 俺はIME触ったこと無いから実際はどうなのか知らないんだけど、 そんなことがあったらそれIMEのバグじゃねーの?
455 名前:デフォルトの名無しさん mailto:sage [2008/11/09(日) 09:30:36 .net] 同じくで、サンク作る方法は自分でも書いたことあったけども>>454 の意味はちまちまわからんとこが。 ATLのソースか、エディタのGreenPadがそんな方法使ってたから見てみてもいいかも。 わかりにくい上に機械語直接埋め込むから試しに自分でラッパ書いてみる、って段階ではどうかと思うが、早いし。 ウィンドウハンドルとthisを関連づける方法はGWL_USERDATAの他にSetProp/GetPropAPIもある。 ttp://hp.vector.co.jp/authors/VA022575/c/msgmap.html ttp://hilbert.elcom.nitech.ac.jp/~taki/program.html 一応この辺がその辺の話。