System.Windows.Forms.Control 클래스는 Invoke() 메서드를 포함하고 있다. 닷넷의 GUI 컴포넌트들은 Control 클래스를 상속받아 구현되었으므로 [Windows 응용 프로그램] 템플릿으로 작성된 윈폼 멀티 스레드 프로그램에서 인보크를 사용할 수 있다. 스레드에서 Invoke()는 컨트롤 내부에 있는 특정 구문을 실행할 때 사용된다.

Snap1.png


'ByteCode > C#' 카테고리의 다른 글

Attribute  (1) 2010.03.18
Event  (1) 2010.03.18
파일 관리  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18

1) File 클래스

파일을 관리하는 클래스

static 메서드 만을 가진 static 클래스


메서드

Copy(string source, string dest, bool overwrite)

Delete(string path)

Move(string source, string dest)

bool Exists(string path)

FileAttributes GetAtrributes(string path)

DataTime GetCreationTime(string path)

SetCreationTime(string path, DataTime creationTime)


2) FileInfo 클래스

sealed 클래스로 하나의 파일에 관련된 클래스

생성자에게 파일의 경로 및 파일명을 넘겨주면 됩니다.

File 클래스의 메서드와 중복된 경우가 많은데 일반적으로 첫번째 인자가 생략되면 됩니다.


Refresh(): 파일 새로 고침


프로퍼티

Directory: 부모 디렉토리의 정보

DirectoryName: 부모 디렉토리의 경로

'ByteCode > C#' 카테고리의 다른 글

Event  (1) 2010.03.18
Invoke 개념 이해하기  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18
이미지 크기 변환  (0) 2010.03.18

1)Directory 클래스

디렉토리 클래스도 static 클래스 입니다.

메서드

DirectoryInfo CreateDirectory(string path)

Delete(string path, bool recursive)

Move(string source, string dest)

bool Exists(string path)

string[] GetFiles(string path, string pattern, SearchOption Option)

pattern은 생략가능하며 “필터링할 조건

Option은 하위 디렉토리 검사여부로 TopDirectoryOnly이면 path만 검사하고 AllDirectories이면 서브 디렉토리 까지 검사

string[] GetDirectories(string path, string pattern, SearchOption Option)

디렉토리 검사

string[] GetFileSystemEntries(string path, string Pattern)

파일과 디렉토리 모두 검사


예제) C드라이브의 폴더와 디렉토리 그리고 txt 파일 검색

1. 폼에 리스트 박스 1개와 버튼 2개 배치

모두 검색과 txt 검색


2. 모두 검색 버튼의 Click 이벤트 작성

listBox1.Items.Clear();

string[] Files = Directory.GetFileSystemEntries("C:\\");

foreach (string Name in Files)

{

listBox1.Items.Add(Name);

}


3. txt 파일 검색

listBox1.Items.Clear();

string[] Files = Directory.GetFiles("C:\\Windows","*.txt",SearchOption.AllDirectories);

foreach (string Name in Files)

listBox1.Items.Add(Name);


2) FileSystemWatchar

운영체제의 파일시스템 변화를 통지하는 컴포넌트


생성자

public FileSystemWatcher(string path, string filter)


변화 감지를 위한 프로퍼티

NotifyFilter 프로퍼티에 OR 연산자를 이용해 아래 값들을 설정

Attributes: 파일 또는 폴더의 속성 변화

CreateTime, DirectoryName, FileName, LastAccess, LastWrite, Security, Size


서브 디렉토리까지 감시하고자 할 때는 IncludeSubdirectories 프로퍼티를 true로 설정


예제)

1. 폼에 FileSystemWatcher 컨트롤 1개 배치


2. 프로퍼티 변경

Path C:\로 설정

IncludeSubdirectories true로 설정


3. fileSystemWatcher1 Changed 이벤트 작성

listBox1.Items.Add("파일이나 폴더가 변경되었습니다.");


4. fileSystemWatcher1 Created 이벤트 작성

listBox1.Items.Add("파일이나 폴더가 추가되었습니다.");


5. fileSystemWatcher1 Deleted 이벤트 작성

listBox1.Items.Add("파일이나 폴더가 삭제되었습니다.");


6. fileSystemWatcher1 Renamed 이벤트 작성

listBox1.Items.Add("파일이나 폴더의 이름이 변경되었습니다.");

'ByteCode > C#' 카테고리의 다른 글

Invoke 개념 이해하기  (0) 2010.03.18
파일 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18
이미지 크기 변환  (0) 2010.03.18
ListView 마우스 더블클릭 정보 얻기  (0) 2010.03.18

드롭을 받는 컨트롤은 Allow&Drop 프로퍼티를 true로 변경해야 합니다.

드래그앤드롭을 받는 방법

드래그 시작 메서드

DragDropEffects DoDragDrop(Object data, DragDropEffects allowedEffects)

Data는 드래그되는 대상입니다.

allowedEffects는 드롭할 때 어떤 동작을 행하는 가를 지정하는 플래그의 조합입니다.

Copy, Move, Link, Scroll, All, None 등이 있습니다.

이 메서드의 리턴값은 허용한 동작의 값입니다.


드래그 중에 드롭을 받을 컨트롤에 발생하는 이벤트

DragEnter: 컨트롤 안에 최초로 들어왔을 때 발생 – 드롭을 받기위한 준비 작업


DragOver: 컨트롤위에서 마우스 이동 시 발생

DragEventArgs객체가 넘어옵니다.

X, Y: 좌표

Data: 드래그 되고 있는 객체입니다.

KeyState: 마우스와 키보드의 조합(왼쪽(1), 오른쪽(2), Shift(4), Ctrl(8), 가운데(16), Alt(32))입니다.

AllowedEffect: 드래그를 시작한 곳에서 허용한 동작

Effects: 드롭을 할 때 취할 동작으로 마우스 커서의 모양이 변경됩니다.


DragLeave: 컨트롤의 범위를 벗어날 때 발생하는 이벤트


DragDrop: 컨트롤 위에서 마우스를 해제할 때 발생하는 이벤트로 DragOver와 매개변수가 동일합니다.


드래그를 한 원본에서는 QueryContinueDrag 이벤트가 발생합니다.

이 때는 매개변수로 QueryContinueDragEventArgs의 객체가 넘어오는데 이 객체에는 아래와 같은 멤버가 포함됩니다.

Action: 연결된 끌어서 놓기 작업의 현재 상태를 가져오거나 설정합니다.

EscapePressed: Esc 키를 눌렀는지 여부를 나타내는 부울 값을 가져옵니다.

KeyStates: Shift, Ctrl  Alt 키의 현재 상태와 마우스 단추의 상태를 나타내는 플래그 열거형을 가져옵니다.

Source:이벤트를 발생시킨 개체에 대한 참조를 가져오거나 설정합니다.

예제1) 2개의 리스트 박스에서 드래그앤 드랍 처리

1. 폼에 2개의 리스트 박스를 배치

왼쪽 리스트박스에 적당히 데이터를 입력합니다.

국어, 영어, 수학, 물리


2. 오른쪽의 리스트 박스의 AllowDrop 속성을 true로 설정합니다.


3. 왼쪽 리스트 박스의 MouseDown 이벤트 작성

Graphics DC = CreateGraphics();

DragDropEffects effect;

int index = listBox1.IndexFromPoint(e.X, e.Y);

if (index != ListBox.NoMatches)

{

DC.DrawString("드래그 시작", Font, Brushes.Black, 0, 0);

string item = (string)listBox1.Items[index];

effect = DoDragDrop(item, DragDropEffects.Copy | DragDropEffects.Move);

if (effect == DragDropEffects.Move)

{

listBox1.Items.RemoveAt(index);

}

DC.Dispose();

}


4. 왼쪽 리스트 박스의 QueyContinueDrag 이벤트에 작성

if (e.EscapePressed)

e.Action = DragAction.Cancel;


5. 오른쪽 리스트 박스의 DragOver 이벤트 작성

if (e.Data.GetDataPresent(DataFormats.StringFormat))

{

if ((e.KeyState & 8) != 0)

{

e.Effect = DragDropEffects.Copy;

}

else

{

e.Effect = DragDropEffects.Move;

}

}


6. 오른쪽 리스트 박스의 DragDrop 이벤트에 작성

if (e.Data.GetDataPresent(DataFormats.StringFormat))

{

listBox2.Items.Add(e.Data.GetData(DataFormats.StringFormat));

}


예제2) 파일 드래그 앤 드랍

1. 폼에 레이블 2개와 텍스트 박스와 PictureBox를 배치

텍스트 박스의 MultiLine 속성을 true로 변경

텍스트 박스와 폼의 AllowedDrop 속성을 true로 변경


2. 텍스트 상자의 DragOver 이벤트 작성

if (e.Data.GetDataPresent(DataFormats.FileDrop))

{

e.Effect = DragDropEffects.Move;

}


3. 텍스트 상자의 DrapDrop 이벤트 작성

if (e.Data.GetDataPresent(DataFormats.FileDrop))

{

string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

foreach (string file in files)

{

textBox1.Text+= file + "\r\n";

}

}


4. 폼의 DragOver 이벤트 작성

if (e.Data.GetDataPresent(DataFormats.FileDrop))

{

e.Effect = DragDropEffects.Move;

}


5. 폼의 DrapDrop 이벤트 작성

if (e.Data.GetDataPresent(DataFormats.FileDrop))

{

string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);

pictureBox1.Image = Image.FromFile(files[0]);

}

'ByteCode > C#' 카테고리의 다른 글

파일 관리  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
이미지 크기 변환  (0) 2010.03.18
ListView 마우스 더블클릭 정보 얻기  (0) 2010.03.18
시간 구하기  (0) 2010.03.18

