본문 바로가기

Windows/_Windows Programming12

구조적 예외처리(SEH) 예외처리 : 개념 : 소스코드를 프로그램의 실제 흐름과 그 흐름에 대한 예외처리 영역을 나누어 작성하는것. 사용법 : 1. 종료 핸들러(Termination Handler) : 예외가 발생하여 프로그램이 정상치 못하게 종료되더라도 메모리 반환등의 문제를 해결하기 위하여 사용 __try { // 코드 } __finally { // 종료 처리 } __try 블록을 한 줄이라도 실행하게 되면, 반드시 __finally 블록을 실행한다. (참고 : __try 블록과 __finally 블록 사이에는 어느 문장도 올 수 없다. 반드시 __try 와 __finally 둘다 있어야 한다. 예) #include #include #include int _tmain(int argc, TCHAR *argv[]) { int n.. 2010. 3. 8.
GetLastError() 함수 Windows 시스템 함수를 호출하는 과정에서 오류가 발생하면 NULL을 리턴하지만 그 원인은 파악할수 없다. 원인을 파악하기 위해서는 시스템 함수뒤에 GetLastError 함수를 호출하여 그 함수의 오류에 해당하는 에러 코드를 리턴(정상일시 0 리턴)받아서 이를 MSDN 에서 참조해야 한다. 하지만 여기서 더 나아가 에러 코드를 해석해 문자열로 만들어주는 함수를 사용한다면 MSDN 을 참조하는 번거로움을 덜 수 있다. 예제 소스 : 1. 에러 코드 확인 _tprintf(_T("Error Code : %d\n"), GetLastError()); 2. 에러 코드를 해석한 문자열 확인 #include CString PrintErrorMessage(DWORD err) { LPTSTR lpMsgBuf; CSt.. 2010. 2. 10.
Mstsc(원격) 사용하기 자신의 데스크톱을 다른 컴퓨터에서 사용할수는 없을까? 이걸 가능하게 해주는 것이 원격 프로그램이다. 그중에서 윈도우를 설치하면 자동으로 설치되는 간단한 설정만 하면 바로 사용할수 있는 Mstsc에 대해서 설명을 하려고 한다. 내컴퓨터를 우클릭하여 속성을 선택한다. 원격탭을 누른다. 원격 지원에 이 컴퓨터에서 원격 지원 초대를 보낼 수 있도록 허용(R)에 체크를 하고 고급(V)을 눌러 이컴퓨터에 대한 원격 제어 허용에 체크를 한다. 밑에 초대를 수락할 수 있는 시간은 원격으로 연결하고 얼마나 오래 있을것이냐 하는건데 적당히 설정해주고 넘어가자. 그다음에 원격 데스크톱에서 사용자가 이 컴퓨터에 원격으로 연결할 수 있음에 체크를 하고 넘어간다. 그리고 원격 제어를 쓰기위해서는 암호 설정이 필요한데 저 같은 경.. 2010. 2. 6.
리소스(Resource) 리소스(Resouce) : 코드의 논리와 무관한 데이터 메뉴, 비트맵, 액셀러레이터, 문자열, 아이콘, 커서 등이 속한다. 1. 리소스의 분리 : 프로그램은 코드와 데이터로 구성된다. 데이터는 프로그램의 처리 대상이며 코드는 데이터를 처리하는 수단이다. 도스 프로그래밍과 달리 윈도우즈 프로그래밍에서는 이러한 데이터를 만들고 관리하는 것이 별도의 작업으로 분리되어 있다. 이 데이터들 중에 코드와 무관한 것들을 리소스(Resource)라 하며 별도의 편집기로 만들어져 컴파일되며 링크시에 실행파일에 결합된다. 윈도우즈 프로그래밍에서 리소스와 코드가 분리되어 있어 다음과 같은 장점이 있다. 1. 디자이너와 프로그래머가 분담하여 작업을 하기가 편하다. 2. 리소스를 수정하더라도 리소스만 컴파일 하면 되므로 컴파일.. 2009. 12. 24.
윈도우 프로그램 기본 틀 #include LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); HINSTANCE g_hInst; HWND hwnd; LPCTSTR lpszClass=TEXT("Formality"); 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.. 2009. 12. 23.
윈도우 관리 메시지 입력 처리의 중심에는 메시지가 있다. 이런 명시적인 입력 외에 윈도우에 관한 기본적인 관리도 메시지로 한다. 윈도우의 상황 변화시에 보내지는 메시지들도 응용 프로그램의 입장에서 보면 일종의 입력이며 프로그램은 이를 적절하게 처리해야 한다. 1. 생성 및 파괴 : 윈도우와 관련된 메시지중 가장 간단한 메시지는 윈도우가 생성될 때 보내지는 WM_CREATE 와 파괴될 때 보내지는 WM_DESTROY 두 가지가 있다. WM_CREATE 는 윈도우가 생성될 때 보내지므로 각종 초기화를 하기에 적합하며 WM_DESTROY 는 종료처리를 하기에 적합하다. 이 메시지들 대신해 사용할 수 있는 방법은 WinMain 에서 직접 초기화와 종료처리를 하는 것이다. WM_CREATE 메시지는 CreateWindow 함수에 의.. 2009. 12. 23.