ftplib
index
/usr/lib/python1.6/ftplib.py

An FTP client class and some helper functions.
 
Based on RFC 959: File Transfer Protocol
(FTP), by J. Postel and J. Reynolds
 
Example:
 
>>> from ftplib import FTP
>>> ftp = FTP('ftp.python.org') # connect to host, default port
>>> ftp.login() # default, i.e.: user anonymous, passwd user@hostname
'230 Guest login ok, access restrictions apply.'
>>> ftp.retrlines('LIST') # list directory contents
total 9
drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 .
drwxr-xr-x   8 root     wheel        1024 Jan  3  1994 ..
drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 bin
drwxr-xr-x   2 root     wheel        1024 Jan  3  1994 etc
d-wxrwxr-x   2 ftp      wheel        1024 Sep  5 13:43 incoming
drwxr-xr-x   2 root     wheel        1024 Nov 17  1993 lib
drwxr-xr-x   6 1094     wheel        1024 Sep 13 19:07 pub
drwxr-xr-x   3 root     wheel        1024 Jan  3  1994 usr
-rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
'226 Transfer complete.'
>>> ftp.quit()
'221 Goodbye.'
>>> 
 
A nice test that reveals some of the network dialogue would be:
python ftplib.py -d localhost -l -p -l

 
Modules
             
os
socket
string
sys

 
Classes
             
FTP
Netrc

 
class FTP
      An FTP client class.
 
To create a connection, call the class using these argument:
        host, user, passwd, acct
These are all strings, and have default value ''.
Then use connect() with optional host and port argument.
 
To download a file, use ftp.retrlines('RETR ' + filename),
or ftp.retrbinary() with slightly different arguments.
To upload a file, use ftp.storlines() or ftp.storbinary(),
which have an open file as argument (see their definitions
below for details).
The download/upload functions first issue appropriate TYPE
and PORT or PASV commands.
 
  
__init__(self, host='', user='', passwd='', acct='')
# Initialization method (called by class instantiation).
# Initialize host to localhost, port to standard ftp port
# Optional arguments are host (for connect()),
# and user, passwd, acct (for login())
abort(self)
Abort a file transfer.  Uses out-of-band data.
This does not follow the procedure from the RFC to send Telnet
IP and Synch; that doesn't seem to work with the servers I've
tried.  Instead, just send the ABOR command as OOB data.
acct(self, password)
Send new account name.
close(self)
Close the connection without assuming anything about it.
connect(self, host='', port=0)
Connect to host.  Arguments are:
- host: hostname to connect to (string, default previous host)
- port: port to connect to (integer, default previous port)
cwd(self, dirname)
Change to a directory.
debug = set_debuglevel(self, level)
delete(self, filename)
Delete a file.
dir(self, *args)
List a directory in long form.
By default list current directory to stdout.
Optional last argument is callback function; all
non-empty arguments before it are concatenated to the
LIST command.  (This *should* only be used for a pathname.)
getline(self)
# Internal: return one line from the server, stripping CRLF.
# Raise EOFError if the connection is closed
getmultiline(self)
# Internal: get a response from the server, which may possibly
# consist of multiple lines.  Return a single string with no
# trailing CRLF.  If the response consists of multiple lines,
# these are separated by '\n' characters in the string
getresp(self)
# Internal: get a response from the server.
# Raise various errors if the response indicates an error
getwelcome(self)
Get the welcome message from the server.
(this is read and squirreled away by connect())
login(self, user='', passwd='', acct='')
Login, default anonymous.
makeport(self)
Create a new socket and send a PORT command for it.
mkd(self, dirname)
Make a directory, return its full pathname.
nlst(self, *args)
Return a list of files in a given directory (default the current).
ntransfercmd(self, cmd)
Initiate a transfer over the data connection.
If the transfer is active, send a port command and
the transfer command, and accept the connection.
If the server is passive, send a pasv command, connect
to it, and start the transfer command.
Either way, return the socket for the connection and
the expected size of the transfer.  The expected size
may be None if it could not be determined.
putcmd(self, line)
# Internal: send one command to the server (through putline())
putline(self, line)
# Internal: send one line to the server, appending CRLF
pwd(self)
Return current working directory.
quit(self)
Quit, and close the connection.
rename(self, fromname, toname)
Rename a file.
retrbinary(self, cmd, callback, blocksize=8192)
Retrieve data in binary mode.
The argument is a RETR command.
The callback function is called for each block.
This creates a new port for you
retrlines(self, cmd, callback=None)
Retrieve data in line mode.
The argument is a RETR or LIST command.
The callback function (2nd argument) is called for each line,
with trailing CRLF stripped.  This creates a new port for you.
print_line() is the default callback.
rmd(self, dirname)
Remove a directory.
sanitize(self, s)
# Internal: "sanitize" a string for printing
sendcmd(self, cmd)
Send a command and return the response.
sendport(self, host, port)
Send a PORT command with the current host and the given port number.
set_debuglevel(self, level)
Set the debugging level.
The required argument level means:
0: no debugging output (default)
1: print commands and responses but not body text etc.
2: also print raw lines read and sent before stripping CR/LF
set_pasv(self, val)
Use passive or active mode for data transfers.
With a false argument, use the normal PORT mode,
With a true argument, use the PASV command.
size(self, filename)
Retrieve the size of a file.
storbinary(self, cmd, fp, blocksize)
Store a file in binary mode.
storlines(self, cmd, fp)
Store a file in line mode.
transfercmd(self, cmd)
Initiate a transfer over the data connection.  Returns
the socket for the connection.  See also ntransfercmd().
voidcmd(self, cmd)
Send a command and expect a response beginning with '2'.
voidresp(self)
Expect a response beginning with '2'.

 
class Netrc
      Class to parse & provide access to 'netrc' format files.
 