Snap21.png

'ByteCode > C#' 카테고리의 다른 글

파일 관리  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18
ListView 마우스 더블클릭 정보 얻기  (0) 2010.03.18
시간 구하기  (0) 2010.03.18

'ByteCode > C#' 카테고리의 다른 글

파일 관리  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18
이미지 크기 변환  (0) 2010.03.18
시간 구하기  (0) 2010.03.18

[출처] [C#] DateTime 클래스 활용|작성자 니나다


// 프로그램 시작시간
DateTime startTime = DateTime.Now;

// 1. 현재시간
DateTime now;
now = DateTime.Now;

Console.WriteLine(now); // 현재시간 전체
Console.WriteLine(now.Year); // 현재 년도
Console.WriteLine(now.Month); // 현재 달
Console.WriteLine(now.Day); // 현재 일
Console.WriteLine(now.DayOfWeek); // 현재 주
Console.WriteLine(now.DayOfYear); // 1년중 몇일째인지
Console.WriteLine(now.TimeOfDay); // 금일 자정부터 몇시간
Console.WriteLine(now.Hour); // 시간
Console.WriteLine(now.Minute); // 분
Console.WriteLine(now.Second); // 초
Console.WriteLine(now.Millisecond); // 1000분의 1초

Console.WriteLine(now.Ticks); // 1000분의 1초

// 2. 임의시간 설정
DateTime birthday;
birthday = DateTime.Parse("2009년8월9일");// 시분초 미지정시 자정으로
birthday = DateTime.Parse("2009/08/09");

Console.WriteLine(birthday);

DateTime xmas;
xmas =newDateTime(2008,12,25,0,0,0);

Console.WriteLine(xmas);

// 3. 연산

// 3.1 오늘 + 100일
now = DateTime.Now;
DateTime result = now.AddDays(100);// 각 단위별 add메소드가 존재 MSDN참고

Console.WriteLine(result);

// 3.2 크리스마스까지 남은 날
TimeSpan result2 = xmas - now;
Console.WriteLine(result2);
Console.WriteLine(result2.Days); // NNN일 (내림표현)
Console.WriteLine(result2.TotalDays); // NNN.NNNNNNN일 (더정확)

// 3.3 오늘 - 100일
Console.WriteLine(now - TimeSpan.FromDays(100));
Console.WriteLine(now.AddDays(-100));

// 4. 날짜시간 출력형식 지정
Console.WriteLine(now.ToLocalTime()); // 2008-08-08 오전 10:31:25

Console.WriteLine(now.ToLongDateString()); // 2008년 8월 8일 금요일
Console.WriteLine(now.ToShortDateString()); // 2008-08-08

Console.WriteLine(now.ToLongTimeString()); // 오전 10:31:25
Console.WriteLine(now.ToShortTimeString());// 오전 10:31

// 프로그램 종료시간
DateTime endTime = DateTime.Now;

Console.WriteLine("프로그램 수행시간 : {0}/ms", (double)(endTime - startTime).Ticks /1000000.0F);

'ByteCode > C#' 카테고리의 다른 글

파일 관리  (0) 2010.03.18
디렉토리 관리  (0) 2010.03.18
드래그앤 드랍  (0) 2010.03.18
이미지 크기 변환  (0) 2010.03.18
ListView 마우스 더블클릭 정보 얻기  (0) 2010.03.18
런타임시 DLL 호출및익스포트함수호출

런타임시동적연결방법은일반적으로다음과같은순서로작성한다.

임포트될함수의원형을선언한다.
DLL을로드한다.
호출하고자하는익스포트함수포인터를얻는다.
함수포인터로함수를호출한다.
DLL을해제한다.

typedef void* (*pDllFunc)(); // 임포트될함수의형
HINSTANCE m_hModule = LoadLibrary( "..\\debug\\DLL01.dll" ); // DLL 로드
pFunc = ( pDllFunc )GetProcAddress( m_hModule, "MyExportFunction" ); // 함수포인터를받음
CMyObject *pObject = ( CMyObject * )pFunc(); // 함수를이용하여객체를받는다.
FreeLibrary( hModule );

Ex) MyExportFunction 의원형
__declspec( dllexport ) void *CMyObject()
{
return new CMyObject;

'NativeCode > api' 카테고리의 다른 글

Win Version & Macro  (0) 2010.03.18
사용법  (0) 2010.03.18
Hooking  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18

HHOOK Mhook = NULL;

Mhook = SetWindowsHookEx(WH_MOUSE_LL   ,Mhookproc, theApp.m_hInstance,NULL);


//후킹 프로시저로 연결, 마우스를 로우레벨로 후킹해서 전역으로 뿌려주겠다

LRESULT CALLBACK Mhookproc(int ncode,WPARAM wparam,LPARAM lparam)

{

if(ncode>=0)

{  

if(wparam == WM_LBUTTONDOWN)

{//..}

return ( CallNextHookEx(Khook,ncode,wparam,lparam) );

}

}


//후킹된 마우스 메세지는 반드시 이 루틴을 거치는데 wparm을 체크해서 하고 싶은 것으로 바꾸면 된다.

'NativeCode > api' 카테고리의 다른 글

사용법  (0) 2010.03.18
LoadLibrary  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18
모든 API 함수 목록  (0) 2010.03.18

HWND hWnd = ::FindWindow( NULL, TEXT( "Server01" ) );


자신의핸들 HINSTANCE AfxGetInstanceHandle();

'NativeCode > api' 카테고리의 다른 글

LoadLibrary  (0) 2010.03.18
Hooking  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18
모든 API 함수 목록  (0) 2010.03.18
ShellExecuteEx  (0) 2010.03.18

ExitWindowsEx(EWX_FORCE,   0); // 강제종료

ExitWindowsEx(EWX_LOGOFF,  0); // 로그오프

ExitWindowsEx(EWX_POWEROFF,0);    // 셧다운후시스템끄기

ExitWindowsEx(EWX_REBOOT,  0); // 재부팅

ExitWindowsEx(EWX_SHUTDOWN,0);   // 셧다운


원본 위치 <http://kurapa.com/content-a1969>


'NativeCode > api' 카테고리의 다른 글

Hooking  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
모든 API 함수 목록  (0) 2010.03.18
ShellExecuteEx  (0) 2010.03.18
콘솔창 생성  (0) 2010.03.18

Win32 API 함수의 목록입니다. 총 개수는 1946개입니다. 
공통 컨트롤, ODBC, C-Run time 함수 등은 제외된 개수입니다.

밑줄-9개
_hread
_hwrite
_lclose
_lcreat
_llseek
_lopen
_lread
_lwrite
_TrackMouseEvent

A-71개
AbnormalTermination
AbortDoc
AbortPath
AbortPrinter
AbortProc
AbortSystemShutdown
AccessCheck
AccessCheckAndAuditAlarm
AccessCheckByType
AccessCheckByTypeAndAuditAlarm 
AccessCheckByTypeResultList 
AccessCheckByTypeResultListAnd-
AuditAlarm 
AccessCheckByTypeResultListAnd-
AuditAlarmByHandle 
ActivateKeyboardLayout 
AddAccessAllowedAce 
AddAccessAllowedAceEx 
AddAccessAllowedObjectAce 
AddAccessDeniedAce 
AddAccessDeniedAceEx 
AddAccessDeniedObjectAce 
AddAce 
AddAtom 
AddAuditAccessAce 
AddAuditAccessAceEx 
AddAuditAccessObjectAce 
AddFontMemResourceEx 
AddFontResource 
AddFontResourceEx 
AddForm 
AddJob 
AddMonitor 
AddPort 
AddPrinter 
AddPrinterConnection 
AddPrinterDriver 
AddPrinterDriverEx 
AddPrintProcessor 
AddPrintProvidor 
AddUsersToEncryptedFile 
AdjustTokenGroups 
AdjustTokenPrivileges 
AdjustWindowRect 
AdjustWindowRectEx 
AdvancedDocumentProperties 
AllocateAndInitializeSid 
AllocateLocallyUniqueId 
AllocateUserPhysicalPages 
AllocConsole 
AllowSetForegroundWindow 
AlphaBlend 
AngleArc 
AnimatePalette 
AnimateWindow 
AnsiLower 
AnsiLowerBuff 
AnsiNext 
AnsiPrev 
AnsiToOem 
AnsiToOemBuff 
AnsiUpper 
AnsiUpperBuff 
AnyPopup 
AppendMenu 
Arc 
ArcTo 
AreAllAccessesGranted 
AreAnyAccessesGranted 
AreFileApisANSI 
ArrangeIconicWindows 
AssignProcessToJobObject 
AttachThreadInput

B-24개
BackupEventLog
BackupRead
BackupSeek
BackupWrite
Beep
BeginDeferWindowPos
BeginPaint
BeginPath
BeginUpdateResource
BindIoCompletionCallback
BitBlt
BlockInput
BringWindowToTop
BroadcastSystemMessage
BuildCommDCB
BuildCommDCBAndTimeouts
BuildExplicitAccessWithName
BuildImpersonateExplicitAccessWithName
BuildImpersonateTrustee
BuildSecurityDescriptor
BuildTrusteeWithName
BuildTrusteeWithObjectsAndName
BuildTrusteeWithObjectsAndSid
BuildTrusteeWithSid

C-168개
CallMsgFilter
CallNamedPipe
CallNextHookEx
CallWindowProc
CallWndProc
CallWndRetProc
CancelDC
CancelIo
CancelWaitableTimer
CascadeWindows
CBTProc
CCHookProc
CFHookProc
ChangeClipboardChain
ChangeDisplaySettings
ChangeDisplaySettingsEx
ChangeServiceConfig
ChangeServiceConfig2
ChangeTimerQueueTimer
CharLower
CharLowerBuff
CharNext
CharNextExA
CharPrev
CharPrevExA
CharToOem
CharToOemBuff
CharUpper
CharUpperBuff
CheckDlgButton
CheckMenuItem
CheckMenuRadioItem
CheckRadioButton
CheckTokenMembership
ChildWindowFromPoint
ChildWindowFromPointEx
ChooseColor
ChooseFont
Chord
ClearCommBreak
ClearCommError
ClearEventLog
ClientToScreen
ClipCursor
CloseClipboard
CloseDesktop
CloseEnhMetaFile
CloseEventLog
CloseFigure
CloseHandle
CloseMetaFile
ClosePrinter
CloseServiceHandle
CloseWindow
CloseWindowStation
CombineRgn
CombineTransform
CommandLineToArgvW
CommConfigDialog
CommDlgExtendedError
CompareFileTime
CompareString
ConfigurePort
ConnectNamedPipe
ConnectToPrinterDlg
ContinueDebugEvent
ControlService
ConvertDefaultLocale
ConvertSecurityDescriptorToString-
SecurityDescriptor
ConvertSidToStringSid
ConvertStringSecurityDescriptorTo-
SecurityDescriptor
ConvertStringSidToSid
ConvertThreadToFiber
ConvertToAutoInheritPrivateObjectSecurity
CopyAcceleratorTable
CopyCursor
CopyEnhMetaFile
CopyFile
CopyFileEx
CopyIcon
CopyImage
CopyLZFile
CopyMemory
CopyMetaFile
CopyProgressRoutine
CopyRect
CopySid
CountClipboardFormats
CreateAcceleratorTable
CreateBitmap
CreateBitmapIndirect
CreateBrushIndirect
CreateCaret
CreateCompatibleBitmap
CreateCompatibleDC
CreateConsoleScreenBuffer
CreateCursor
CreateDC
CreateDesktop
CreateDialog
CreateDialogIndirect
CreateDialogIndirectParam
CreateDialogParam
CreateDIBitmap
CreateDIBPatternBrush
CreateDIBPatternBrushPt
CreateDIBSection
CreateDirectory
CreateDirectoryEx
CreateDiscardableBitmap
CreateEllipticRgn
CreateEllipticRgnIndirect
CreateEnhMetaFile
CreateEnvironmentBlock
CreateEvent
CreateFiber
CreateFile
CreateFileMapping
CreateFont
CreateFontIndirect
CreateFontIndirectEx
CreateHalftonePalette
CreateHardLink
CreateHatchBrush
CreateIC
CreateIcon
CreateIconFromResource
CreateIconFromResourceEx
CreateIconIndirect
CreateIoCompletionPort
CreateJobObject
CreateMailslot
CreateMDIWindow
CreateMenu
CreateMetaFile
CreateMutex
CreateNamedPipe
CreatePalette
CreatePatternBrush
CreatePen
CreatePenIndirect
CreatePipe
CreatePolygonRgn
CreatePolyPolygonRgn
CreatePopupMenu
CreatePrivateObjectSecurity
CreatePrivateObjectSecurityEx
CreateProcess
CreateProcessAsUser
CreateProcessWithLogonW
CreateRectRgn
CreateRectRgnIndirect
CreateRemoteThread
CreateRestrictedToken
CreateRoundRectRgn
CreateScalableFontResource
CreateSemaphore
CreateService
CreateSolidBrush
CreateTapePartition
CreateThread
CreateTimerQueue
CreateTimerQueueTimer
CreateToolhelp32Snapshot
CreateWaitableTimer
CreateWindow
CreateWindowEx
CreateWindowStation

D-116개
DdeAbandonTransaction
DdeAccessData
DdeAddData
DdeCallback
DdeClientTransaction
DdeCmpStringHandles
DdeConnect
DdeConnectList
DdeCreateDataHandle
DdeCreateStringHandle
DdeDisconnect
DdeDisconnectList
DdeEnableCallback
DdeFreeDataHandle
DdeFreeStringHandle
DdeGetData
DdeGetLastError
DdeImpersonateClient
DdeInitialize
DdeKeepStringHandle
DdeNameService
DdePostAdvise
DdeQueryConvInfo
DdeQueryNextServer
DdeQueryString
DdeReconnect
DdeSetQualityOfService
DdeSetUserHandle
DdeUnaccessData
DdeUninitialize
DebugActiveProcess
DebugBreak
DebugProc
DecryptFile
DefDlgProc
DeferWindowPos
DefFrameProc
DefHookProc
DefineDosDevice
DefineHandleTable
DefMDIChildProc
DefWindowProc
DeleteAce
DeleteAtom
DeleteCriticalSection
DeleteDC
DeleteEnhMetaFile
DeleteFiber
DeleteFile
DeleteForm
DeleteMenu
DeleteMetaFile
DeleteMonitor
DeleteObject
DeletePort
DeletePrinter
DeletePrinterConnection
DeletePrinterData
DeletePrinterDataEx
DeletePrinterDriver
DeletePrinterDriverEx
DeletePrinterKey
DeletePrintProcessor
DeletePrintProvidor
DeleteProfile
DeleteService
DeleteTimerQueue
DeleteTimerQueueEx
DeleteTimerQueueTimer
DeleteVolumeMountPoint
DeregisterEventSource
DestroyAcceleratorTable
DestroyCaret
DestroyCursor
DestroyEnvironmentBlock
DestroyIcon
DestroyMenu
DestroyPrivateObjectSecurity
DestroyWindow
DeviceCapabilities
DeviceIoControl
DialogBox
DialogBoxIndirect
DialogBoxIndirectParam
DialogBoxParam
DialogProc
DisableThreadLibraryCalls
DisconnectNamedPipe
DispatchMessage
DlgDirList
DlgDirListComboBox
DlgDirSelectComboBoxEx
DlgDirSelectEx
DllMain
DnsHostnameToComputerName
DocumentProperties
DosDateTimeToFileTime
DPtoLP
DragDetect
DrawAnimatedRects
DrawCaption
DrawEdge
DrawEscape
DrawFocusRect
DrawFrameControl
DrawIcon
DrawIconEx
DrawMenuBar
DrawState
DrawStateProc
DrawText
DrawTextEx
DuplicateHandle
DuplicateIcon
DuplicateToken
DuplicateTokenEx

E-116개
EditWordBreakProc
Ellipse
EmptyClipboard
EnableMenuItem
EnableScrollBar
EnableWindow
EncryptFile
EncryptionDisable
EndDeferWindowPos
EndDialog
EndDoc
EndDocPrinter
EndMenu
EndPage
EndPagePrinter
EndPaint
EndPath
EndUpdateResource
EnhMetaFileProc
EnterCriticalSection
EnumCalendarInfo
EnumCalendarInfoEx
EnumCalendarInfoProc
EnumCalendarInfoProcEx
EnumChildProc
EnumChildWindows
EnumClipboardFormats
EnumCodePagesProc
EnumDateFormats
EnumDateFormatsEx
EnumDateFormatsProc
EnumDateFormatsProcEx
EnumDependentServices
EnumDesktopProc
EnumDesktops
EnumDesktopWindows
EnumDisplayDevices
EnumDisplayMonitors
EnumDisplaySettings
EnumDisplaySettingsEx
EnumEnhMetaFile
EnumFontFamExProc
EnumFontFamilies
EnumFontFamiliesEx
EnumFontFamProc
EnumFonts
EnumFontsProc
EnumForms
EnumInputContext
EnumJobs
EnumLanguageGroupLocales
EnumLanguageGroupLocalesProc
EnumLanguageGroupsProc
EnumLocalesProc
EnumMetaFile
EnumMetaFileProc
EnumMonitors
EnumObjects
EnumObjectsProc
EnumPorts
EnumPrinterData
EnumPrinterDataEx
EnumPrinterDrivers
EnumPrinterKey
EnumPrinters
EnumPrintProcessorDatatypes
EnumPrintProcessors
EnumProps
EnumPropsEx
EnumRegisterWordProc
EnumResLangProc
EnumResNameProc
EnumResourceLanguages
EnumResourceNames
EnumResourceTypes
EnumResTypeProc
EnumServicesStatus
EnumServicesStatusEx
EnumSystemCodePages
EnumSystemLanguageGroups
EnumSystemLocales
EnumTaskWindows
EnumThreadWindows
EnumThreadWndProc
EnumTimeFormats
EnumTimeFormatsProc
EnumUILanguages
EnumUILanguagesProc
EnumWindows
EnumWindowsProc
EnumWindowStationProc
EnumWindowStations
EqualPrefixSid
EqualRect
EqualRgn
EqualSid
EraseTape
Escape
EscapeCommFunction
ExcludeClipRect
ExcludeUpdateRgn
ExitProcess
ExitThread
ExitWindows
ExitWindowsEx
ExpandEnvironmentStrings
ExpandEnvironmentStringsForUser
ExtCreatePen
ExtCreateRegion
ExtEscape
ExtFloodFill
ExtractAssociatedIcon
ExtractIcon
ExtractIconEx
ExtSelectClipRgn
ExtTextOut

F-65개
FatalAppExit
FatalExit
FiberProc
FileEncryptionStatus
FileIOCompletionRoutine
FileTimeToDosDateTime
FileTimeToLocalFileTime
FileTimeToSystemTime
FillConsoleOutputAttribute
FillConsoleOutputCharacter
FillMemory
FillPath
FillRect
FillRgn
FindAtom
FindClose
FindCloseChangeNotification
FindClosePrinterChangeNotification
FindFirstChangeNotification
FindFirstFile
FindFirstFileEx
FindFirstFreeAce
FindFirstPrinterChangeNotification
FindFirstVolume
FindFirstVolumeMountPoint
FindNextChangeNotification
FindNextFile
FindNextPrinterChangeNotification
FindNextVolume
FindNextVolumeMountPoint
FindResource
FindResourceEx
FindText
FindVolumeClose
FindVolumeMountPointClose
FindWindow
FindWindowEx
FixBrushOrgEx
FlashWindow
FlashWindowEx
FlattenPath
FloodFill
FlushConsoleInputBuffer
FlushFileBuffers
FlushInstructionCache
FlushPrinter
FlushViewOfFile
FoldString
ForegroundIdleProc
FormatMessage
FrameRect
FrameRgn
FreeConsole
FreeDDElParam
FreeEncryptionCertificateHashList
FreeEnvironmentStrings
FreeLibrary
FreeLibraryAndExitThread
FreeModule
FreePrinterNotifyInfo
FreeProcInstance
FreeResource
FreeSid
FreeUserPhysicalPages
FRHookProc

G-404개
GdiComment
GdiFlush
GdiGetBatchLimit
GdiSetBatchLimit
GenerateConsoleCtrlEvent
GetAce
GetAclInformation
GetACP
GetActiveWindow
GetAllUsersProfileDirectory
GetAltTabInfo
GetAncestor
GetArcDirection
GetAspectRatioFilterEx
GetAsyncKeyState
GetAtomName
GetAuditedPermissionsFromAcl
GetBinaryType
GetBitmapBits
GetBitmapDimensionEx
GetBkColor
GetBkMode
GetBoundsRect
GetBrushOrgEx
GetCalendarInfo
GetCapture
GetCaretBlinkTime
GetCaretPos
GetCharABCWidths
GetCharABCWidthsFloat
GetCharABCWidthsI
GetCharacterPlacement
GetCharWidth
GetCharWidth32
GetCharWidthFloat
GetCharWidthI
GetClassInfo
GetClassInfoEx
GetClassLong
GetClassLongPtr
GetClassName
GetClassWord
GetClientRect
GetClipboardData
GetClipboardFormatName
GetClipboardOwner
GetClipboardSequenceNumber
GetClipboardViewer
GetClipBox
GetClipCursor
GetClipRgn
GetColorAdjustment
GetComboBoxInfo
GetCommandLine
GetCommConfig
GetCommMask
GetCommModemStatus
GetCommProperties
GetCommState
GetCommTimeouts
GetCompressedFileSize
GetComputerName
GetComputerNameEx
GetComputerObjectName
GetConsoleCP
GetConsoleCursorInfo
GetConsoleMode
GetConsoleOutputCP
GetConsoleScreenBufferInfo
GetConsoleTitle
GetCPInfo
GetCPInfoEx
GetCurrencyFormat
GetCurrentDirectory
GetCurrentHwProfile
GetCurrentObject
GetCurrentPositionEx
GetCurrentProcess
GetCurrentProcessId
GetCurrentThread
GetCurrentThreadId
GetCurrentTime
GetCursor 
 GetCursorInfo
GetCursorPos
GetDateFormat
GetDC
GetDCBrushColor
GetDCEx
GetDCOrgEx
GetDCPenColor
GetDefaultCommConfig
GetDefaultPrinter
GetDefaultUserProfileDirectory
GetDesktopWindow
GetDeviceCaps
GetDevicePowerState
GetDialogBaseUnits
GetDIBColorTable
GetDIBits
GetDiskFreeSpace
GetDiskFreeSpaceEx
GetDlgCtrlID
GetDlgItem
GetDlgItemInt
GetDlgItemText
GetDoubleClickTime
GetDriveType
GetEffectiveRightsFromAcl
GetEnhMetaFile
GetEnhMetaFileBits
GetEnhMetaFileDescription
GetEnhMetaFileHeader
GetEnhMetaFilePaletteEntries
GetEnvironmentStrings
GetEnvironmentVariable
GetEventLogInformation
GetExceptionCode
GetExceptionInformation
GetExitCodeProcess
GetExitCodeThread
GetExpandedName
GetExplicitEntriesFromAcl
GetFileAttributes
GetFileAttributesEx
GetFileInformationByHandle
GetFileSecurity
GetFileSize
GetFileSizeEx
GetFileTime
GetFileTitle
GetFileType
GetFileVersionInfo
GetFileVersionInfoSize
GetFocus
GetFontData
GetFontLanguageInfo
GetFontUnicodeRanges
GetForegroundWindow
GetForm
GetFreeSpace
GetFullPathName
GetGlyphIndices
GetGlyphOutline
GetGraphicsMode
GetGuiResources
GetGUIThreadInfo
GetHandleInformation
GetIconInfo
GetInputState
GetJob
GetKBCodePage
GetKernelObjectSecurity
GetKerningPairs
GetKeyboardLayout
GetKeyboardLayoutList
GetKeyboardLayoutName
GetKeyboardState
GetKeyboardType
GetKeyNameText
GetKeyState
GetLargestConsoleWindowSize
GetLastActivePopup
GetLastError
GetLastInputInfo
GetLayout
GetLengthSid
GetListBoxInfo
GetLocaleInfo
GetLocalTime
GetLogicalDrives
GetLogicalDriveStrings
GetLongPathName
GetMailslotInfo
GetMapMode
GetMenu
GetMenuBarInfo
GetMenuCheckMarkDimensions
GetMenuDefaultItem
GetMenuInfo
GetMenuItemCount
GetMenuItemID
GetMenuItemInfo
GetMenuItemRect
GetMenuState
GetMenuString
GetMessage
GetMessageExtraInfo
GetMessagePos
GetMessageTime
GetMetaFile
GetMetaFileBitsEx
GetMetaRgn
GetMiterLimit
GetModuleFileName
GetModuleHandle
GetMonitorInfo
GetMouseMovePointsEx
GetMsgProc
GetMultipleTrustee
GetMultipleTrusteeOperation
GetNamedPipeHandleState
GetNamedPipeInfo
GetNamedSecurityInfo
GetNearestColor
GetNearestPaletteIndex
GetNextDlgGroupItem
GetNextDlgTabItem
GetNextWindow
GetNumberFormat
GetNumberOfConsoleInputEvents
GetNumberOfConsoleMouseButtons
GetNumberOfEventLogRecords
GetObject
GetObjectType
GetOEMCP
GetOldestEventLogRecord
GetOpenClipboardWindow
GetOpenFileName
GetOutlineTextMetrics
GetOverlappedResult
GetPaletteEntries
GetParent
GetPath
GetPixel
GetPolyFillMode
GetPrinter
GetPrinterData
GetPrinterDataEx
GetPrinterDriver
GetPrinterDriverDirectory
GetPrintProcessorDirectory
GetPriorityClass
GetPriorityClipboardFormat
GetPrivateObjectSecurity
GetPrivateProfileInt
GetPrivateProfileSection
GetPrivateProfileSectionNames
GetPrivateProfileString
GetPrivateProfileStruct
GetProcAddress
GetProcessAffinityMask
GetProcessDefaultLayout
GetProcessHeap
GetProcessHeaps
GetProcessIoCounters
GetProcessPriorityBoost
GetProcessShutdownParameters
GetProcessTimes
GetProcessVersion
GetProcessWindowStation
GetProcessWorkingSetSize
GetProfileInt
GetProfilesDirectory
GetProfileSection
GetProfileString
GetProfileType
GetProp
GetQueuedCompletionStatus
GetQueueStatus
GetRandomRgn
GetRasterizerCaps
GetRegionData
GetRgnBox
GetROP2
GetSaveFileName
GetScrollBarInfo
GetScrollInfo
GetScrollPos
GetScrollRange
GetSecurityDescriptorControl
GetSecurityDescriptorDacl
GetSecurityDescriptorGroup
GetSecurityDescriptorLength
GetSecurityDescriptorOwner
GetSecurityDescriptorRMControl
GetSecurityDescriptorSacl
GetSecurityInfo
GetServiceDisplayName
GetServiceKeyName
GetShortPathName
GetSidIdentifierAuthority
GetSidLengthRequired
GetSidSubAuthority
GetSidSubAuthorityCount
GetStartupInfo
GetStdHandle
GetStockObject
GetStretchBltMode
GetStringTypeA
GetStringTypeEx
GetStringTypeW
GetSubMenu
GetSysColor
GetSysColorBrush
GetSysModalWindow
GetSystemDefaultLangID
GetSystemDefaultLCID
GetSystemDefaultUILanguage
GetSystemDirectory
GetSystemInfo
GetSystemMenu
GetSystemMetrics
GetSystemPaletteEntries
GetSystemPaletteUse
GetSystemPowerStatus
GetSystemTime
GetSystemTimeAdjustment
GetSystemTimeAsFileTime
GetSystemWindowsDirectory
GetTabbedTextExtent
GetTapeParameters
GetTapePosition
GetTapeStatus
GetTempFileName
GetTempPath
GetTextAlign
GetTextCharacterExtra
GetTextCharset
GetTextCharsetInfo
GetTextColor
GetTextExtentExPoint
GetTextExtentExPointI
GetTextExtentPoint
GetTextExtentPoint32
GetTextExtentPointI
GetTextFace
GetTextMetrics
GetThreadContext
GetThreadDesktop
GetThreadLocale
GetThreadPriority
GetThreadPriorityBoost
GetThreadSelectorEntry
GetThreadTimes
GetTickCount
GetTimeFormat
GetTimeZoneInformation
GetTitleBarInfo
GetTokenInformation
GetTopWindow
GetTrusteeForm
GetTrusteeName
GetTrusteeType
GetUpdateRect
GetUpdateRgn
GetUserDefaultLangID
GetUserDefaultLCID
GetUserDefaultUILanguage
GetUserName
GetUserNameEx
GetUserObjectInformation
GetUserObjectSecurity
GetUserProfileDirectory
GetVersion
GetVersionEx
GetViewportExtEx
GetViewportOrgEx
GetVolumeInformation
GetVolumeNameForVolumeMountPoint
GetVolumePathName
GetWindow
GetWindowDC
GetWindowExtEx
GetWindowInfo
GetWindowLong
GetWindowLongPtr
GetWindowModuleFileName
GetWindowOrgEx
GetWindowPlacement
GetWindowRect
GetWindowRgn
GetWindowsDirectory
GetWindowTask
GetWindowText
GetWindowTextLength
GetWindowThreadProcessId
GetWindowWord
GetWinMetaFileBits
GetWorldTransform
GetWriteWatch
GlobalAddAtom
GlobalAlloc
GlobalCompact
GlobalDeleteAtom
GlobalDiscard
GlobalFindAtom
GlobalFix
GlobalFlags
GlobalFree
GlobalGetAtomName
GlobalHandle
GlobalLock
GlobalLRUNewest
GlobalLRUOldest
GlobalMemoryStatus
GlobalMemoryStatusEx
GlobalReAlloc
GlobalSize
GlobalUnfix
GlobalUnlock
GlobalUnWire
GlobalWire
GradientFill
GrayString


H-20개
Handler
HandlerEx
HandlerRoutine
Heap32First
Heap32ListFirst
Heap32ListNext
Heap32Next
HeapAlloc
HeapCompact
HeapCreate
HeapDestroy
HeapFree
HeapLock
HeapReAlloc
HeapSize
HeapUnlock
HeapValidate
HeapWalk
HideCaret
HiliteMenuItem

I-113개
ImmAssociateContext
ImmAssociateContextEx
ImmConfigureIME
ImmCreateContext
ImmDestroyContext
ImmDisableIME
ImmEnumInputContext
ImmEnumRegisterWord
ImmEscape
ImmGetCandidateList
ImmGetCandidateListCount
ImmGetCandidateWindow
ImmGetCompositionFont
ImmGetCompositionString
ImmGetCompositionWindow
ImmGetContext
ImmGetConversionList
ImmGetConversionStatus
ImmGetDefaultIMEWnd
ImmGetDescription
ImmGetGuideLine
ImmGetIMEFileName
ImmGetImeMenuItems
ImmGetOpenStatus
ImmGetProperty
ImmGetRegisterWordStyle
ImmGetStatusWindowPos
ImmGetVirtualKey
ImmInstallIME
ImmIsIME
ImmIsUIMessage
ImmNotifyIME
ImmRegisterWord
ImmReleaseContext
ImmSetCandidateWindow
ImmSetCompositionFont
ImmSetCompositionString
ImmSetCompositionWindow
ImmSetConversionStatus
ImmSetOpenStatus
ImmSetStatusWindowPos
ImmSimulateHotKey
ImmUnregisterWord
ImpersonateAnonymousToken
ImpersonateDdeClientWindow
ImpersonateLoggedOnUser
ImpersonateNamedPipeClient
ImpersonateSelf
InflateRect
InitAtomTable
InitializeAcl
InitializeCriticalSection
InitializeCriticalSectionAndSpinCount
InitializeSecurityDescriptor
InitializeSid
InitiateSystemShutdown
InitiateSystemShutdownEx
InSendMessage
InSendMessageEx
InsertMenu
InsertMenuItem
Int32x32To64
Int64ShllMod32
Int64ShraMod32
Int64ShrlMod32
InterlockedCompareExchange
InterlockedCompareExchangePointer
InterlockedDecrement
InterlockedExchange
InterlockedExchangeAdd
InterlockedExchangePointer
InterlockedIncrement
IntersectClipRect
IntersectRect
InvalidateRect
InvalidateRgn
InvertRect
InvertRgn
IsBadCodePtr
IsBadHugeReadPtr
IsBadHugeWritePtr
IsBadReadPtr
IsBadStringPtr
IsBadWritePtr
IsCharAlpha
IsCharAlphaNumeric
IsCharLower
IsCharUpper
IsChild
IsClipboardFormatAvailable
IsDBCSLeadByte
IsDBCSLeadByteEx
IsDebuggerPresent
IsDialogMessage
IsDlgButtonChecked
IsIconic
IsMenu
IsProcessorFeaturePresent
IsRectEmpty
IsSystemResumeAutomatic
IsTextUnicode
IsTokenRestricted
IsValidAcl
IsValidCodePage
IsValidLanguageGroup
IsValidLocale
IsValidSecurityDescriptor
IsValidSid
IsWindow
IsWindowEnabled
IsWindowUnicode
IsWindowVisible
IsZoomed

J-2개
JournalPlaybackProc
JournalRecordProc

K-3개
keybd_event
KeyboardProc
KillTimer

L-67개
LCMapString
LeaveCriticalSection
LimitEmsPages
LineDDA
LineDDAProc
LineTo
LoadAccelerators
LoadBitmap
LoadCursor
LoadCursorFromFile
LoadIcon
LoadImage
LoadKeyboardLayout
LoadLibrary
LoadLibraryEx
LoadMenu
LoadMenuIndirect
LoadModule
LoadResource
LoadString
LoadUserProfile
LocalAlloc
LocalCompact
LocalDiscard
LocalFileTimeToFileTime
LocalFlags
LocalFree
LocalHandle
LocalLock
LocalReAlloc
LocalShrink
LocalSize
LocalUnlock
LockFile
LockFileEx
LockResource
LockSegment
LockServiceDatabase
LockSetForegroundWindow
LockWindowUpdate
LockWorkStation
LogonUser
LookupAccountName
LookupAccountSid
LookupIconIdFromDirectory
LookupIconIdFromDirectoryEx
LookupPrivilegeDisplayName
LookupPrivilegeName
LookupPrivilegeValue
LookupSecurityDescriptorParts
LowLevelKeyboardProc
LowLevelMouseProc
LPtoDP
lstrcat
lstrcmp
lstrcmpi
lstrcpy
lstrcpyn
lstrlen
LZClose
LZCopy
LZDone
LZInit
LZOpenFile
LZRead
LZSeek
LZStart

M-38개
MakeAbsoluteSD
MakeProcInstance
MakeSelfRelativeSD
MapDialogRect
MapGenericMask
MapUserPhysicalPages
MapUserPhysicalPagesScatter
MapViewOfFile
MapViewOfFileEx
MapVirtualKey
MapVirtualKeyEx
MapWindowPoints
MaskBlt
MenuItemFromPoint
MessageBeep
MessageBox
MessageBoxEx
MessageBoxIndirect
MessageProc
ModifyMenu
ModifyWorldTransform
Module32First
Module32Next
MonitorEnumProc
MonitorFromPoint
MonitorFromRect
MonitorFromWindow
mouse_event
MouseProc
MoveFile
MoveFileEx
MoveFileWithProgress
MoveMemory
MoveToEx
MoveWindow
MsgWaitForMultipleObjects
MsgWaitForMultipleObjectsEx
MulDiv
MultiByteToWideChar 
N-147개
NetAccessAdd
NetAccessCheck
NetAccessDel
NetAccessEnum
NetAccessGetInfo
NetAccessGetUserPerms
NetAccessSetInfo
NetAlertRaise
NetAlertRaiseEx
NetApiBufferAllocate
NetApiBufferFree
NetApiBufferReallocate
NetApiBufferSize
NetAuditClear
NetAuditRead
NetAuditWrite
NetConfigGet
NetConfigGetAll
NetConfigSet
NetConnectionEnum
NetDfsAdd
NetDfsAddFtRoot
NetDfsAddStdRoot
NetDfsAddStdRootForced
NetDfsEnum
NetDfsGetClientInfo
NetDfsGetInfo
NetDfsManagerInitialize
NetDfsRemove
NetDfsRemoveFtRoot
NetDfsRemoveFtRootForced
NetDfsRemoveStdRoot
NetDfsSetClientInfo
NetDfsSetInfo
NetErrorLogClear
NetErrorLogRead
NetErrorLogWrite
NetFileClose
NetFileClose2
NetFileEnum
NetFileGetInfo
NetGetAnyDCName
NetGetDCName
NetGetDisplayInformationIndex
NetGetJoinableOUs
NetGetJoinInformation
NetGroupAdd
NetGroupAddUser
NetGroupDel
NetGroupDelUser
NetGroupEnum
NetGroupGetInfo
NetGroupGetUsers
NetGroupSetInfo
NetGroupSetUsers
NetJoinDomain
NetLocalGroupAdd
NetLocalGroupAddMember
NetLocalGroupAddMembers
NetLocalGroupDel
NetLocalGroupDelMember
NetLocalGroupDelMembers
NetLocalGroupEnum
NetLocalGroupGetInfo
NetLocalGroupGetMembers
NetLocalGroupSetInfo
NetLocalGroupSetMembers
NetMessageBufferSend
NetMessageNameAdd
NetMessageNameDel
NetMessageNameEnum
NetMessageNameGetInfo
NetQueryDisplayInformation
NetRemoteComputerSupports
NetRemoteTOD
NetRenameMachineInDomain
NetReplExportDirAdd
NetReplExportDirDel
NetReplExportDirEnum
NetReplExportDirGetInfo
NetReplExportDirLock
NetReplExportDirSetInfo
NetReplExportDirUnlock
NetReplGetInfo
NetReplImportDirAdd
NetReplImportDirDel
NetReplImportDirEnum
NetReplImportDirGetInfo
NetReplImportDirLock
NetReplImportDirUnlock
NetReplSetInfo
NetScheduleJobAdd  NetScheduleJobDel
NetScheduleJobEnum 
NetScheduleJobGetInfo
NetSecurityGetInfo
NetServerComputerNameAdd
NetServerComputerNameDel
NetServerDiskEnum
NetServerEnum
NetServerGetInfo
NetServerSetInfo
NetServerTransportAdd
NetServerTransportAddEx
NetServerTransportDel
NetServerTransportEnum
NetServiceControl
NetServiceEnum
NetServiceGetInfo
NetServiceInstall
NetSessionDel
NetSessionEnum
NetSessionGetInfo
NetShareAdd
NetShareCheck
NetShareDel
NetShareEnum
NetShareGetInfo
NetShareSetInfo
NetStatisticsGet
NetUnjoinDomain
NetUseAdd
NetUseDel
NetUseEnum
NetUseGetInfo
NetUserAdd
NetUserChangePassword
NetUserDel
NetUserEnum
NetUserGetGroups
NetUserGetInfo
NetUserGetLocalGroups
NetUserModalsGet
NetUserModalsSet
NetUserSetGroups
NetUserSetInfo
NetValidateName
NetWkstaGetInfo
NetWkstaSetInfo
NetWkstaTransportAdd
NetWkstaTransportDel
NetWkstaTransportEnum
NetWkstaUserEnum
NetWkstaUserGetInfo
NetWkstaUserSetInfo
NotifyBootConfigStatus
NotifyChangeEventLog

O-39개
ObjectCloseAuditAlarm
ObjectDeleteAuditAlarm
ObjectOpenAuditAlarm
ObjectPrivilegeAuditAlarm
OemKeyScan
OemToAnsi
OemToAnsiBuff
OemToChar
OemToCharBuff
OffsetClipRgn
OffsetRect
OffsetRgn
OffsetViewportOrgEx
OffsetWindowOrgEx
OFNHookProc
OFNHookProcOldStyle
OpenBackupEventLog
OpenClipboard
OpenDesktop
OpenEvent
OpenEventLog
OpenFile
OpenFileMapping
OpenIcon
OpenInputDesktop
OpenJobObject
OpenMutex
OpenPrinter
OpenProcess
OpenProcessToken
OpenSCManager
OpenSemaphore
OpenService
OpenThread
OpenThreadToken
OpenWaitableTimer
OpenWindowStation
OutputDebugString
OutputProc

P-48개
PackDDElParam
PagePaintHook
PageSetupDlg
PageSetupHook
PaintDesktop
PaintRgn
PatBlt
PathToRegion
PeekConsoleInput
PeekMessage
PeekNamedPipe
Pie
PlayEnhMetaFile
PlayEnhMetaFileRecord
PlayMetaFile
PlayMetaFileRecord
PlgBlt
PolyBezier
PolyBezierTo
PolyDraw
Polygon
Polyline
PolylineTo
PolyPolygon
PolyPolyline
PolyTextOut
PostAppMessage
PostMessage
PostQueuedCompletionStatus
PostQuitMessage
PostThreadMessage
PrepareTape
PrintDlg
PrintDlgEx
PrinterMessageBox
PrinterProperties
PrintHookProc
PrivilegeCheck
PrivilegedServiceAuditAlarm
Process32First
Process32Next
PropEnumProc
PropEnumProcEx
PtInRect
PtInRegion
PtVisible
PulseEvent
PurgeComm


Q-14개
QueryDosDevice
QueryInformationJobObject
QueryPerformanceCounter
QueryPerformanceFrequency
QueryRecoveryAgentsOnEncryptedFile
QueryServiceConfig
QueryServiceConfig2
QueryServiceLockStatus
QueryServiceObjectSecurity
QueryServiceStatus
QueryServiceStatusEx
QueryUsersOnEncryptedFile
QueueUserAPC
QueueUserWorkItem

R-86개
RaiseException
ReadConsole
ReadConsoleInput
ReadConsoleOutput
ReadConsoleOutputAttribute
ReadConsoleOutputCharacter
ReadDirectoryChangesW
ReadEventLog
ReadFile
ReadFileEx
ReadFileScatter
ReadPrinter
ReadProcessMemory
RealChildWindowFromPoint
RealGetWindowClass
RealizePalette
Rectangle
RectInRegion
RectVisible
RedrawWindow
RegCloseKey
RegConnectRegistry
RegCreateKey
RegCreateKeyEx
RegDeleteKey
RegDeleteValue
RegDisablePredefinedCache
RegEnumKey
RegEnumKeyEx
RegEnumValue
RegFlushKey
RegGetKeySecurity
RegisterClass
RegisterClassEx
RegisterClipboardFormat
RegisterDeviceNotification
RegisterEventSource
RegisterHotKey
RegisterServiceCtrlHandler
RegisterServiceCtrlHandlerEx
RegisterWaitForSingleObject
RegisterWindowMessage
RegLoadKey
RegNotifyChangeKeyValue
RegOpenCurrentUser
RegOpenKey
RegOpenKeyEx
RegOpenUserClassesRoot
RegOverridePredefKey
RegQueryInfoKey
RegQueryMultipleValues
RegQueryValue
RegQueryValueEx
RegReplaceKey
RegRestoreKey
RegSaveKey
RegSetKeySecurity
RegSetValue
RegSetValueEx
RegUnLoadKey
ReleaseCapture
ReleaseDC
ReleaseMutex
ReleaseSemaphore
RemoveDirectory
RemoveFontMemResourceEx
RemoveFontResource
RemoveFontResourceEx
RemoveMenu
RemoveProp
RemoveUsersFromEncryptedFile
ReplaceFile
ReplaceText
ReplyMessage
ReportEvent
RequestWakeupLatency
ResetDC
ResetEvent
ResetPrinter
ResetWriteWatch
ResizePalette
RestoreDC
ResumeThread
ReuseDDElParam
RevertToSelf
RoundRect

S-283개
SaveDC
ScaleViewportExtEx
ScaleWindowExtEx
ScheduleJob
ScreenToClient
ScriptApplyDigitSubstitution
ScriptApplyLogicalWidth
ScriptBreak
ScriptCacheGetHeight
ScriptCPtoX
ScriptFreeCache
ScriptGetCMap
ScriptGetFontProperties
ScriptGetGlyphABCWidth
ScriptGetLogicalWidths
ScriptGetProperties
ScriptIsComplex
ScriptItemize
ScriptJustify
ScriptLayout
ScriptPlace
ScriptRecordDigitSubstitution
ScriptShape
ScriptString_pcOutChars
ScriptString_pLogAttr
ScriptString_pSize
ScriptStringAnalyse
ScriptStringCPtoX
ScriptStringFree
ScriptStringGetLogicalWidths
ScriptStringGetOrder
ScriptStringOut
ScriptStringValidate
ScriptStringXtoCP
ScriptTextOut
ScriptXtoCP
ScrollConsoleScreenBuffer
ScrollDC
ScrollWindow
ScrollWindowEx
SearchPath
SelectClipPath
SelectClipRgn
SelectObject
SelectPalette
SendAsyncProc
SendDlgItemMessage
SendInput
SendMessage
SendMessageCallback
SendMessageTimeout
SendNotifyMessage
ServiceMain
SetAbortProc
SetAclInformation
SetActiveWindow
SetArcDirection
SetBitmapBits
SetBitmapDimensionEx
SetBkColor
SetBkMode
SetBoundsRect
SetBrushOrgEx
SetCalendarInfo
SetCapture
SetCaretBlinkTime
SetCaretPos
SetClassLong
SetClassLongPtr
SetClassWord
SetClipboardData
SetClipboardViewer
SetColorAdjustment
SetCommBreak
SetCommConfig
SetCommMask
SetCommState
SetCommTimeouts
SetComputerName
SetComputerNameEx
SetConsoleActiveScreenBuffer
SetConsoleCP
SetConsoleCtrlHandler
SetConsoleCursorInfo
SetConsoleCursorPosition
SetConsoleMode
SetConsoleOutputCP
SetConsoleScreenBufferSize
SetConsoleTextAttribute
SetConsoleTitle
SetConsoleWindowInfo
SetCriticalSectionSpinCount
SetCurrentDirectory
SetCursor
SetCursorPos
SetDCBrushColor
SetDCPenColor
SetDebugErrorLevel
SetDefaultCommConfig
SetDefaultPrinter
SetDIBColorTable
SetDIBits
SetDIBitsToDevice
SetDlgItemInt
SetDlgItemText
SetDoubleClickTime
SetEndOfFile
SetEnhMetaFileBits
SetEntriesInAcl
SetEnvironmentVariable
SetErrorMode
SetEvent
SetFileApisToANSI
SetFileApisToOEM
SetFileAttributes
SetFilePointer
SetFilePointerEx
SetFileSecurity
SetFileTime
SetFocus
SetForegroundWindow
SetForm
SetGraphicsMode
SetHandleCount
SetHandleInformation
SetInformationJobObject
SetJob
SetKernelObjectSecurity
SetKeyboardState
SetLastError
SetLastErrorEx
SetLayeredWindowAttributes
SetLayout
SetLocaleInfo
SetLocalTime
SetMailslotInfo
SetMapMode
SetMapperFlags
SetMenu
SetMenuDefaultItem
SetMenuInfo
SetMenuItemBitmaps
SetMenuItemInfo
SetMessageExtraInfo
SetMessageQueue
SetMetaFileBitsEx
SetMetaRgn
SetMiterLimit
SetNamedPipeHandleState
SetNamedSecurityInfo
SetPaletteEntries
SetParent
SetPixel
SetPixelV
SetPolyFillMode
SetPort
SetPrinter
SetPrinterData
SetPrinterDataEx
SetPriorityClass
SetPrivateObjectSecurity
SetPrivateObjectSecurityEx
SetProcessAffinityMask
SetProcessDefaultLayout
SetProcessPriorityBoost
SetProcessShutdownParameters
SetProcessWindowStation
SetProcessWorkingSetSize
SetProp
SetRect
SetRectEmpty
SetRectRgn
SetROP2
SetScrollInfo
SetScrollPos
SetScrollRange
SetSecurityDescriptorControl
SetSecurityDescriptorDacl
SetSecurityDescriptorGroup
SetSecurityDescriptorOwner
SetSecurityDescriptorRMControl
SetSecurityDescriptorSacl
SetSecurityInfo
SetServiceBits
SetServiceObjectSecurity
SetServiceStatus
SetStdHandle
SetStretchBltMode
SetSwapAreaSize
SetSysColors
SetSysModalWindow
SetSystemCursor
SetSystemPaletteUse
SetSystemPowerState
SetSystemTime
SetSystemTimeAdjustment
SetTapeParameters
SetTapePosition
SetTextAlign
SetTextCharacterExtra
SetTextColor
SetTextJustification
SetThreadAffinityMask
SetThreadContext
SetThreadDesktop
SetThreadExecutionState
SetThreadIdealProcessor
SetThreadLocale
SetThreadPriority
SetThreadPriorityBoost
SetThreadToken
SetTimer
SetTimeZoneInformation
SetTokenInformation
SetUnhandledExceptionFilter
SetupComm
SetupDiCreateDeviceInfoList
SetupDiCreateDeviceInfoListEx
SetupDiCreateDeviceInterfaceRegKey
SetupDiDeleteDeviceInterfaceData
SetupDiDeleteDeviceInterfaceRegKey
SetupDiDestroyDeviceInfoList
SetupDiEnumDeviceInterfaces
SetupDiGetClassDevs
SetupDiGetClassDevsEx
SetupDiGetDeviceInterfaceAlias
SetupDiGetDeviceInterfaceDetail
SetupDiOpenClassRegKeyEx
SetupDiOpenDeviceInterface
SetupDiOpenDeviceInterfaceRegKey
SetupHookProc
SetUserFileEncryptionKey
SetUserObjectInformation
SetUserObjectSecurity
SetViewportExtEx
SetViewportOrgEx
SetVolumeLabel
SetVolumeMountPoint
SetWaitableTimer
SetWindowExtEx
SetWindowLong
SetWindowLongPtr
SetWindowOrgEx
SetWindowPlacement
SetWindowPos
SetWindowRgn
SetWindowsHook
SetWindowsHookEx
SetWindowText
SetWindowWord
SetWinMetaFileBits
SetWorldTransform
ShellProc
ShowCaret
ShowCursor
ShowOwnedPopups
ShowScrollBar
ShowWindow
ShowWindowAsync
SignalObjectAndWait
SizeofResource
Sleep
SleepEx
StartDoc
StartDocPrinter
StartPage
StartPagePrinter
StartService
StartServiceCtrlDispatcher
StretchBlt
StretchDIBits
StrokeAndFillPath
StrokePath
SubtractRect
SuspendThread
SwapMouseButton
SwitchDesktop
SwitchToFiber
SwitchToThread
SysMsgProc
SystemParametersInfo
SystemTimeToFileTime
SystemTimeToTzSpecificLocalTime

T-32개
TabbedTextOut
TerminateJobObject
TerminateProcess
TerminateThread
TextOut
Thread32First
Thread32Next
ThreadProc
TileWindows
TimerAPCProc
TimerProc
TlsAlloc
TlsFree
TlsGetValue
TlsSetValue
ToAscii
ToAsciiEx
Toolhelp32ReadProcessMemory
ToUnicode
ToUnicodeEx
TrackMouseEvent
TrackPopupMenu
TrackPopupMenuEx
TransactNamedPipe
TranslateAccelerator
TranslateCharsetInfo
TranslateMDISysAccel
TranslateMessage
TranslateName
TransmitCommChar
TransparentBlt
TryEnterCriticalSection

U-25개
UInt32x32To64
UnhandledExceptionFilter
UnhookWindowsHook
UnhookWindowsHookEx
UnionRect
UnloadKeyboardLayout
UnloadUserProfile
UnlockFile
UnlockFileEx
UnlockResource
UnlockSegment
UnlockServiceDatabase
UnmapViewOfFile
UnpackDDElParam
UnrealizeObject
UnregisterClass
UnregisterDeviceNotification
UnregisterHotKey
UnregisterWait
UnregisterWaitEx
UpdateColors
UpdateLayeredWindow
UpdateResource
UpdateWindow
UserHandleGrantAccess

V-18개
ValidateRect
ValidateRgn
VerFindFile
VerifyVersionInfo
VerInstallFile
VerLanguageName
VerQueryValue
VirtualAlloc
VirtualAllocEx
VirtualFree
VirtualFreeEx
VirtualLock
VirtualProtect
VirtualProtectEx
VirtualQuery
VirtualQueryEx
VirtualUnlock
VkKeyScan
VkKeyScanEx

W-36개
WaitCommEvent
WaitForDebugEvent
WaitForInputIdle
WaitForMultipleObjects
WaitForMultipleObjectsEx
WaitForPrinterChange
WaitForSingleObject
WaitForSingleObjectEx
WaitMessage
WaitNamedPipe
WaitOrTimerCallback
WideCharToMultiByte
WidenPath
WindowFromDC
WindowFromPoint
WindowProc
WinExec
WinMain
WriteConsole
WriteConsoleInput
WriteConsoleOutput
WriteConsoleOutputAttribute
WriteConsoleOutputCharacter
WriteFile
WriteFileEx
WriteFileGather
WritePrinter
WritePrivateProfileSection
WritePrivateProfileString
WritePrivateProfileStruct
WriteProcessMemory
WriteProfileSection
WriteProfileString
WriteTapemark
wsprintf
wvsprintf

X-0개
Y-1개
Yield

Z-1개
ZeroMemory

'NativeCode > api' 카테고리의 다른 글

Hooking  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18
ShellExecuteEx  (0) 2010.03.18
콘솔창 생성  (0) 2010.03.18

API에서 프로세스를 만드는 방법은 두 가지가 있다. 그 중 한가지는 SHELLEXECUTEINFO라는 구조체를 이용해서 프로세스를 만드는 방법인데, 아래와 같은 방법으로 사용 할 수 있다.


 SHELLEXECUTEINFO shellexe;
 memset( &shellexe, 0, sizeof( shellexe ) );
 shellexe.cbSize = sizeof( shellexe );
 shellexe.fMask = SEE_MASK_NOCLOSEPROCESS;
 shellexe.nShow = SW_SHOWNORMAL;
 shellexe.hInstApp = hInstance;
 shellexe.lpFile = "c:\\windows\\system32\\calc.exe";
 shellexe.lpParameters = "";

 BOOL bRes = ShellExecuteEx( &shellexe );

 if( bRes == FALSE )
 {
  MessageBox( NULL, "프로그램을 실행할 수 없습니다", "SheelExecuteEX", NULL );
 }

'NativeCode > api' 카테고리의 다른 글

Hooking  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18
모든 API 함수 목록  (0) 2010.03.18
콘솔창 생성  (0) 2010.03.18
API 프로그래밍을 하다 보면 콘솔창이 필요한 경우가 생긴다. 쉽게 출력해서 정보를 보여줄 수 있는 큰 장점이 있기 때문이다. 이때 쉽게 만들 수 있는 방법이 존재한다.


// 콘솔창 생성

AllocConsole();

WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), tmpstr, strlen(tmpstr), &dw, NULL);


