クラスによってクリップボードの動作が異なる話
アプリケーションによってクリップボードの動作が微妙に異なるなと思ったことありません?
ブリュンヒルデのクリップボード共有機能のバグ ( リモートデスクトップを開発してるエンジニアのブログ。 )
すんませーん!
原因は、長さゼロのテキストデータがクリップボードに入った場合に、想定外の動作になってしまう事でした。長さゼロのテキストデータをどーやってクリップボードが入れるのか未だに謎なんですが、いやいつの間にか入っていたんですけど。もし御存知の方がいらっしゃいましたら御連絡御待ちしておりやす。 |
実は、クリップボードの処理、コピーペーストされるオブジェクトのクラスによって動作が変わるんです。
#include "stdafx.h" #include <windows.h> int main(int argc, char* argv[]) |
試しに、こんなコード書いてみます
3パターンのクラスを確認したので表にしてみます
クラス名 | マルチバイトコピー | 0バイトコピー |
TEXT | 単純にコピー | 何もしない |
VC6のAFX | 単純にコピー | 選択行すべてをコピー |
RICHEDIT | 一旦 0バイトをクリップボードに入れてからコピー | 何もしない |
ええ、すごく変です・ω・
まぁ、参考になれば幸いですね
Comments