• 締切済み

Win32Apiで書式付リッチエディットの内容をコピーしたい。

Win32Api(MFCやCLRではない)で書式付リッチエディットの内容をコピーしたいのですがGetWindowText関数を使い、char型の変数に入れてやると文字色やフォントなどの情報がなくなってしまいます。 このような場合書式付の文字を取得する場合どうすればよろしいでしょうか。

みんなの回答

回答No.1

クリップボードを使用したコピーということでしたら、SendMessageでリッチエディットコントロールにWM_COPYを送ればよいのではないかと思います。

関連するQ&A

  • MFC:リッチエディットからUnicode文字列を受け取りたい

    MFCのダイアログベースでプロジェクトを作成 ↓ プロジェクトのプロパティで「マルチバイト文字セットを使用する」を「Unicode文字セットを使用する」に変更 ↓ エディットボックスとリッチエディット2.0を適当に配置 ↓ エディットボックスとリッチエディット2.0それぞれにコントロール変数を追加 ↓ InitInstance()内に AfxInitRichEdit2(); を追加 ↓ あとは適当なところでエディットボックスとリッチエディット2.0それぞれにGetWindowText関数を使って、記入内容を取得します。     すると、エディットボックスではUnicodeの文字を入れても文字化けしないのに対し、リッチエディット2.0では文字化けしてしまいます。 例えば“Å”の半角文字を(Unicode紹介サイトからコピペする等して)入力すると、エディットボックスではそのまま“Å”なのに、リッチエディット2.0では“A”になります。   ※入力している段階では“Å”と表示されています。GetWindowText関数で取得すると“A”になってしまいます。     リッチエディット2.0からUnicode文字を正常に受け取れる方法はありませんでしょうか。

  • Win32 API エディットボックス内文字列の色変更

    Win32 APIについて質問です。 (Microsoft Visual Studio .NET 2002、XP、API) エディットコントロールに表示されている文字列の 色(またはフォント)を変更したいと思っています。 エディットボックスに「0」という数字を入力し その後「更新ボタン」をクリックすると、「0」の 文字色が赤色(または赤太文字)へ変更される という具合です。 Win32 APIを始めて間もない者(Cも始めて間もないです) なので、かなり苦戦しております。 「SendMessage() 」みたいな関数を使用しエディット ボックスのハンドルへメッセージを送ることで 実現させるのかなぁ程度しか理解しておりません。 ご存じの方すいませんがよろしくお願いします。

  • ExcelVBAでAPIを使って外部ウインドウのエディットテキストを取得する方法

    ●やりたいこと ExcelVBAで、APIを実行し、外部ソフトのウィンドウに含まれている エディットテキストを取得して、セルに出力したい 使用する関数・宣言、できればコードを教えていただけませんでしょうか。 イメージはこちらをご参考いただけると幸いです。 ​http://situmon-img.blogspot.com/2008/08/1.html​ 変数hwindowに親ウィンドウのハンドルが取得されています。 エディットボックスのハンドル、IDは分かりません。 エディットボックスのハンドルを取得し、 分かっているクラス・ハンドルの文字列を取得 といった流れになるのではと思っております。 変数にさえ文字列が取得できれば、 当然ですが、Range("B2")=変数 で大丈夫です。 変数は、ひとつを使いまわしで構いません。 変数をエディットテキストの数だけ用意しても構いません。

  • VC++2010 MFC エディットボックスの質問

    VC++2010 MFC エディットボックスの質問なんですが、 バリュー型変数を使わないでどうやったら配列(char型8byte(unsigned char[8]))の中身すべてをエディットボックスにいれて表示することができますか?よろしくお願いします。配列の中身は文字もあったりします

  • C言語win32api、エディットボックスから文字列を取得しメッセージ

    C言語win32api、エディットボックスから文字列を取得しメッセージボックスへ出力 質問1 エディットボックスからフォーカスが外れると その中の文字列を取得しメッセージボックスに出力したいのですが 思った通りに出力されません。 フォーカスが外れるとメッセージボックス自体は出てくるのですが エディットボックスに入力した文字列が出力されません。 いろいろ試したんですが文字化けしたり文字列自体が表示されなかったします。 取得と出力の方法を教えていただけませんでしょうか。 kwt[3]=CreateWindowEx(WS_EX_CLIENTEDGE,TEXT("EDIT"), NULL , WS_CHILD | WS_VISIBLE | WS_BORDER |ES_LEFT | ES_AUTOHSCROLL , 90 , 85 , 110 , 25 , hAdd ,(HMENU)EDIT_ID02 ,((LPCREATESTRUCT)(lp))->hInstance , NULL); LPSTR testtex=NULL; LRESULT CALLBACK SubProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp) { LPSTR testtex=NULL; switch(msg) { case WM_COMMAND: switch(LOWORD(wp)) { case EDIT_ID02: if(HIWORD(wp)==EN_KILLFOCUS) //フォーカスが外れたら次の処理をする。 { strText = (LPSTR)malloc(GetWindowTextLength(hwnd) + 2); //文字数分のメモリを確保 if(testtex) //testtexがゼロでなければ次の処理をする { GetWindowText(hwnd , testtex , GetWindowTextLength(hwnd) + 2); //エディットのテキストを取得。問題個所 MessageBox(hwnd , testtex , TEXT("") , MB_OK); //取得したテキストをメッセージボックスで出力。問題個所 } free(strText); //メモリを解放 return 0; } return 0; } return 0; } return (CallWindowProc(SubP1, hWnd, msg, wp, lp)); } 質問2 エディットボックスに0~9と「.」(ドット)のみを入力できるようにしたいのですが ウインドウスタイルでES_NUMBERを指定すると「.」が入力できなくなってしまいます。 どのように回避したらいいのでしょうか。 質問3 win32apiとは直接関係ありませんが、たとえば計算結果が1000億を超えるような場合 int型とかの変数ではとても入りきれません。 こういった場合どのようにするのでしょう。

  • エディットボックスのフォントを変えたい

    MFCで作ったダイアログ上の他のコントロールはいじらずに、 エディットボックスのフォントだけを大きく変えたいのですが、 行間が変わらない為か、文字の下のほうが切れてしまいます。 色々試してみていますが、どうしても出来ません。 元のダイアログのフォントは12ptです。 OnInitDialog関数内で、 CFont m_font;(メンバ変数)に以下を設定し、 m_font.CreateFont( 20, 0, 0, 0, FW_SEMIBOLD, FALSE, FALSE, 0, SHIFTJIS_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "MS P ゴシック" ); OnCtlColor関数内で、該当エディットボックスの場合だけ pDC->SelectObject( &m_font ); しています。 CreateFontのパラメータが間違っているのでしょうか? それとも、これら関数を呼び出す場所が間違っているのでしょうか? ご回答お待ちしております。

  • GetWindowTextの使い方

    PocketPC2003を使ってアプリを使っているのですが エディットボックスに入力された文字列を 取得する方法が分からず困っております。 エディットボックスに対して、classwizardで CEdit型のm_zip変数を作成しました。 そこで、 CString buf; m_zip.GetWindowText(cs_buf); という所までは分かったのですが、これを char型の文字列にコピーしたいのですがどうすれば よいのでしょうか?。 開発環境は、 eMbedded Visual C++ 4.0です。

  • APIについて

    アプリケーションソフトがが環境変数の値を取得する場合、環境変数を取得するAPI関数が「あそこのレジストリに要求された変数があるから取りに行いこう」という感じでとりに行って、アプリケーションに返してるんでしょうか?

  • Win32APIで困っています

    Win32APIでWM_PAINTメッセージを使って変数Bufの中の文字列を表示した場合に 表示した後になんらかのイベントを発生させて表示されている文字列に違う文字列を代入しても、画面に変化がありません。 画面を再描画する方法を教えてください よろしくお願いします。

  • VC++でwin32APIを作っているのですが・・・

    こんにちは。私はwin32APIを勉強しているc言語初心者です。 私はMicrosoft Visual C++ 2008を使ってc言語のwin32APIをプログラミングしているのですが、独学でやっているので物凄く邪道なwin32APIプログラミングをしているような気がするのです。 ・c言語のプログラムを書いて、C++のwin32APIプロジェクトとしてビルドする。 ・ヘッダーファイルにwin32API関数がなかったので、自分のwindowOSからwin32API関数を探し出してVC++2008のなかのincludeフォルダ内にコピー&ペーストして使えるようにした。 これって邪道ですか?一応何の問題もなくwin32APIプログラムが作れるのですが、もっと正規なやり方があるでしょうか。回答よろしくお願いします。

専門家に質問してみよう