위와 같이 하면 콘솔창을 생성하고 데이터를 쓸 수 있다. 참~~~ 쉽다. ㅋㅋ

'NativeCode > api' 카테고리의 다른 글

Hooking  (0) 2010.03.18
윈도우 핸들 얻기  (0) 2010.03.18
시스템 종료 함수  (0) 2010.03.18
모든 API 함수 목록  (0) 2010.03.18
ShellExecuteEx  (0) 2010.03.18
스프링노트를 쓰다가... 좋기는 하지만... 테마를 바꿀 수 없다는 단점이!! ㅋㅋㅋ
그래서 티스토리로 옮기고 있어요~~ 아 힘드네요.... 귀찮고.... 하지만 해야겟져?ㅋㅋ

'날 살아가게 하는 것들 > 그냥 쉬자' 카테고리의 다른 글

Out of the Box  (0) 2011.03.08
공부 테크니션의 여덟 가지 필살기  (2) 2010.10.11
이매진컵!! 자랑자랑..  (0) 2010.05.29
아아아아악  (0) 2010.05.08
CodeEngn Basic 완료  (2) 2010.04.28

광역 변수를 사용할 때는 꼭 초기화를 해 주어야 한다. 초기화 해주는 부분은 main.cpp 에서 하는 것과 같이 해 주면 된다.

 // head.h

