C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[36255] [질문] API코드 오류에 관해 아시는 분은 알려주세요
초야 [secretdeeper] 860 읽음    2004-07-14 02:42
빌더X로 했고요
이부분이 문제의 부분

fRadius = _hypot(cxClient / 2.0, cyClient / 2.0); //call to undefined function "_hypot"

요로콤 안돼욧 아시분은 도와주세욧


문제의 소스
#include <windows.h>
#include <math.h>

#define TWO_PI (2.0 * 3.14159)

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
  static TCHAR szAppName[] = TEXT("Clover");
  HWND hwnd;
  MSG msg;
  WNDCLASS wndclass;

  wndclass.style = CS_HREDRAW | CS_VREDRAW;
  wndclass.lpfnWndProc = WndProc;
  wndclass.cbClsExtra = 0;
  wndclass.cbWndExtra = 0;
  wndclass.hInstance = hInstance;
  wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
  wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
  wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

  if(RegisterClass(&wndclass))
  {
    MessageBox(NULL,TEXT("This program required Window NT"),szAppName,MB_ICONERROR);
    return 0;
  }

  hwnd = CreateWindow(szAppName,TEXT("Draw a Clover"),WS_OVERLAPPEDWINDOW,
                      CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
                      NULL,NULL,hInstance,NULL);

  ShowWindow(hwnd,iCmdShow);
  UpdateWindow(hwnd);

  if(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}


LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
  static HRGN hRgnClip;
  static int cxClient,cyClient;
  double fAngle,fRadius;
  HCURSOR hCursor;
  HDC hdc;
  HRGN hRgnTemp[6];
  int i;
  PAINTSTRUCT ps;

  switch(message)
  {
    case WM_SIZE:
          cxClient = LOWORD(lParam);
          cyClient = HIWORD(lParam);

          hCursor = SetCursor(LoadCursor(NULL,IDC_WAIT));
          ShowCursor(TRUE);

          if(hRgnClip)
              DeleteObject(hRgnClip);

          hRgnTemp[0] = CreateEllipticRgn(0,cyClient / 3, cxClient / 2, 2 * cyClient / 3);

          hRgnTemp[1] = CreateEllipticRgn(cxClient / 2 ,cyClient / 3,
                                          cxClient / 2, 2 * cyClient / 3);
          hRgnTemp[2] = CreateEllipticRgn(cxClient / 3,0, 2 * cxClient / 3,cyClient / 2);

          hRgnTemp[3] = CreateEllipticRgn(cxClient / 3,cyClient / 2,
                                          2 * cxClient / 3,cyClient / 2);
          hRgnTemp[4] = CreateRectRgn(0,0,1,1);
          hRgnTemp[5] = CreateRectRgn(0,0,1,1);
          hRgnClip = CreateRectRgn(0,0,1,1);

          CombineRgn(hRgnTemp[4],hRgnTemp[0],hRgnTemp[1],RGN_OR);
          CombineRgn(hRgnTemp[5],hRgnTemp[2],hRgnTemp[3],RGN_OR);
          CombineRgn(hRgnClip, hRgnTemp[4],hRgnTemp[5],RGN_XOR);

          for(i = 0; i< 6; i++)
              DeleteObject(hRgnTemp[i]);

          SetCursor(hCursor);
          ShowCursor(FALSE);
          return 0;

    case WM_PAINT:
          hdc = BeginPaint(hwnd,&ps);
          SetViewportOrgEx(hdc,cxClient / 2,cyClient / 2,NULL);
          SelectClipRgn(hdc,hRgnClip);

          fRadius = _hypot(cxClient / 2.0, cyClient / 2.0);

          for(fAngle = 0.0; fAngle < TWO_PI; fAngle += TWO_PI / 360)
          {
            MoveToEx(hdc,0,0,NULL);
            LineTo(hdc,(int)(fRadius * cos(fAngle) + 0.5),
                       (int)(fRadius * sin(fAngle) + 0.5));
          }
          EndPaint(hwnd,&ps);
          return 0;

    case WM_DESTROY:
          DeleteObject(hRgnClip);
          PostQuitMessage(0);
          return 0;
  }
  return DefWindowProc(hwnd,message,wParam,lParam);
}


+ -

관련 글 리스트
36255 [질문] API코드 오류에 관해 아시는 분은 알려주세요 초야 860 2004/07/14
36257     Re:[질문] API코드 오류에 관해 아시는 분은 알려주세요 유영인 Cuperido 1033 2004/07/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.