See the netrc(4) man page for information on the file format.
 
WARNING: This class is obsolete -- use module netrc instead.
 
  
__init__(self, filename=None)
get_account(self, host)
Returns login information for the named host.
 
The return value is a triple containing userid,
password, and the accounting field.
get_hosts(self)
Return a list of hosts mentioned in the .netrc file.
get_macro(self, macro)
Return a sequence of lines which define a named macro.
get_macros(self)
Return a list of all defined macro names.

 
Functions
             
ftpcp(source, sourcename, target, targetname='', type='I')
Copy file from one FTP-instance to another.
parse150(resp)
Parse the '150' response for a RETR request.
Returns the expected transfer size or None; size is not guaranteed to
be present in the 150 message.
parse227(resp)
Parse the '227' response for a PASV request.
Raises error_proto if it does not contain '(h1,h2,h3,h4,p1,p2)'
Return ('host.addr.as.numbers', port#) tuple.
parse257(resp)
Parse the '257' response for a MKD or PWD request.
This is a response to a MKD or PWD request: a directory name.
Returns the directoryname in the 257 reply.
print_line(line)
Default retrlines callback to print a line.
test()
Test program.
Usage: ftp [-d] [-r[file]] host [-l[dir]] [-d[dir]] [-p] [file] ...

 
Data
              CRLF = '\015\012'
FTP_PORT = 21
MSG_OOB = 1
_150_re = None
__file__ = '/usr/lib/python1.6/ftplib.pyc'
__name__ = 'ftplib'
all_errors = ('ftplib.error_reply', 'ftplib.error_temp', 'ftplib.error_perm', 'ftplib.error_proto', <class socket.error at 82c9c50>, <class exceptions.IOError at 818c800>, <class exceptions.EOFError at 818f150>)
error_perm = 'ftplib.error_perm'
error_proto = 'ftplib.error_proto'
error_reply = 'ftplib.error_reply'
error_temp = 'ftplib.error_temp'

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'[+] Information > [-] Reference' 카테고리의 다른 글

[Python Reference] ftplib  (0) 2011.12.15
[Python Reference] re 모듈  (0) 2011.10.23
[Python Reference] maketrans () 메서드  (0) 2011.10.23
[Win32 Reference] CreateWindowA() API  (0) 2011.10.08
[Win32 Reference] MessageBoxA() API  (0) 2011.10.08

정규식은 복잡한 문자열 패턴을 조사하고 대치 규칙을 정의하는 문자열이다.
re 모듈로 제공된다.

반복 메타 문자

반복 메타 문자

의미

*

0회 이상 방복

+

1회 이상 반복

?

0회 혹은 1회

{m}

m회 반복

{m,n}

m회부터n회까지 반복


매칭 메타 문자

메타 문자

의미

.

줄바꿈 문자를 제외한 모든 문자와 매치됨

^

문자열의 시작과 매치됨.

[]메타 기호 안에서는 반대의 문자열을 취함

$

문자열의 마지막과 매치됨

[]

문자 집합 중 한 문자를 의미함

|

또는(or)를 의미함

()

정규식을 그룹으로 묶음


이스케이프 기호

분야

설명

\\

역슬래쉬 문자 자체

\d

모든 숫자와 매치됨 [0-9]

\D

숫자가 아닌 문자와 매치됨[^0-9]

\s

화이트 스페이스 문자와 매치됨[ \t\n\r\f\v]

\S

화이트 스페이스가 아닌 것과 매치됨 [^ \t\n\r\f\v]

\w

숫자 또는 문자와 매치됨[a-zA-Z0-9_]

\W

숫자 또는 문자가 아닌 것과 매치됨[^a-zA-Z0-9_]

\b

단어의 경계를 나타냄. 단어는 영문자 혹은 숫자의 연속 문자열.

\B

단어의 경계가 아님을 나타냄.


최소 매칭을 위한 정규식

기회

의미

*?

*와 같으나 문자열을 취소로 매치함.

+?

+와 같으나 문자열을 취소로 매치함.

??

?와 같으나 문자열을 최소로 매치함.

{m,n}?

{m.n}과 같으나 문자열을 최소로 매치함


re모듈의 주요 메소드

메소드

설명

compile(patten[, flags])

pattern을 컴파일하여 정규식 객체를 리턴한다.

search(pattern, string[,flags])

string을 검사하여 pattern에 맞는 문자열 부분이 있는가를 찾는다.

match(pattern, string[,flags])

string의 시작부터 pattern에 맞는지 검사한다.

split(pattern, string[, maxsplit=0])

string을 pattern을 기준으로 분리한다.

findall(pattern, string)

string에서 pattern을 만족하는 모든 문자열을 추출한다.

sub(pattern, repl, string[, count-0])

string에서 pattern을 repl로 대치한다.

subn(pattern, repl, string[,count=0])

sub와 동일하나 대치 횟수도 함께 전달한다.

escape(string)

영문자 숫자가 아닌 문자들을 백슬래쉬 처리해서 리턴한다. 임의의 문자열을 정규식패턴으로 사용할 경우 유용하다.


정규 표현식에서 사용 가능한 플래그

플래그

내용

I, IGNORECATE

, 소문자를 구별하지 않는다.

L, LOCATE

\w, \W, \b, \B를 현재의 로케일에 영향을 받게한다.

M, MULTILINE

^가 문자열의 맨 처음, 각 라인의 맨 처음과 매치된다.

$는 문자열의 맨 끝, 각 라인의 맨 끝과 매치된다.

S, DOTALL

.을 줄바꾸기 문자도 포함하여 매치하게 한다.

U, UNICODE

\w, \W, \b, \B가 유니코드 문자 특성에 의존하게 한다.

X, VERBOSE

정규식 안의 공백은 무시된다.


저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'[+] Information > [-] Reference' 카테고리의 다른 글

[Python Reference] ftplib  (0) 2011.12.15
[Python Reference] re 모듈  (0) 2011.10.23
[Python Reference] maketrans () 메서드  (0) 2011.10.23
[Win32 Reference] CreateWindowA() API  (0) 2011.10.08
[Win32 Reference] MessageBoxA() API  (0) 2011.10.08

Python String maketrans() Method

설명 : Description:

이 메소드는 번역 테이블을 반환 outtab 문자열에서 같은 위치에있는 문자에 intab 문자열지도에서 각 문자를. This method returns a translation table that maps each character in the intab string into the character at the same position in the outtab string. 그런 다음이 테이블 함수는 () 번역에 전달됩니다. Then this table is passed to the translate() function. intab과 outtab 모두 같은 길이를 가지고 있어야합니다. Note that both intab and outtab must have the same length.

구문 : Syntax:

str.maketrans (intab, outtab]); str.maketrans(intab, outtab]);

