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
[59125] Re:Re:C++빌더에서 VB의 InputBox() 혹은 자바스크립트의 Propmpt() 함수와 같은 입력기능을 어떻게
Fregata [devilica] 1663 읽음    2009-11-16 14:01
아래와 같이 고쳐야 합니다.
if %errorlevel% == 1 goto one
if %errorlevel% == 2 goto two

아제나 님이 쓰신 글 :
: C++빌더 VCL에 보시면 InputBox() 라는 API가 있는데요 ^^; 질문답변 게시판에서 InputBox로 검색해보시고요.
:
: 그리고 배치 파일에 사용자 입력 값이 필요한 경우에는 대부분 파라미터로 처리합니다....
:
: 첫번째 파라미터는 %1 과 같이 표현하죠.
:
: 즉, 10번째 칼럼부터 자르기를 원하는 경우에는
:
: cut.bat 10
:
: 이런 식으로 명령을 주게 만들면 되지요.
:
: 만약에 10을 입력하지 않으면 사용법을 출력해주시고요.
:
: 이런식으로 하면 됩니다.
:
: if "%1"="" goto usage
: echo 파라미터가 있을 경우 배치 파일이 처리될 부분
: goto end
: :usage
: echo 프로그램 설명입니다. 파일명 [칼럼수]
: :end
:
: 그리고 프로그램에서 뭔가의 값을 받아서 배치 파일로 전달해주는 경우에 리턴값 처리는 ERRORLEVEL 이란 것을 사용하지요.
:
: C 프로그래밍
:
: test.c
:
: int main()
: {
:   int ret;
:   printf("숫자를 입력하세요? ");
:   scanf("%d",&ret);
:   return ret;
: }
:
: 배치 파일 프로그래밍
:
: test.bat
:
: @echo off
: test.exe
: if errorlevel 1 goto one
: if errorlevel 2 goto two
: echo 사용자 입력값(리턴값)이 1,2이 아닌 경우
: goto end
: :one
: echo 사용자 입력값이 1인 경우
: goto end
: :two
: echo 사용자 입력값이 2인 경우
: :end
:
:
: 사실 오래되어서 기억이 가물합니다 ㅡㅡ;
: 해당 소스가 틀릴 가능성도 있음에 유념하시기 바랍니다. (테스트 안 해봄)
:
:
:
: 정** 님이 쓰신 글 :
: : 저는 도스프롬프트(CMD) 에서 배치파일을 만들어서 폴더(하위폴더 모두포함) 속의 파일들의 경로가포함된 전체 경로가 사용자로부터 입력받은 수치 이상의 길이를 가지는 파일명들만 출력을 하도록하는 유틸을 만들려고 합니다.
: :
: : 기본적은 배치파일로 작성해야 될부분을 모두 만들었고 또 잘 작동되나 한가지 빠진것은 사용자로 부터 입력받은 길이 이상의 파일명들만 출력시킬 커트라인이 될  숫자 길이값을 입력받는 것이 아니라 배치파일 내에서 고정된 값을 할당하여야 되는 단점이 있습니다. 물론 배치파일의 'SET /P CUTLIN_NUM=커트라인될 파일의 길이를 입력하세요?'라는 기능을 이용해도 되지만 이것은 비쥬얼한 것이 아니라서 사실 보기도 싫고 사용도 불편합니다.
: :
: : 그래서 제가 잘 아는 배치파일을 최대로 살리면서 또 배치로는 단점이 있는 최소 부분만 C++빌더로 구현을 할려고 합니다.
: :
: : 즉 배치파일에서 C++빌더로 컴파일된 .EXE를 호출하여 커트라인될 숫자값을 사용자로 부터 비쥬얼하게 입력받고 그값을 배치로 리턴을 해주는 방식입니다.
: :
: : 아래는 구체적으로 알고자 하는부분입니다.
: :
: : C++빌더에서 사용자로부터 숫자값을 입력받는 인풋 박스를 출력하려고 합니다. 비베나 비베스크립트나 자바스크립에서는 InputBox() 혹은 Propmpt() 함수와 같이 간단하게 해결이 되는데 C++빌더에서는 찾기가 좀힘드네요.
: : 혹시 API로도 해결이 가능한가요 아니면 MFC까지 구현해야 하나요?
: : 이왕이면 제가 이해가 잘아는 API로만 구현을 해보았으면 하는데요.
: : 
: : 헤드파일이나 리소스(RC) 파일를 포함해야 하는 프로젝트 파일을 만들어야 한다면 소스를 첨부파일이나 이메일로도 좀 올려 주십시오. Borland나 VC++이나 DEV C++,Relo2.0 등등 어떻한 형태의 프로젝트 팔일소스라도 상관없어니 좀 부탁드립니다.
: : 저의 이메일은 ssforyah@yahoo.co.kr 입니다.
: :
: :
: : 그럼 답변 부탁드립니다.
: :
: :
: : 아래는 추가적으로 제가 웹검색으로 기본 골격 까지만 겨우 만들어본 것인데 Inputbox의 겉모습은 만들었는데
: : OK버턴을 클릭했을때 텍스트박스에 입력되어있는 숫자값을 Return을 해야 하는데 어떻게 해야 하나요?
: : =========================================================================================
: :
: :  #include <WINDOWS.H>
: : #include "Project1_res.h"
: : 
: :
: : LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
: :
: : HINSTANCE g_hInst;
: :
: : LPSTR lpszClass="SubEdit";
: :
: : 
: :
: : int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
: :
: :           ,LPSTR lpszCmdParam,int nCmdShow)
: :
: : {
: :
: :     HWND hWnd;
: :
: :     MSG Message;
: :
: :     WNDCLASS WndClass;
: :
: :     g_hInst=hInstance;
: :
: :    
: :
: :     WndClass.cbClsExtra=0;
: :
: :     WndClass.cbWndExtra=0;
: :
: :     WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
: :
: :     WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
: :
: :     WndClass.hIcon=LoadIcon(NULL,IDI_QUESTION);
: :
: :     WndClass.hInstance=hInstance;
: :
: :     WndClass.lpfnWndProc=(WNDPROC)WndProc;
: :
: :     WndClass.lpszClassName=lpszClass;
: :
: :     WndClass.lpszMenuName=NULL;
: :
: :     WndClass.style=CS_HREDRAW | CS_VREDRAW;
: :
: :     RegisterClass(&WndClass);
: :
: :    
: :
: :     hWnd=CreateWindow(lpszClass,TEXT("검색할 파일명길이의 커트라인을 입력"),WS_CAPTION|WS_SYSMENU,
: :
: :         300,200,370,110,
: :
: :         NULL,(HMENU)NULL,hInstance,NULL);
: :
: :     ShowWindow(hWnd,nCmdShow);
: :
: :    
: :
: :     while(GetMessage(&Message,0,0,0)) {
: :
: :         TranslateMessage(&Message);
: :
: :         DispatchMessage(&Message);
: :
: :     }
: :
: :    return Message.wParam;
: :
: :
: : }
: :
: : 
: :
: : #define ID_EDIT1 100
: :
: : #define ID_EDIT2 101
: :
: : HWND hEdit1, hEdit2;
: :
: : WNDPROC OldEditProc;
: :
: : LRESULT CALLBACK EditSubProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
: :
: : {
: :
: :     switch (iMessage) {
: :
: :     case WM_KEYDOWN:
: :
: :         if (wParam==VK_RETURN) {
: :
: :             return 10;
: :
: :         }
: :
: :         if (wParam==VK_TAB) {
: :
: :             SetFocus(hEdit2);
: :
: :         }
: :
: :         break;
: :
: : //  case WM_LBUTTONDOWN:
: :
: : //      SendMessage(hWnd,EM_SETSEL,0,-1);
: :
: : //      return 0;
: :
: :     }
: :
: :     return CallWindowProc(OldEditProc,hWnd,iMessage,wParam,lParam);
: :
: : }
: :
: : 
: :
: : LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
: :
: : {
: :
: :     PAINTSTRUCT ps;
: :
: :     HDC hdc;
: :
: :     char Mes[]="입력된 수치 이상의 파일명들을 출력합니다.";
: :
: :     switch(iMessage) {
: :
: :     case WM_CREATE:
: :
: :         hEdit1=CreateWindow("edit",NULL,WS_CHILD | WS_VISIBLE | WS_BORDER |
: :             ES_AUTOHSCROLL,
: :             10,10,150,25,hWnd,(HMENU)ID_EDIT1,g_hInst,NULL);
: :
: :          hEdit2=CreateWindow("button","확인",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
: :                 260,10,50,25,hWnd,(HMENU)0,g_hInst,NULL);
: :                
: :         SetFocus(hEdit1);
: :         OldEditProc=(WNDPROC)SetWindowLong(hEdit1,GWL_WNDPROC,(LONG)EditSubProc);
: :         return 0;
: :
: :      case WM_COMMAND:
: :         if(LOWORD(wParam) == 0) {
: :           MessageBox(hWnd,"입력된 이 값을 리턴해야 함.","Button",MB_OK);
: :           PostQuitMessage(34);
: :           return 0;
: :           break;
: :          }
: :         return 0;
: :      
: :     case WM_PAINT:
: :
: :         hdc=BeginPaint(hWnd, &ps);
: :
: :         TextOut(hdc,10,40,Mes,strlen(Mes));
: :
: :         EndPaint(hWnd, &ps);
: :
: :         return 0;
: :
: :     case WM_DESTROY:
: :
: :         SetWindowLong(hEdit1,GWL_WNDPROC,(LONG)OldEditProc);
: :
: :         PostQuitMessage(0);
: :
: :         return 0;
: :
: :     }
: :
: :     return(DefWindowProc(hWnd,iMessage,wParam,lParam));
: :
: : }

+ -

관련 글 리스트
59109 C++빌더에서 VB의 InputBox() 혹은 자바스크립트의 Propmpt() 함수와 같은 입력기능을 어떻게 구현하나 정** 1646 2009/11/15
59122     Re:C++빌더에서 VB의 InputBox() 혹은 자바스크립트의 Propmpt() 함수와 같은 입력기능을 어떻게 구현 아제나 1678 2009/11/16
59158         Re:Re:답변 잘받았습니다. 정** 1106 2009/11/19
59125         Re:Re:C++빌더에서 VB의 InputBox() 혹은 자바스크립트의 Propmpt() 함수와 같은 입력기능을 어떻게 Fregata 1663 2009/11/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.