カラーピッカーを作りたいです。私はこのコードを試しました
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
このGetPixel
関数は値を返します (実際には、ピクセルの RGB 値を指定するCOLORREF
単なる です)。DWORD
しかし、あなたのコードは の戻り値をGetPixel
文字列であるかのように扱い、 に渡しますlstrcpy
。それはうまくいきません。lstrcpy
メモリ内のどこかにある文字列へのポインタであるかのように解釈します。
関数は実際にはメモリアドレスを返さず、そのアドレスのメモリには有効なヌル終了文字列が実際には含まれていないためP»©
です。GetPixel
書式設定された数値を文字列として表示する場合は、printf
-style 関数を使用してこれを実現する必要があります。Win32 API バリアントは と呼ばれwsprintf
ます。