extern int a;

extern int b;


// main.cpp

#include "head.h"


int a = 10;

int b = 20;


void main()

{

a = 1;

b = 2;

}


// sub.cpp

#include "head.h"


void sub()

{

a = 2;

b = 3;

}

'Programming > 이것저것' 카테고리의 다른 글

TCP/IP PPT 에서 뜯어왔음ㅋ  (0) 2010.03.18
OSI 7Layer  (0) 2010.03.18
Virtual Function  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18

상속에서 중요한 것 중 하나는 부모가 자식을 가리킬 수 있다는 것이다.

다음 소스를 보자.

Snap4.png

내 기대는 p->fucntion(); 문장이 "Derived"를  호출하는 것이었지만 결과는 "Base"를 호출한다.

왜 그럴까?


위 이유는 포인터의 형이 정해진 시점에서 이미 호출되어질 함수가 정해지기 때문이다.

포인터 p함수는 Base로 형이 선언되어 있기 때문에 자신의 함수 밖에 호출할 수 가 없다.

즉, 포인터가 무엇을 가리키든지 간에 Base로 형이 선언되어 있어서 호출 할 수 있는 함수도 정해져 있다는 것이다.


위의 결과를 제대로 보이게 해주는 것이 virtual 키워드 이다.

함수의 리턴타입 앞에 virtual이라는 키워드를 붙여주면 가상함수가 된다.


