文字を四角に囲みたいのですが
こういうのってできるのでしょうか?
>文字を四角に囲みたいのですが
四角に囲むって
ああああ
あ あ
あ あ
ああああ
こういうことですか?
いや線で四角を作ってそのなかに文字を入れるってことです
MFC をお使いかどうかなど細かいことを書いてらっしゃらないので、MFCでお話します
文字を囲む最小の矩形とはいかないのですが、CDC::GetTextExtent() で CSize 型の
戻り値から巾、高さを知るのが簡単でしょう
すいません よくわからないのですが
なんか例などありませんか?
>よくわからないのですが
何がどう、どこが、わからないのでしょうか?
私には判らないということしか判らないとお返事のしようがありません
>よくわからないのですが
まず、
>発言される前に「使用上の注意」を必ずお読み下さい。
>なんか例などありませんか?
こんなのでいいですか?
(動作試験はおろかコンパイルできるかも調べてませんけど)
// 矩形を描く(線の色や、太さや、形状やについては知らない)
//
void CxxView::DrawBox(CDC *pDC, const CRect& r)
{
if (pDC) {
CPoint corner[5];
corner[0] =CPoint(r.left, r.top);
corner[1] =CPoint(r.left, r.bottom);
corner[2] =CPoint(r.right, r.bottom);
corner[3] =CPoint(r.right, r.top);
corner[4] =CPoint(r.left, r.top);
::Polyline(pDC ->m_hWnd, corner, 5);
}
}
// 文字列(色やどんなフォントかは知らないのでイタリックだと末尾に線が
// かかるかもしれない)を線で囲む
//
void CxxView::DrawBoxText(CDC *pDC, const CPoint& pos, const CString& mes)
{
if (pDC) {
CSize sz =pDC ->GetTextExtent(pos, mes);
pDC ->TextOut(pos, mes);
DrawBox(pDC, CRect(pos, sz));
}
}
ご所望の例です。
AfxMessageBox(
┌─┐\n
│あ│\n
└─┘ );
GetTextExtentを使った方法2番目。
void CMyView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CString str= あいうえお;
CSize size = pDC->GetTextExtent(str);
CRect rect(10, 20, 10 + size.cx, 20 + size.cy);
CRect rect2 = rect;
rect2.bottom++;
rect2.top--;
rect2.left--;
rect2.right++;
pDC->Rectangle(&rect2);
pDC->DrawText(str, &rect, DT_LEFT | DT_CENTER);
}
rect2.bottom++;
rect2.top--;
rect2.left--;
rect2.right++;
が無いとDrawTextで上書きされて消えてしまいます。
みなさまいろいろとありがとうございます。
ExtTextOutで表示するにはどのような例があるのでしょうか?
何かプログラミングしていて、つまづいたので質問しているのでしょうか。それともただ
なんとなく知識として訊いてみたいだけなのでしょうか。
前者ならもっと詳しくあなたの状況を説明してください。これだけの方々が回答してくだ
さっているのに、たった7行しかないあなたの書き込みからは、あなたが「Device
Contextというものを理解しているのかどうか」すら読みとることができません。
後者ならばそのようにちゃんと書いておくべきです。それによって回答者は一般的な話に
留めたり、もっと基本的な事から説明を始めたり、あるいは無視したりできるわけです。
>ExtTextOutで表示するにはどのような例があるのでしょうか?
MSDNをみると
>「CONTROLS: MFC ベースの ActiveX コントロール」
>CIRC3 サンプルは、以下のキーワードをカバーしています。
>AfxGetInstanceHandle; CDC::Ellipse; CDC::SelectObject;
>CDC::SelectStockObject; CDialog::DoModal; CString::AllocSysString;
>CString::GetLength; Ellipse;
>ExtTextOut;
>FillRect; GetClientRect; GetDC; GetVersion; MAKELONG; RGB; ReleaseDC;
>SelectObject; SetBkMode; SetTextAlign; SetTextColor
とありましたのでこれをサンプルにしてみてはどうでしょうか
とりあえず自力で書いたコードを抜粋して見せてくださいな。
その内容でどの程度のスキルを持っているのか推測できますし。
そのうえで、エラーが出るならエラーの位置とメッセージも併記して。
具体的な例を知りたいようですが、質問の内容が抽象的なので
いろんな応えになっちゃいます。他の書き込みも読んで、
「使用上の注意」も読んで、質問の仕方を工夫しましょう。
