質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

3038閲覧

RichEditの縦書き機能が有効にならない

Angkorwat

総合スコア31

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2016/09/14 09:43

###前提・実現したいこと

お世話になります。

MFCダイアログベースでRich Edit 2.0 Controlを用い縦書きエディットボックスを実装しようと思っています。

CRichEditCtrlクラスの関数SetOptionsの第二引数でECO_VERTICALを指定するとコントロールが縦書きになるそうなのですが、横書きのままです。


https://msdn.microsoft.com/ja-jp/library/20z1432s.aspx

また、AfxInitRichEdit2()が初期化処理に必要だそうですがあってもなくても変化がありませんでした。他のオプションやプロパティでの設定は反映されているのでコントロール自体は正しく動いているようです。

様々なサイトを検索しても具体的な解決方法が見当たらないため質問させていただきました。
また、他の縦書き入力の実現方法を教えていただけるとありがたいです。

宜しくお願いします。

###該当のソースコード

void CTestProgramView::OnInitialUpdate() { int rep = AfxInitRichEdit2(); m_rich.SetOptions(ECOOP_OR, ECO_VERTICAL); }

###補足情報(言語/FW/ツール等のバージョンなど)

Visual Studio 2013

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ECO_VERTICALで色々とググってみたところ、どうやらECO_VERTICALはWindows2000以降では機能が削除されたみたいですよ。
今のOSでは縦書きにならない、という情報が色々と出てきました。

投稿2016/09/15 07:56

drednote

総合スコア336

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Angkorwat

2016/09/16 02:46

ありがとうございます。私も色々調べてみましたが、RichEditのバージョン3.5では縦書きになっているそうですが、MFCではサポートしているのが3.0までみたいです。他に良い手段があればいいのですが、なかなか難しそうですね。
drednote

2016/09/16 05:23

すみません、手元のVisualStudioでMFCが上手く動いてないので確認出来ないのですが、 ``` C:\Program Files\Microsoft Visual Studio 14.0\VC\atlmfc\src\mfc\winctrl4.cpp ``` にCRichEditCtrlクラスの定義があり、その中で ``` CWnd* pWnd = this; #ifdef _UNICODE return pWnd->Create(MSFTEDIT_CLASS, NULL, dwStyle, rect, #else return pWnd->Create(RICHEDIT_CLASS, NULL, dwStyle, rect, #endif ``` となっている箇所があります。 MSFTEDIT_CLASSというのはRitchedit.h内で ``` #define MSFTEDIT_CLASS L"RICHEDIT50W" ``` と定義されており、RICHEDIT50WというのはRitcheditのバージョン4.2らしいです。 ということで、UnicodeでMFCを使うと上手く行ったりしないでしょうか?
drednote

2016/09/16 05:24

あ、コメントだとマークダウン出来ないのか
Angkorwat

2016/09/16 08:34

ありがとうございます。試してみます。
Angkorwat

2016/09/20 01:30

試してみたところ、日本語入力が縦書きになりました。Unicodeで開発していないため残念ながら実現は見送ることになりそうですが、Richeditで縦書きが可能ということがわかっただけでも収穫でした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問