부모 클래스에만 virtual을 붙여주면 되지만, 보통은 자식 클래스에도 붙여서 명시한다.

virtual 키워드를 붙여주면 우리가 원하는데로 값이 출력되는 것을 볼 수 있다.

가상함수는 정적 결합(많이 들어본 용어일 것이다. 정확히는 링킹시에 결합이다.)을 하지 않고 동적 결합(실행 중에 결정된다.)을 사용한다.


Snap5.png


문장을 위와 같이 고치면 원하는 결과가 출력되는 것을 볼 수 있다.


'Programming > 이것저것' 카테고리의 다른 글

OSI 7Layer  (0) 2010.03.18
광역 변수  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18
C++ Style Type Casting  (0) 2010.03.18

왜 가상 파괴자가 필요한지 예를 통해서 보도록 하자.

아래는 우리가 일반적으로 사용하는 상속의 사용 예이다.

Snap1.png


우리는 Derived 클래스가 Base를 상속받게 하고 Base 클래스를 포인터로 선언해

Derived를 생성해주고 있다.

우리는 생성과 파괴가 아래처럼 되기를 원할 것이다.

Snap2.png


하지만 결과는 아래와 같이 나온다.

Snap3.png

왜 그럴까..??


위 이유는 포인터의 형이 정해진 시점에서 이미 호출되어질 함수가 정해지기 때문이다.