매개 변수 : Parameters:

여기에 매개 변수의 세부 사항은 다음과 같습니다 : Here is the detail of parameters:

  • intab : 실제 문자를 가지고 문자열입니다. intab : string having actual characters.

  • outtab : 해당 매핑 문자를 가지고 문자열입니다. outtab : string having corresponding mapping character.

값을 반환합니다 : Return Value:

그것은 사용하는 변환 테이블 번역 () 함수를 반환합니다. It returns a translate table to be used translate() function.

예 : Example:

이 예제는 문자열의 모든 모음은 그 모음의 위치로 대체됩니다 : This example every vowel in a string is replaced by its vowel position:

#!는 / usr / 빈 / 파이썬 #!/usr/bin/python

문자열을 가져옵니다 maketrans에서 # maketrans 함수를 호출하기 위해 필요합니다. from string import maketrans # Required to call maketrans function.

intab = "aeiou" intab = "aeiou"
outtab = "12345" outtab = "12345"
trantab = maketrans (intab, outtab) trantab = maketrans(intab, outtab)

하위 버전과의 호환 = "이것은 문자열 예입니다 .... 와우 !!!"; str = "this is string example....wow!!!";
인쇄 str.translate (trantab); print str.translate(trantab);

이것은 다음과 같은 결과를 생산합니다 This will produce following result:

