
とりあえず、作ってみた。
以前自費で買って放置していた(何とももったいないが。)Visual Studio 2010 Proで
VC++でOCXを作成し(OCXは面倒なのでMFC使用。)でC#からOCXを呼び出して
張り付けてある画面だ。
OCXの規定クラスはスタティックコントロールだ。
そこにSetWindowLogでキーボードフォーカスを受け入れるように工作し全て自前で
レンダリングしている。
理由は依然お話した通りだ。
ただ、これをやる場合面倒な事が多い。
OS標準のエディット機能を自動で実装する必要がある。
例えば、文字列入力や削除、行カット、行ペースト、取り消し処理(入力前に戻す)等
も全て自前という事になる。
オープンソースからコピーして使えばいいと思うが、私の場合基本的に避ける。
組み込んだ方が早いが、正直プロとして恥かしい。
まあ本当の理由は、他人のソースなんか汚くて読めるか!(これはプログラマーであれば
誰しも思うだろう。自分のスタイルにあってないものは毛嫌いする傾向だ。)という点だ。
まあ、なんとかルーラの表示まではできた。
行表示はまだだ。
文字入力機能もまだである。(表示しているのは、テスト的に描画しているだけで中身は
何もない張りぼてである。)
あぁ、文字列操作クラスを作る必要があるので一寸だけ面倒くさい。
以前作ったものが頭の中に入っているので、それをアウトプットするだけだが、
正直以前作ったものを焼き直すのはテンションがあがらない。
しかし、他の言語と違ってC言語は好き勝手にできるのはやはり最高である。
極めればこんなに便利な言語があるのに他の言語にいく理由が見当たらない。
・・・というのは冗談だ。
やはりC++よりC#の方が遥かに簡単にGUIを持つプログラムは作りやすい。
工数削減の為には、これ以外ないだろう。
開発規模にもよるがC++で書くとC#で書くことを1とすると、相対的に2倍以上に
なると思われる。
又、バグがでるととても厄介だ。
スタックを別の関数で破壊して全然別の所で謎のエラーとか発生すると素人や
初心者、ベテランであっても頭を悩ますものだ。
私も何度も冷や汗をかいた事がある。
まあ、直した時の達成感は他の言語の遥かにあるだろう。
今だとバッチ処理系や組み込み、ゲーム等でしか使用しなくなったけどね。