はじめまして。
koga2020と申します。
現在の環境
VisualC++ 2008 Express Edition
VisualC++用DXライブラリ(Ver2.24e --IME拡張版--)
MS-DOS時代の少し特殊な印刷向きのエディタをwindows上に作ろうと思い、DXライブラリと拡張されたIMEINPUTDATA等で動かそうとしています。
現在はカーソルを表示・移動することができ、DrawOriginalInputStringからStringに文字が存在したときにエディタの内部バッファに書き込む > 画面に描画 > 入力待ち という動作を作っています。
1.文字・フォントサイズについて
DrawStringで固定ピッチにするにはどのようにしたらよいでしょうか。
具体的には、フォントサイズを16に指定したときに半角文字は横幅8ドットなのに対し、全角文字は横幅17ドットで描画されているようです。(カーソルと文字の位置が右に行く程ズレていきました)
フォント周りで、RPGのキャラクタ移動のように文字同士の隙間や全角は半角の倍として扱えるようにするには、どのようにしたらよいでしょうか。
具体的には次のような設定を明示して指定したいのです。
半角:幅8ドット、高さ:16ドット 全角:幅16ドット、高さ:16ドット 行間:なし(隣接) 文字間:なし(隣接)
尚、1文字ずつDrawStringすると、かなり動作が遅くなるようです。
他には、後々以下のような機能を入れることを目標にしております。
A.windowsのメモ帳などでカーソルキーを押しっぱなしにしたときの、最初の1文字分だけ移動したら1秒近く止まり、その後連続して移動するというキー入力を再現したい。(溜めうちのロジックを全キーに適応することで行けそう)
B.罫線をカーソルの移動にしたがって入れる。
半角罫線にも対応する為、半角外字表示にもBMP表示を織り交ぜる方法か描画か何かで対応したい。
C.命令段落(複数行の場合もある)の概念を入れる。
【行挿入】 ファイル●●●●● 拡張子●●●
挿入行●●●行目 行数●●●行
のように、印刷時に挟み込む命令を入れることができる。
あと、最下行にDOSのFEP風に、横に候補一覧が表示されるように改造したりしております。
こういう細かい動作は標準のwindowsでは無理っぽいと思ったときに、カーソルの移動とその下に罫線が現れるというのはRPGっぽくないか?という発想のもと、DXライブラリで勉強させて頂いています。
ゲーム本来の機能とは違う方向の話になってしまっていますが、ご教授頂けると助かります。