2x1mpl2을 str3ng th3s 3S로 .... w4w! th3s 3s str3ng 2x1mpl2....w4w!!!

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

'[+] Information > [-] Reference' 카테고리의 다른 글

[Python Reference] ftplib  (0) 2011.12.15
[Python Reference] re 모듈  (0) 2011.10.23
[Python Reference] maketrans () 메서드  (0) 2011.10.23
[Win32 Reference] CreateWindowA() API  (0) 2011.10.08
[Win32 Reference] MessageBoxA() API  (0) 2011.10.08

CreateWindow

원형 HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HANDLE hInstance, LPVOID lpParam);
MFC 원형 virtual BOOL CWnd::Create( LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
인수

▶lpClassName : 생성할 윈도우의 윈도우 클래스를 지정하는 문자열이다. 윈도우 클래스는 RegisterClass(Ex) 함수로 직접 등록할 수도 있고 또는 button, edit, listbox, static 등과 같이 미리 정의되어 있는 시스템 전역 클래스일 수도 있다. 또는 GlobalAddAtom 함수로 미리 등록해 놓은 정수형의 아톰을 사용하는 것도 가능하다.

▶lpWindowName : 윈도우의 타이틀 바에 나타날 캡션 문자열이다. 캡션이 나타날 위치는 윈도우 클래스에 따라 달라지는데 오버랩드 윈도우는 타이틀 바에 캡션이 나타나며 버튼, 스태틱 등의 컨트롤은 컨트롤 중앙에 캡션이 출력된다.

▶dwStyle : 생성될 윈도우의 스타일을 지정한다.

스타일 설명
WS_OVERLAPPED 디폴트 윈도우. 타이틀 바와 크기 조절이 안되는 경계선을 가진다. 아무런 스타일도 주지 않으면 이 스타일이 적용된다.
WS_POPUP 팝업 윈도우를 만든다. WS_CHILD와 함께 쓸 수 없다.
WS_CHILD 차일드 윈도우를 만든다. WS_POPUP과 함께 쓸 수 없다.
WS_MINIMIZE 최초 최소화된 상태로 윈도우를 만든다.
WS_VISIBLE 윈도우를 만들자 마자 화면에 출력한다.
WS_DISABLED 사용금지된 상태, 즉 입력을 받아들일 수 없는 상태로 만든다.
WS_CLIPSIBLINGS 차일드끼리 상호 겹친 영역은 그리기 영역에서 제외된다.
WS_CLIPCHILDREN 차일드가 위치한 영역은 그리기 영역에서 제외된다.
WS_MAXIMIZE 최초 최대화된 상태로 윈도우를 만든다.
WS_CAPTION 타이틀 바를 가진 윈도우를 만들며 WS_BORDER 스타일을 포함한다.
WS_BORDER 단선으로 된 경계선을 만들며 크기 조정은 할 수 없다.
WS_DLGFRAME 두꺼운 경계선을 가지며 타이틀 바를 가질 수 없다.
WS_VSCROLL 수직 스크롤 바를 가진 윈도우를 만든다.
WS_HSCROLL 수평 스크롤 바를 가진 윈도우를 만든다.
WS_SYSMENU 시스템 메뉴를 가진 윈도우를 만든다.
WS_THICKFRAME 크기 조정이 가능한 두꺼운 경계선을 가진다.
WS_GROUP 라디오 버튼 등 그룹을 이루는 컨트롤의 그룹 지정에 사용된다.
WS_TABSTOP Tab키로 포커스를 이동할 수 있도록 한다.
WS_MINIMIZEBOX 최소화 버튼을 만든다.
WS_MAXIMIZEBOX 최대화 버튼을 만든다.
WS_OVERLAPPEDWINDOW 가장 일반적인 윈도우 스타일. WS_OVERLAPPED |WS_CAPTION |WS_SYSMENU |WS_THICKFRAME |WS_MINIMIZEBOX |WS_MAXIMIZEBOX 스타일들이 조합된 스타일이다.
WS_POPUPWINDOW 일반적인 팝업 윈도우. WS_POPUP |WS_BORDER |WS_SYSMENU
WS_CHILDWINDOW WS_CHILD와 같다.

각 스타일의 비트 배치는 다음과 같다.

▶x, y : 윈도우의 좌표를 지정한다. 오버랩드, 팝업 윈도우는 화면의 원점을 기준으로 한 좌표로 지정하며 차일드 컨트롤은 부모 윈도우의 작업 영역 원점을 기준으로 한 좌표로 지정한다. CW_USEDEFAULT로 지정할 경우 시스템이 적절한 디폴트 위치에 윈도우를 생성해 주는데 이 값은 오버랩드 윈도우에만 적용되며 차일드나 팝업 윈도우에는 적용되지 않는다.

▶nWidth, nHeight : 윈도우의 수평 크기와 수직 크기를 장치 단위(픽셀)로 지정한다. 오버랩드 윈도우의 경우 nWidth에 CW_USEDEFAULT를 지정할 수 있으며 이 경우 시스템은 적절한 폭과 높이를 디폴트로 설정해 준다. nWidth가 CW_USEDEFAULT일 경우 nHeight는 무시된다.

▶hWndParent : 부모 윈도우, 또는 소유주 윈도우의 핸들을 지정한다. 차일드 윈도우는 부모 핸들을 반드시 지정해야 하며 팝업 윈도우는 부모 윈도우를 생략할 수도 있다. NT 5.0이상에서 이 인수에 HWND_MESSAGE를 지정하거나 이미 만들어져 있는 메시지 전용 윈도우 핸들을 부모로 지정하면 메시지 전용의 윈도우가 생성된다.

▶hMenu : 오버랩드 윈도우나 팝업 윈도우의 경우 메뉴의 핸들을 지정한다. 윈도우 클래스에 메뉴가 지정되지 않았을 경우 이 인수가 지정하는 핸들이 사용되며 만약 윈도우 클래스와 이 인수에 동시에 다른 메뉴가 지정되어 있으면 이 인수가 지정하는 메뉴가 우선적으로 적용된다. 차일드 윈도우의 경우 컨트롤의 ID를 지정하는데 이 ID는 차일드가 부모 윈도우(주로 대화상자)에게 통지 메시지를 보낼 때 차일드간의 구분을 위해 사용하므로 같은 부모에 속한 컨트롤끼리는 중복되는 ID를 가지지 않아야 한다.

▶hInstance : 이 윈도우를 생성하는 인스턴스 핸들을 지정한다. 이 인스턴스가 종료될 때 윈도우도 같이 파괴된다.

▶lpParam : WM_CREATE메시지의 lParam으로 전달될 CREATESTRUCT 구조체를의 포인터이다. MDI 클라이언트 윈도우를 만들 때는 CLIENTCREATESTRUCT 구조체의 포인터를 전달해야 한다.

리턴 윈도우 생성에 성공했으면 생성된 윈도우의 핸들을 리턴하며 에러 발생시 NULL을 리턴한다.
설명

윈도우 클래스와 이 함수의 인수 정보를 바탕으로 하여 윈도우를 생성한다. RegisterClass 함수로 직접 윈도우 클래스를 등록하여 메인 윈도우를 만들 수도 있으며 또는 이미 등록된 컨트롤을 생성할 수도 있다.

이 함수는 윈도우 생성 후 WM_CRETATE. WM_GETMINMAXINFO, WM_NCCREATE 메시지를 해당 윈도우로 차례대로 보내주며 WS_VISIBLE 스타일이 지정되어 있을 경우 윈도우를 보여주고 활성화시키기 위한 모든 동작을 하며 관련 메시지를 보내준다.

예제 1

다음 예제는 메인 윈도우, 차일드 윈도우, 팝업 윈도우를 각각 생성한다.

	// 팝업 윈도우의 윈도우 클래스를 등록한다.
	WndClass.hbrBackground=(HBRUSH)GetStockObject(LTGRAY_BRUSH);
	WndClass.lpfnWndProc=(WNDPROC)WndProcPopup;
	WndClass.lpszClassName="mypopup";
	RegisterClass(&WndClass);

	hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
		NULL,(HMENU)NULL,hInstance,NULL);
	ShowWindow(hWnd,nCmdShow);
	hWndMain=hWnd;
	
	while(GetMessage(&Message,0,0,0)) {
		TranslateMessage(&Message);
		DispatchMessage(&Message);
	}
	return Message.wParam;
}

