プロが教える店舗&オフィスのセキュリティ対策術

LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){

 HDC hDC;
 PAINTSTRUCT ps;
 static void *v = "abcdefg";

 switch(msg){
 case WM_PAINT:
  hDC = GetDC(hWnd);
  TextOut(hDC, 0, 0, (char*)v, strlen((char *)v));
  ReleaseDC(hWnd, hDC);
  ValidateRect(hWnd, NULL);
 break;


これで abcdefg が表示されるけど、defg を表示される方法が
分かりません。
abcdefg の文字列の長さは不明です。
char buf[1000];
のように大きく確保すればいいんだけど、そういうのをせず、
動的にやろうと考えています。

  TextOut(hDC, 0, 0, &(((char*)v)+3), strlen((char *)v)-3);

だと、メモリ上に配置されなければならない というエラーになります。
よい方法があったら教えてください。

A 回答 (1件)

>TextOut(hDC, 0, 0, &(((char*)v)+3), strlen((char *)v)-3);


TextOut(hDC, 0, 0, ((char*)v)+3, strlen((char *)v)-3);
で良いです。((char*)v)+3の値自体がアドレスなので、
さらに&はつけなくて良いです。
    • good
    • 0
この回答へのお礼

ありがとうございます。できました。

お礼日時:2002/03/27 21:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!