
あるHPのコードを参考に文字をクリップボードへ
コピーするコードを書いてみましたが、エラーが
できます。なにかおかしいかご指摘いただけないでしょうか?
HGLOBAL hText;
wchar_t *pText;
hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, 4);
pText = (wchar_t*)GlobalLock(hText);
lstrcpy(pText, L"abc");
GlobalUnlock(hText);
OpenClipboard(NULL);
EmptyClipboard();
SetClipboardData(CF_TEXT, hText);//ここでヒープが壊れていると起こられます。
CloseClipboard();
もっとも単純なテストコードです。
いろいろとチェックを手抜きしてますが、とりあえずOKとします。
No.1ベストアンサー
- 回答日時:
GlobalAllocで割り当てサイズとして「4」を指定していますが、これは「4バイト」を意味します。
ところが、lstrcpyでコピーしているL"abc"は4文字=8バイトを占有するので、確保したメモリの量を超えてメモリを書き換え(=破壊)してしまっています。
これが原因ではないでしょうか。
ご回答ありがとうございます。
いまちょうど自己解決したところです。
原因はおっしゃる通りです。
ただしくは
hText = GlobalAlloc(GMEM_DDESHARE | GMEM_MOVEABLE, 4 * sizeof(wchar_t));
です。
で、返信がない場合どうやって質問を締めようかと悩んでいたところです^^;
#いつになったらこの文字操作に慣れてくるんだろう。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで2byte文字を含むセル...
-
Console.writeLineで文字化け
-
2byte文字の判定
-
【VB2005】テキストボックス内...
-
UTF-8で5~6バイトになる文字コ...
-
ピクセル,dpiから容量(バイト...
-
1KBが1024byteな理由
-
IEレジストリのSavedLegacySe...
-
コードに対する疑問(eucコード...
-
機種依存文字をチェックしたい。
-
vb6 バイトオーダエンディアン...
-
10Mバイトて文字数に すると何...
-
C/C++の型について
-
COBOLのCOMP形式について
-
より高速な画像の表示法
-
64bit対応
-
stable diffusionのエラー
-
GETメソッドとPOSTメソ...
-
VBA 最終行のひとつしたの行に...
-
VB6.0でMSChartをタイマーを使...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UTF-8で5~6バイトになる文字コ...
-
10Mバイトて文字数に すると何...
-
char str[256]の256の意味は?
-
COBOLのCOMP形式について
-
バイト列とバイナリ列の違いが...
-
エクセルシート名の制限を変更...
-
ピクセル,dpiから容量(バイト...
-
ビットスワップとバイトスワッ...
-
テキストBOXの入力制限について
-
機種依存文字をチェックしたい。
-
「1TB」のHDDに日本語は何字入...
-
C++ Builderで文字列をバイトに...
-
全角半角を調べるライブラリ関...
-
SQLで1バイト、2バイト混在...
-
VB6とSQL Serverの桁の扱い方に...
-
jis x 0208 について
-
VBAでShift-JISのURLエンコード
-
この関数はどのプログラミング...
-
COBOL PICTUREで X,S,Vの意味
-
半角、全角の判別方法
おすすめ情報