HWND hPopup=NULL;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch(iMessage) {
	case WM_CREATE:
		CreateWindow("button","차일드 컨트롤",WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
			20,20,150,30,hWnd,(HMENU)0,g_hInst,NULL);
		return 0;
	case WM_LBUTTONDOWN:
		if (hPopup)
			return 0;
		hPopup=CreateWindow("mypopup","팝업 윈도우",WS_POPUPWINDOW | WS_CAPTION,
			100,100,320,200,hWnd,(HMENU)0,g_hInst,NULL);
		ShowWindow(hPopup,SW_SHOW);
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

LRESULT CALLBACK WndProcPopup(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;
	char str[]="팝업 윈도우입니다";

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,str,lstrlen(str));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		hPopup=NULL;
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

WinMain에서 오버랩드 윈도우와 팝업 윈도우의 윈도우 클래스를 등록하였고 메인 윈도우가 생성될 때 버튼 차일으 윈도우를 생성하였다. 마우스 왼쪽 버튼을 누르면 팝업 윈도우를 만든다.

 

참고함수

DestroyWindow : 윈도우를 파괴한다.

CreateWindowEx, ShowWindow, MoveWindow

플렛폼 95이상
참조  
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

MessageBox

원형 int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType);
원형 int CWnd::MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
인수