포인터 p함수는 Base로 형이 선언되어 있기 때문에 자신의 함수 밖에 호출할 수 가 없다.

즉, 포인터가 무엇을 가리키든지 간에 Base로 형이 선언되어 있어서 호출 할 수 있는 함수도 정해져 있다는 것이다.


생성자의 경우는 소스에서 보듯이 new Derived를 했기 때문에 우리가 명시적으로 호출을 해주고 있지만.

파괴자의 경우는 Base의 파괴자만 호출이 되는 것이 맞다. 왜냐면 p함수는 Base 형이기 때문에.


그렇기 때문에 아래와 같은 소스로 바꿔야 한다.

Snap4.png

위 소스와 같이 Base의 파괴자를 가상함수로 선언하게 되면 p의 파괴자가 동적바인딩이 되게 된다.

virtual 함수는 정적인 함수 호출을 동적 호출로 바꿀 수 있게 해주는 것이다.

위으 Base는 가상함수가 되며 동적 바인딩이 가능해진다. 동적바인딩이 되어 Base 형의 파괴자가

실행되는 것이 아니라 Derived의 파괴자가 실행되며 그 후 Base의 파괴자가 실행되어 완전한 메모리

해제가 이루어 진다.


'Programming > 이것저것' 카테고리의 다른 글

