変化を求める人

エディットコントロールにクリップボードの内容を出力してみた

      2015/07/12

今回はテキスト入力を処理する「エディットコントロール」を作ってみた。
前回取得したクリップボードの内容を表示してみる。
今回も文字に関する部分でメモをしておきたいところがあったので、別記事に分けることにする。

結構致命的なバグがあったのでソースの一部と下記に追記(15/7/16)

使用する関数

CreateWindow()、エディットコントロールを作る
SetWindowText()、エディットコントロールに文字をセットする

とりあえず、コード

クリップボードの内容が変更されると、その中身がエディットコントロールに表示される。
メモリ確保の仕方や解放のタイミングなど、いまいち不安だけど一応目的の動作は出来た。

要点

CreateWindow()

lpClassNameに「EDIT」(既定のウィンドウクラス名)を指定する。
hInstanceは ((LPCREATESTRUCT)(lp))->hInstance で取得できる。
あとはスタイルとかの細々した設定。

SetWindowText()

文字列を設定したいウィンドウハンドルと設定したい文字列を指定する。
今回は edit を渡したのでエディットコントロールに文字列が表示されたが、親の hwnd を渡すとウィンドウのタイトル部分に表示される。

editcontrol

実行時の画像を貼ってみたけど、これじゃよくわからないかな~

追記

変更前だとCloseClipboardの位置が悪いため、テキスト以外(画像など)をコピーした際にクリップボードが閉じられない。そのため、ほかのアプリなどからクリップボードにアクセスできなくなる。
結果、自分のアプリに限らず「コピペ自体効かなくなる」という、非常に嫌な感じの状態になった。

 - C/C++ , , ,

スポンサーリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

「>」、「<」を含む文字列をコピーしたら自動でエスケープ文字にするアプリを作った

以前、文字列置換の記事でちょこっと書いたものを実際に作ってみた。クリップボードの …

C言語(win32api)で文字列の置換。改善の余地あり

コピー → 置換 → ペースト。 ある文字列をコピーした際、既定した文字列で自動 …

Unicode?Ansi?Windowsでの文字列の表現が紛らわしい

エディットコントロールを作る際に「文字列リテラル」について考えたこと。 定義した …

クリップボードの内容を取得しよう→_crtisvalidheappointerエラーで落ちる

前回の記事でClipboardを取得する際に発生したエラーについて こちらのペー …

クリップボードの内容を取得してみた

何を書けばいいのかわからなくなってきた。 行動指針が見つからない。今、自分は何を …