▶hWnd : 부모 윈도우의 핸들. 메시지 박스의 이 윈도우의 모달 대화상자로 열린다. 부모 윈도우가 없을 경우 NULL로 지정할 수 있다.

▶lpText : 메시지 내용을 나타내는 널 종료 문자열. 이 문자열은 ANSI 문자열일 수도 있고 유니코드 문자열일 수도 있는데 어떤 포맷이라도 메시지 출력이 가능하다.

▶lpCaption : 메시지 박스의 타이틀 바에 나타날 문자열. NULL일 경우 디폴트로 Error(한글 윈도우즈에서는 오류)가 표시된다.

▶uType : 메시지 박스에 나타날 버튼의 종류와 아이콘 모양, 동작 방식을 지정한다. 다음 여러 그룹의 플래그 조합을 지정할 수 있다.

그룹 1 - 메시지 박스에 나타날 버튼의 종류를 지정한다.

플래그 나타나는 버튼들
MB_ABORTRETRYIGNORE
MB_OK
MB_OKCANCEL
MB_RETRYCANCEL
MB_YESNO
MB_YESNOCANCEL

그룹 2 - 메시지 박스에 나타날 아이콘을 지정한다.

플래그 아이콘
MB_ICONEXCLAMATION, MB_ICONWARNING
MB_ICONINFORMATION, MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP, MB_ICONERROR, MB_ICONHAND

그룹 3 - 디폴트 버튼을 지정한다.

플래그 디폴트 버튼
MB_DEFBUTTON1

첫번째 버튼이 디폴트 버튼이 된다. 별다른 지정이 없으면 이 플래그가 선택된다.

MB_DEFBUTTON2 두번째 버튼이 디폴트 버튼이 된다.
MB_DEFBUTTON3 세두번째 버튼이 디폴트 버튼이 된다.
MB_DEFBUTTON4 네번째 버튼이 디폴트 버튼이 된다.

그룹 4 - 대화상자의 모달 여부를 지정한다.

플래그 설명
MB_APPMODAL

hWnd 윈도우의 모달 대화상자로 열리므로 메시지 박스를 닫기 전에는 같은 스레드에 속한 다른 윈도우로 전환할 수 없다. 그러나 다른 스레드의 윈도우로 전환할 수는 있으며 팝업 윈도우로도 전환할 수 있다. 아무 플래그도 지정되지 않으면 이 모드가 디폴트로 적용된다.

MB_SYSTEMMODAL

MB_APPMODAL과 동일하되 항상 위 스타일을 가져 모든 윈도우보다 위에 배치된다. 메모리 부족 등의 긴급한 상황을 알리고자 할 때 이 플래그를 사용한다.

