TCHAR *buf;

 TCHAR *p;

int i,tlen;

case WM_CREATE:
  // 50M 분량의 버퍼를 준비한다.
  buf=(TCHAR *)calloc(50,MEGA);
  if (buf == NULL) {
   MessageBox(hWnd,\"메모리 할당에 실패했습니다\",\"에러\",MB_OK);
   return -1;
  }

  // 버퍼에 문자열을 준비한다.
  p=buf;
  for (i=1;;i++) {
   wsprintf(sTmp,\"%dLine : This file is a test file for overlapped file I/O\\r\\n\",i);
   tlen=lstrlen(sTmp);
   if (p-buf+tlen >= 50*MEGA) break;
   lstrcpy(p,sTmp);
   p+=tlen;
  }
  len=p-buf;
  return 0;

api예제중 일부분인데요
p=buf; 이거는 p에 buf주소값을 넣는걸로 알고있는데요
p-buf+tlen하고 p-buf는 어떡해 계산해야하나요?