광역 변수  (0) 2010.03.18
Virtual Function  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18
C++ Style Type Casting  (0) 2010.03.18
#pragma pack  (0) 2010.03.18

try와 if는 장단점이 존재하고 있었습니다. 일단 둘의 차이점은 try 구문에서 예외가 발생하면 그 즉시 블록이 종료가 되고 catch 블록으로 제어가 이동된다고 합니다. 그리고 try/catch는 블럭if/else 는 구문이라는 점이 다릅니다.


if/else 로 에러를 처리한다면 에러가 발생한 객체에 대해서 수명이 유지되기 때문에 에러를 처리하는 동안에도 에러가 발생한 객체를 참조하는 코드가 정상적으로 컴파일 된다. 어떤 예외가 발생했을 경우 try/catch 안의 모든 객체는 스코프를 벗어나 참조 할 수 없게 되지만 if/else 문은 스코프가 벗어 나지 않게 되므로 try/catch 보다 더 위험합니다. 또한 활성 스택에서 생성되는 지역객체들의 자동 소멸을 위해 그것의 정보들을 유지합니다. 따라서 if문의 예외처리와는 달리 지역 객체들의 소멸자가 자동으로 호출되므로 메모리 등 리소스 누수의 문제를 조금이나마 해결할 수 있습니다.