MB_TASKMODAL

MS_APPMODAL과 동일하되 hWnd가 NULL일 경우 현재 스레드에 속한 모든 최상위 윈도우가 사용 금지된다는 점이 다르다. DLL이나 라이브러리에서 부모 윈도우로 지정할만한 윈도우가 없을 때 이 플래그를 사용한다.

그룹 5 - 기타 몇가지 옵션을 지정한다.

플래그 설명
MB_DEFAULT_DESKTOP_ONLY 사용자가 로그온안 후 응용 프로그램이 실행되고 있는 디폴트 데스크 탑인 경우만 메시지 박스가 나타나도록 한다.
MB_HELP 도움말 버튼을 보여준다. 이 버튼을 누르거나 F1키를 누르면 Help 이벤트가 발생한다.
MB_RIGHT 메시지를 오른쪽으로 정렬한다.
MB_RTLREADING 아랍이나 헤브루 윈도우즈에서 오른쪽에서 왼쪽 읽기로 출력한다. 한글 윈도우즈에서는 의미가 없다.
MB_SETFOREGROUND 메시지 박스를 포그라운드 윈도우로 만든다. 시스템은 내부적으로 SetForegroundWindow 함수를 호출한다.
MB_TOPMOST 항상 위 옵션으로 메시지 박스를 생성한다.
MB_SERVICE_NOTIFICATION NT의 서비스 프로그램만 사용할 수 있는 플래그이다. 현재 로긴한 사용자가 없더라도 액티브되어 있는 데스크 탑에 메시지 박스를 출력한다. 이 경우 hWnd는 반드시 NULL이어야 한다.
MB_SERVICE_NOTIFICATION_NT3X MB_SERVICE_NOTIFICATION와 동일하되 NT 3.51버전에서 사용한다.
리턴

메시지 박스를 생성할 메모리가 부족할 경우 0을 리턴한다. 그 외의 경우 사용자가 누른 버튼의 ID를 리턴한다.

리턴값 버튼
IDABORT 중단 버튼을 눌렀다.
IDCANCEL 취소 버튼을 눌렀다. Esc키를 눌러 대화상자를 닫을 때도 이 값이 리턴된다.
IDIGNORE 무시 버튼을 눌렀다.
IDNO 아니오 버튼을 눌렀다.
IDOK 확인 버튼을 눌렀다.
IDRETRY 재시도 버튼을 눌렀다.
IDYES 예 버튼을 눌렀다.

 

설명

메시지 박스는 응용 프로그램이 사용자와 대화할 수 있는 가장 간단한 방법이다. 짧은 메시지와 함께 MB_OK 플래그로 간단하게 전달 사항만 전달하는 것이 보편적이다.

MessageBox(hWnd,"야! 신난다.","알림",MB_OK);

위 코드는 짧은 문자열을 보여준다. 여러 줄의 긴 메시지를 출력할 때는 다음과 같이 문자열 중간에 개행 코드를 삽입해 주면 된다.

MessageBox(hWnd,
	"동해물과 백두산이 마르고 닳도록 하느님이 보우하사 우리나라 만세\r\n"
	"남산 위의 저 소나무 철갑을 두른 듯 바람서리 불변함을 우리 기상일세\r\n"
	"가을 하늘 공활한데 높고 구름없이 밝은 달은 우리 가슴 일편 단심일세\r\n"
	"이 기상과 이 맘으로 충성을 다하여 괴로우나 즐거우나 나라 사랑하세",
	"애국가",MB_OK);

다음 코드는 메시지 박스로 사용자에게 질문을 하는 예이다. 질문에 응답한 결과를 조사하여 다른 처리를 하고자 할 때도 메시지 박스를 사용할 수 있다.

if (MessageBox(hWnd,"WinApi에 자주 오십니까?","질문",MB_YESNO)==IDYES) {
	// 자주 올 때의 처리
} else {
	// 그렇지 않을 때의 처리
}

또한 메시지 박스는 디버깅 중에 제어의 흐름을 감시하거나 변수의 값을 간단하게 살펴보고자 할 때도 자주 사용된다. 원하는 변수값을 wsprintf 등의 함수로 조립한 후 화면으로 출력하면 실행중에 변수값을 확인할 수 있다.

참고함수 MessageBoxEx, MessageBeep
플렛폼 95이상
참조  
저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License

+ Recent posts

티스토리 툴바