0

カラーピッカーを作りたいです。私はこのコードを試しました

invoke GetDC,NULL
mov esi,eax
invoke GetPixel,esi,400,400
invoke lstrcpy,string ,eax
invoke SetDlgItemText,hWin,textbox1,string
invoke ReleaseDC,NULL,esi

しかし、それは戻ってきますP»©。次のようなものを返すにはどうすればよいですか00F0F0F0h

4

2 に答える 2

2

このGetPixel関数は値を返します (実際には、ピクセルの RGB 値を指定するCOLORREF単なる です)。DWORD

しかし、あなたのコードは の戻り値をGetPixel文字列であるかのように扱い、 に渡しますlstrcpy。それはうまくいきません。lstrcpyメモリ内のどこかにある文字列へのポインタであるかのように解釈します。

関数は実際にはメモリアドレスを返さず、そのアドレスのメモリには有効なヌル終了文字列が実際には含まれていないためP»©です。GetPixel

書式設定された数値を文字列として表示する場合は、printf-style 関数を使用してこれを実現する必要があります。Win32 API バリアントは と呼ばれwsprintfます。

于 2013-05-08T19:20:04.530 に答える