하지만 try/catch 의 단점도 존재하게 됩니다. try/catch 블록은 유지해야 할 정보도 많고 또 실제 예외가 발생 했을 때도 해주어야 할 일이 많기 때문에 당연히 코드 크기나 예외 발생시 처리 속도는if/else의 전통적인 반환 값을 통한 오류처리와는 비교하기 힘듭니다.

 

하지만 try/catch는 자동으로 해주는 일이 많으며 당연히 더 느립니다. 하지만 우리가 만들어낸 코드가 컴파일러가 자동으로 만들어준 코드보다 더 안전하다고 말하기는 힘들겠네요.

Snap1.png


예외를 던질 때 단순히 기본형을 넘기는 것이 아니라, 예외 처리를 위해 미리 만들어진 클래스의 임시 객체를 넘기면 보다 자세한 정보를 catch 핸들러가 얻을 수 있습니다.


하지만 try/catch 를 사용하는 것은 검사코드가 포함되고 stack unwinding을 위한 코드가 추가되기 때문에 실행 파일의 크기를 약간 증가시키고 실행 속도를 약간 감소시킵니다.
예외 처리의 이러한 단점 때문에, 예외 처리는 사용되어야 할 곳에만 사용하는 것이 바람직합니다. (어떤 프로그래머는 DirectX로 개발하는 게임 프로그램의 렌더링 루프에서는 try/catch를 사용하지 않는다고 한다.)

'Programming > 이것저것' 카테고리의 다른 글

Virtual Function  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
C++ Style Type Casting  (0) 2010.03.18
#pragma pack  (0) 2010.03.18
#define swap  (0) 2010.03.18

C++에서는 static_cast, const_cast, dynamic_cast, reinterpret_cast의 4가지 casting이 지원된다. 사용 형식은 다음과 같다.

xxxxx_cast<type>(value)

  • const_cast : 상수 객체나 상수 포인터의 상수성을 제거하려는 목적을 갖는다.
  • dynamic_cast : 상위 클래스의 포인터에서 하위 클래스의 포인터로 변환하는 것을 뜻한다. 이 때, 변환에 성공한 경우(즉, 원래의 포인터가 조상 클래스의 포인터인 경우)에는 유효한 포인터가 제대로 리턴되고, 실패한 경우(두 포인터 타입 간에 연관이 없는 경우)에는 NULL이 리턴된다. dynamic_cast보다는 virtual 함수를 사용하는 것이 원래는 더 깔끔한 방법이지만, 라이브러리 안에 들어있는 클래스들이라서 직접 소스 수정이 불가능하다거나한 경우에는 이것을 사용한다(static_cast보다는 안전하다). - Effective C++ 항목 39 참조.
  • reinterpret_cast : 함수 포인터 타입을 형변환하는 것과 같이 구현에 따라 달라지는 결과를 위한 형변환을 목적으로 사용된다. 또한, 포인터 형변환 시에 static_cast로는 불가능한 경우에 사용할 수 있다(예 : void*를 Student*로 바꾼다거나..)
  • static_cast : 일종의 잡동사니 형변환이다. 어떤 형변환도 적합치 않을 때 사용할 수 있다. 의미상으로 볼 때는 기존 C의 형변환에 해당한다.

기존의 형변환도 그대로 사용되지만 새로운 형태의 형변환을 사용하는 것이 좋다. 코드에서 찾아보기도 쉽고 (사람뿐만 아니라 grep 같은 툴에게도 쉽다.) 보다 전문화된 목적의 형변환 형태가 컴파일러가 사용 에러를 진단하는 것을 가능하게도 해주기 때문이다.

'Programming > 이것저것' 카테고리의 다른 글

Virtual Function  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18
#pragma pack  (0) 2010.03.18
#define swap  (0) 2010.03.18

 #pragma pack은 구조체의 저장 크기를 결정하는 명령어입니다.

 BYTE 의 멤버 변수를 1바이트로 실제 저장하는가 아니면 2, 4바이트로 저장하는가를 설정합니다.


#pragma pack(push,2) <---- gcc, vs에서 이렇게 사용합니다.

    struct KBITMAPFILEHEADER

    {

        WORD bfType;

        DWORD bfSize;

        WORD bfReserved1;

        WORD bfReserved2;

        DWORD bfOffBits;

    };

#pragma pack(pop)

'Programming > 이것저것' 카테고리의 다른 글

Virtual Function  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18
C++ Style Type Casting  (0) 2010.03.18
#define swap  (0) 2010.03.18

멤버십에서 배운 어청 깜놀한 SWAP 입니다. 신기했던 기억이...

#define SWAP( a, b ) a^=b^=a^=b


이것은 세 숫자 중 가장 큰 수를 찾는 한줄 코드.

( nA > nB ) ? ( ( nA > nC )? nA: nC ) : ( ( nB > nC )? nB: nC ); 

'Programming > 이것저것' 카테고리의 다른 글

Virtual Function  (0) 2010.03.18
Virtual Destructor  (0) 2010.03.18
try/catch와 if/else의 차이점  (0) 2010.03.18
C++ Style Type Casting  (0) 2010.03.18
#pragma pack  (0) 2010.03.18

+ Recent posts