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
[36203] Re:[질문] api 공부하는데요
김상면 [] 1282 읽음    2004-07-10 11:16
#include <stdlib.h>
하셔야 합니다.
그럼



초야 님이 쓰신 글 :
: C++ 빌더X에서 컴파일 시꼈을때는 이런 메시지가 떳고요
:  iVscrollPos=max(0,min(iVscrollPos,NUMLINES - 1));
: //"Unit1.cpp": E2268 Call to undefined function 'max' in function __stdcall WndProc(HWND__ *,unsigned int,unsigned int,long) at line 103
:
: 똑같은 비주얼 씨++에서 했더니 잘 돼더라고요 왜 그런지 아시는 분은 좀 알려주세요
:
:
: 소스첨부할께요 찰스펫조드 프로그래밍윈도우즈 챕터4에 sysmets2.c란 거예요
:
:
:
: #define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics[0]))
:
: struct
: {
:   int iIndex;
:   TCHAR *szLabel;
:   TCHAR *szDesc;
: }
: sysmetrics[]=
: {
:   SM_CXSCREEN,    TEXT("SM_CXSCREEN"),
:                   TEXT("Screen width in pixels"),
:   SM_CYSCREEN,    TEXT("SM_CYSCREEN"),
:                   TEXT("Screen height in pixels"),
:   SM_CXVSCROLL,   TEXT("SM_CXVSCROLL"),
:                   TEXT("Vertical scroll width"),
:   SM_CYHSCROLL,   TEXT("SM_CYHSCROLL"),
:                   TEXT("Horizontal scroll height"),
:   SM_CYCAPTION,   TEXT("SM_CYCAPTION"),
:                   TEXT("Caption bar height"),
:   SM_CXBORDER,    TEXT("SM_CXBORDER"),
:                   TEXT("Window border height"),
:   SM_CXFIXEDFRAME,TEXT("SM_CXFIXEDFRAME"),
:                   TEXT("Dialog window frame width"),
:   SM_CYFIXEDFRAME,TEXT("SM_CYFIXEDFRAME"),
:                   TEXT("Dialog windwo frame  height"),
:   SM_CYVTHUMB,    TEXT("SM_CYVTHUMB"),
:                   TEXT("Vertical scroll thumb height"),
:   SM_CXHTHUMB,    TEXT("SM_CXHTHUMB"),
:                   TEXT("Horizontal scroll thumb width"),
:   SM_CXICON,      TEXT("SM_CXICON"),
:                   TEXT("Icon width"),
:   SM_CYICON,      TEXT("SM_CYICON"),
:                   TEXT("Icon height"),
:   SM_CXCURSOR,    TEXT("SM_CXCURSOR"),
:                   TEXT("Cursor width"),
:   SM_CYCURSOR,    TEXT("SM_CYCURSOR"),
:                   TEXT("Cursor height"),
:   SM_CYMENU,      TEXT("SM_CYMENU"),
:                   TEXT("Menu bar height"),
:   SM_CXFULLSCREEN,TEXT("SM_CXFULLSCREEN"),
:                   TEXT("Full screen client area width"),
:   SM_CYFULLSCREEN,TEXT("SM_CYFULLSCREEN"),
:                   TEXT("Full screen client area width"),
:   SM_CYKANJIWINDOW,TEXT("SM_CYKANJIWINDOW"),
:                   TEXT("Kanji window height"),
:   SM_MOUSEPRESENT,TEXT("SM_MOUSEPRESENT"),
:                   TEXT("Mouse present flag"),
:   SM_CYVSCROLL,   TEXT("SM_CYVSCROLL"),
:                   TEXT("Vertical scroll arrow height"),
:   SM_CXHSCROLL,   TEXT("SM_CXHSCROLL"),
:                   TEXT("Horizontal scroll arrow width"),
:   SM_DEBUG,       TEXT("SM_DEBUG"),
:                   TEXT("Debug version flag"),
:   SM_SWAPBUTTON,  TEXT("SM_SWAPBUTTON"),
:                   TEXT("Mouse buttons swapped flag"),
:   SM_CXMIN,       TEXT("SM_CXMIN"),
:                   TEXT("Minimum window width"),
:   SM_CYMIN,       TEXT("SM_CYMIN"),
:                   TEXT("Minimum window height"),
:   SM_CXSIZE,      TEXT("SM_CXSIZE"),
:                   TEXT("Min/Max/Close button width"),
:   SM_CYSIZE,      TEXT("SM_CYSIZE"),
:                   TEXT("Min/Max/Close button height"),
:   SM_CXSIZEFRAME, TEXT("SM_CXSIZEFRAME"),
:                   TEXT("Window sizing frame width"),
:   SM_CYSIZEFRAME, TEXT("SM_CYSIZEFRAME"),
:                   TEXT("Min/Max/Close button height"),
:   SM_CXMINTRACK,  TEXT("SM_CXMINTRACK"),
:                   TEXT("Minimum window tracking width"),
:   SM_CXDOUBLECLK, TEXT("SM_CXDOUBECLK"),
:                   TEXT("Double click x tolerance"),
:   SM_CYDOUBLECLK, TEXT("SM_CYDOUBECLK"),
:                   TEXT("Double click y tolerance"),
:   SM_CXICONSPACING,TEXT("SM_CXICONSPACING"),
:                   TEXT("Horizontal icon spacing"),
:   SM_CYICONSPACING,TEXT("SM_CYICONSPACING"),
:                   TEXT("Vertical icon spacing"),
:   SM_MENUDROPALIGNMENT,TEXT("SM_MENUDRAPALIGNMENT"),
:                   TEXT("Left or right menu drop"),
:   SM_DBCSENABLED, TEXT("SM_DBCSENABLED"),
:                   TEXT("Doubl-Byte Char set enabled"),
:   SM_PENWINDOWS,  TEXT("SM_PENWINDOWS"),
:                   TEXT("Pen extensions installed"),
:   SM_CMOUSEBUTTONS,TEXT("SM_CMOUSEBUTTONS"),
:                   TEXT("Numer of mouse button"),
:   SM_SECURE,      TEXT("SM_SECURE"),
:                   TEXT("Security present flag"),
:   SM_CXEDGE,      TEXT("SM_CXEDGE"),
:                   TEXT("3-D border width"),
:   SM_CYEDGE,      TEXT("SM_CYEDGE"),
:                   TEXT("3-D border height"),
:   SM_CXMINSPACING,TEXT("SM_CXMINSPACING"),
:                   TEXT("Minimized window spacing width"),
:   SM_CYMINSPACING,TEXT("SM_CYMINSPACING"),
:                   TEXT("Minimized window spacing height"),
:   SM_CXSMICON,    TEXT("SM_CXSMICON"),
:                   TEXT("Small Icon widht"),
:   SM_CYSMICON,    TEXT("SM_CYSMICON"),
:                   TEXT("Small Icon height"),
:   SM_CYSMCAPTION, TEXT("SM_CYSMCAPTION"),
:                   TEXT("Small caption height"),
:   SM_CXSMSIZE,    TEXT("SM_CYSMSIZE"),
:                   TEXT("Small caption button width"),
:   SM_CYSMSIZE,    TEXT("SM_CYSMSIZE"),
:                   TEXT("Small caption button heihgt"),
:   SM_CXMENUSIZE,  TEXT("SM_CXMENUSIZE"),
:                   TEXT("Menu bar button width"),
:   SM_CYMENUSIZE,  TEXT("SM_CYMENUSIZE"),
:                   TEXT("Menu bar button height"),
:   SM_ARRANGE,     TEXT("SM_ARRANGE"),
:                   TEXT("How minimized windows arranged"),
:   SM_CXMINIMIZED, TEXT("SM_CXMINIMIZED"),
:                   TEXT("Minimized window width"),
:   SM_CYMINIMIZED, TEXT("SM_CYMINIMIZED"),
:                   TEXT("Minimized window height"),
:   SM_CXMAXTRACK,  TEXT("SM_CXMAXTRACK"),
:                   TEXT("Maximum draggable width"),
:   SM_CYMAXTRACK,  TEXT("SM_CYMAXTRACK"),
:                   TEXT("Maximum draggable height"),
:   SM_CXMAXIMIZED, TEXT("SM_CXMAXIMIZED"),
:                   TEXT("Width of maximized window"),
:   SM_CYMAXIMIZED, TEXT("SM_CYMAXIMIZED"),
:                   TEXT("Height of maximized window"),
:   SM_NETWORK,     TEXT("SM_NETWORK"),
:                   TEXT("Network present flag"),
:   SM_CLEANBOOT,   TEXT("SM_CLEANBOOT"),
:                   TEXT("How systm was booted"),
:   SM_CXDRAG,      TEXT("SM_CXDRAG"),
:                   TEXT("Avoid drag x tolerance"),
:   SM_CYDRAG,      TEXT("SM_CYDRAG"),
:                   TEXT("Avoid drag y tolerance"),
:   SM_SHOWSOUNDS,  TEXT("SM_SHOWSOUNDS"),
:                   TEXT("Present sounds visually"),
:   SM_CXMENUCHECK, TEXT("SM_CXMEUNCHECK"),
:                   TEXT("Meun check-mark width"),
:   SM_CYMENUCHECK, TEXT("SM_CYMENUCHECK"),
:                   TEXT("Menu check-mark height"),
:   SM_SLOWMACHINE, TEXT("SM_SHOWMACHINE"),
:                   TEXT("Slow processor flag"),
:   SM_MIDEASTENABLED,TEXT("SM_MIDEASTENABLED"),
:                   TEXT("Hebrew and Arabic enabled flag"),
:   SM_MOUSEWHEELPRESENT,TEXT("SM_MOUSEWHEELPRESENT"),
:                   TEXT("Mouse wheel present flag"),
:   SM_XVIRTUALSCREEN,TEXT("SM_XVIRTUALSCREEN"),
:                   TEXT("Virtual screen x orign"),
:   SM_YVIRTUALSCREEN,TEXT("SM_YVIRTUALSCREEN"),
:                   TEXT("Virtual screen y origh"),
:   SM_CXVIRTUALSCREEN,TEXT("SM_CXVIRTUALSCREEN"),
:                   TEXT("Virtual screen width"),
:   SM_CYVIRTUALSCREEN,TEXT("SM_CYVIRTUALSECREEN"),
:                   TEXT("Virtual screen height"),
:   SM_CMONITORS,   TEXT("SM_CMONITORS"),
:                   TEXT("Number of monitors"),
:   SM_SAMEDISPLAYFORMAT,TEXT("SM_SAMEDISPLAYFORMAT"),
:                   TEXT("Same color fomat flag")
: };
:
:
: //---------------------------------------------------------------------------
: // Unit1.cpp
: //---------------------------------------------------------------------------
:
: #include <windows.h>
: #include "Unit1.h"
:
: LRESULT CALLBACK WndProc(HWND, UINT , WPARAM, LPARAM);
:
: int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
: {
:   static TCHAR szAppName[] = TEXT("SysMets2");
:   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);
:   wndclass.lpszMenuName = NULL;
:   wndclass.lpszClassName = szAppName;
:
:   if(!RegisterClass(&wndclass))
:   {
:     MessageBox(NULL,TEXT("This program requires windows NT!"),szAppName,MB_ICONERROR);
:     return 0;
:   }
:
:   hwnd = CreateWindow(szAppName,
:                       TEXT("Get System Metrics No.2"),
:                       WS_OVERLAPPEDWINDOW | WS_VSCROLL,
:                       CW_USEDEFAULT,CW_USEDEFAULT,
:                       CW_USEDEFAULT,CW_USEDEFAULT,
:                       NULL,NULL,hInstance,NULL);
:
:   ShowWindow(hwnd,iCmdShow);
:   UpdateWindow(hwnd);
:
:   while(GetMessage(&msg,NULL,0,0))
:   {
:     TranslateMessage(&msg);
:     DispatchMessage(&msg);
:   }
:   return msg.wParam;
: }
:
: LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
: {
:   static int cxChar,cxCaps,cyChar,cyClient,iVscrollPos;
:   HDC hdc;
:   int i,y;
:   PAINTSTRUCT ps;
:   TCHAR szBuffer[10];
:   TEXTMETRIC tm;
:
:   switch(message)
:   {
:     case WM_CREATE:
:           hdc = GetDC(hwnd);
:
:           GetTextMetrics(hdc,&tm);
:           cxChar = tm.tmAveCharWidth;
:           cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2;
:           cyChar = tm.tmHeight + tm.tmExternalLeading;
:
:           ReleaseDC(hwnd,hdc);
:
:           SetScrollRange(hwnd,SB_VERT,0,NUMLINES - 1,FALSE);
:           SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
:           return 0;
:
:     case WM_SIZE:
:           cyClient = HIWORD(lParam);
:           return 0;
:
:     case WM_VSCROLL:
:           switch (LOWORD(wParam))
:           {
:             case SB_LINEUP:
:                   iVscrollPos -= 1;
:                   break;
:             case SB_LINEDOWN:
:                   iVscrollPos += 1;
:                   break;
:             case SB_PAGEUP:
:                   iVscrollPos -= cyClient / cyChar;
:                   break;
:             case SB_PAGEDOWN:
:                   iVscrollPos += cyClient / cyChar;
:                   break;
:             case SB_THUMBPOSITION:
:                    iVscrollPos = HIWORD(wParam);
:                    break;
:             default:
:                    break;
:           }
:
:           iVscrollPos=max(0,min(iVscrollPos,NUMLINES - 1)); //이 부분이예욧
:
:           if(iVscrollPos != GetScrollPos(hwnd,SB_VERT))
:           {
:             SetScrollPos(hwnd,SB_VERT,iVscrollPos,TRUE);
:             InvalidateRect(hwnd,NULL,TRUE);
:           }
:           return 0;
:     case WM_PAINT:
:           hdc = BeginPaint(hwnd,&ps);
:           for(i = 0; i < NUMLINES ; i++)
:           {
:             y = cyChar * (i - iVscrollPos);
:
:             TextOut(hdc,0,y,
:                     sysmetrics[i].szLabel,
:                     lstrlen(sysmetrics[i].szLabel));
:
:             TextOut(hdc,22 * cxCaps,y,
:                     sysmetrics[i].szDesc,
:                     lstrlen(sysmetrics[i].szDesc));
:
:             SetTextAlign(hdc,TA_RIGHT | TA_TOP);
:
:             TextOut(hdc,22 * cxCaps + 40 * cxChar,y,szBuffer,
:                     wsprintf(szBuffer,TEXT("%5"),
:                              GetSystemMetrics(sysmetrics[i].iIndex)));
:
:             SetTextAlign(hdc, TA_LEFT | TA_TOP);
:           }
:           EndPaint(hwnd, &ps);
:           return 0;
:
:     case WM_DESTROY:
:           PostQuitMessage(0);
:           return 0;
:   }
:   return DefWindowProc(hwnd,message,wParam,lParam);
: }
:
:

+ -

관련 글 리스트
36200 [질문] api 공부하는데요 방법찾았심(매크로 함수를 따로) 초야 1629 2004/07/10
36203     Re:[질문] api 공부하는데요 김상면 1282 2004/07/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.