RichTextBoxで二重下線を引く方法は

[戻る]
初心者 2014/02/15(土) 02:06:17
環境は VC++2008EE,windows-Vista,-7です。

本当に簡単なことかもわかりませんが、RichTextBoxで二重下線を引く方法を
教えてください。下線(アンダーライン)はFontStyle::Underlineでわかるのですが
Excelの「セルの書式設定→フォント」のダイアログの「下線(U)」に出てくる4種類(な
しを入れると5種類)の引き方がわかりません。

よろしくお願いいたします。

初心者 2014/02/15(土) 02:26:57
(追伸)
ちなみに、それぞれのコードは分かっています

(なし)・・・ -4142(VBA:xlUnderlineStyleNone)
(下線)・・・     2(VBA:xlUnderlineStyleSingle)
(二重下線)・ -4119(VBA:xlUnderlineStyleDouble)
(下線:会計)     4(VBA:xlUnderlineStyleSingleAccounting)
(二重下線:会計)  5(VBA:xlUnderlineStyleDoubleAccounting)
です。

「XlUnderlineStyle」というEnum(列挙型)でまとめられているようです。
値をみますと、FontStyleで使う「or」での連結ができません。(2,4があるので
ItalicとUnderlineにかぶるので・・・)

よろしくお願いいたします。

仲澤@失業者 2014/02/18(火) 15:59:15
言語はなんでしょう。

Win32SDKなら
http://msdn.microsoft.com/en-us/library/windows/desktop/bb787883(v=vs.85).aspx
の説明にあるように EM_SETCHARFORMAT を送付することで
できるようですけど。

初心者 2014/02/18(火) 17:21:32
仲澤@失業者さん、ありがとうございます。

じつは、Win32(Windows SDK)ではなく、C++/CLI (.NET Framework)です。
情報不足で貴重な時間を申し訳ありませんでした。

RichEditは私も見つけ出したのですが・・・・。
まだ試していないので、試してみます。

蒼の洞窟 2014/02/18(火) 18:04:35
C++/CLIだとC#の記述を参照したほうがいいですね。

http://msdn.microsoft.com/ja-jp/library/system.drawing.fontstyle%28v=vs.110%29.aspx
これみると2重線ってないね・・・

# というか、C++/CLIって需要があるんかいな。
# (UIはC#でコア部分はC++/CLIってことはあるかもしれないけど。)

蒼の洞窟 2014/02/19(水) 09:48:48
とりあえず、RichTextBoxでは

二重下線の表示は出来ない

ようです。

RTFで二重下線を指定すればリッチテキスト形式では二重下線になるものの
表示は出来ないと。(Wordとからなちゃんと二重下線になる)

Insert doubleunderline in a richtextbox in c#
http://social.msdn.microsoft.com/Forums/vstudio/en-US/9ccc3957-212a-4da5-ace2-c241a5a15309/insert-doubleunderline-in-a-richtextbox-in-c?forum=csharpgeneral


一応あっているか不安ですが、SendMessageでも二重下線を設定できるようです。
(表示はされませんけど。RTFで保存してWordで開くと二重下線になっている)

#include <windows.h>
#include <richedit.h> 
#pragma comment(lib, "User32.lib")

・
・
・

// 選択した部分に二重下線を引く
HWND hRichEdit = (HWND)richTextBox1->Handle.ToPointer();
CHARFORMAT2 cfm;
ZeroMemory(&cfm, sizeof(cfm));
cfm.cbSize = sizeof(cfm);
cfm.dwMask = CFM_UNDERLINETYPE;
cfm.bUnderlineType = CFU_UNDERLINEDOUBLE;
::SendMessage(hRichEdit, EM_SETCHARFORMAT, SCF_SELECTION | SCF_WORD, (LPARAM)&cfm);

初心者 2014/02/19(水) 11:57:38
蒼の洞窟さん、ご親切に本当にありがとうございます。

ちょっと、初めの質問とは離れますが、
「名前」のとうり本当の初心者ですのでわからなかったのですが
【というか、C++/CLIって需要があるんかいな】
ってことは一般的というか、商業的にはSDKが標準なんですか?
やっぱ、単独で実行するとき特定の.dllがないと実行できないのが
大きな原因なんでしょうか。
C++/CLIってフォーム作成のプログラムが不要とか非常に
初心者には便利なのですが・・・

いま作っているのは社内用なので、ある程度の「条件・・・dll組み込み」
は勘弁してもらおうかと思っていたのですが・・・
社外的には、SDKがいいのでしょうか。
御助言くだされば幸いです。

また、まず、お礼をと思い教えていただいた項目は実施していないので
これから、確認してみます。

わからないとこがありましたら、教えてください。
毎回、親切にありがとうございます。(礼)

蒼の洞窟 2014/02/19(水) 13:11:54
RichEdit20W(RichEdit20A)でも二重下線試したけど表示されなかった。

こことか参考にしてみては。
http://social.msdn.microsoft.com/Forums/ja-JP/6f9f3a62-9c18-4262-a7d6-9035556bd138/vs2012vcwindows?forum=vcgeneralja


個人的には、C++/CLIは若干使いにくいところもあるし、foreachとか使えないケースもあ
るので、規定の資産(すでにあるDLLとか)の橋渡しのためだけに使ったほうがいいのかとは
思ってます。
# C++/CLIのスコープ変数でusingと同じに扱えるのは便利ですけどね。

初心者 2014/02/22(土) 13:53:52
蒼の洞窟さん、仲澤@失業者さん、色々ありがとうございます。

教えていただいたこと、試してみましたが、やっぱり無理でした。
先にも言ったように「社内用」のソフトなので、時間も迫っていますし
【二重線】はあきらめようかと・・(くやしい)

でもSDkでためしても、背景(Backgraund)などはできたのですが二重線は
できませんでした。(ソフトミスでしょうか?)

ところでまったく違った話ですが、蒼の洞窟さん、仲澤@失業者とも、2000年位にも
ここで活躍されてた方ではないでしょうか?
そのころ一度この「ラウンジ」を見た時の両方の名前の記憶があります。
これからもよろしくお願いいたします。

ITO 2014/03/04(火) 20:24:26
> じつは、Win32(Windows SDK)ではなく、C++/CLI (.NET Framework)です。

.NET Frameworkで出来るのなら、C#使ってみたらどうでしょうか。
記述で違和感あるかもですが、仕様は同じだと思います。

初心者 2014/03/06(木) 23:33:25
ITOさん、ありがとうございます。

実は、極端に "VBで・・・" とまで考えましたが、
周りの環境がC++/CLI だらけで、このソフトだけ「浮いたもの・・」
になりかねない、あくまで社内用という理由で(期日もですが)、
非常に悔しいのですがあきらめました。

わざわざのご進言ありがとうございます。
また、わからないことがありましたら、この「ラウンジ」にて
教えてもらおうと思っていますので、その時にはぜひ
アドバイスをお願いいたします。(御礼!)

古いスレッドには追加発言できません。