본문 바로가기

프로그래밍162

API-WindowLong CreateWindow로 윈도우를 만들 때 설정했던 윈도우의 속성들을 실행중에 조사하거나 바꾸고자 할때 LONG GetWindowLong(HWND hWnd, int nIndex); LONG SetWindowLong(HWND hWnd, int nIndex, LONG dwNewLong); 이다. 이는 32비트용이고, 64비트를 지원하는 새로운 함수 원형은 다음과 같다. LONG_PTR GetWindowLongPtr(HWND hWnd, int nIndex); LONG_PTR SetWindowLongPtr(HWND hWnd, int nIndex, LONG_PTR dwNewLong); 쓰는 법은 똑같으며, 함수명 뒤에 Ptr이 붙고 LONG대신 LONG_PTR을 쓰는 정도의 차이밖에 없다고 한다. #include.. 2010. 4. 24.
API-WNDCLASSEX 기존의 Win16에서 Win32로 API가 업그레이드 되면서, WNDCLASS에 멤버를 추가한 WNDCLASSEX 구조체를 대신 사용 할 수 있다. 특별히 추가된건 많이 없어 보이는데, 간단하게 살펴보자. #include LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("WndClsEx"); int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow ) { HWND hWnd; MSG Message; WNDCLASSEX WndClassEx; g_hInst =.. 2010. 4. 24.
API-대화상자 대화상자라 함은, 특정 상황에서 윈도우를 하나더 꺼내서 사용하게 만드는 것이다. 크게 2가지로 구분되는데, 모달, 모달리스 이렇게 2가지로 구분된다. 모달의 경우는 창이 띄워지면 메인 윈도우에 접근이 잠시동안 불가능하며, 모달리스의 경우에는 창이 띄워져도 메인 윈도우에 대한 접근이 가능하다는 차이가 있다. #include #include "resource.h" LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; HWND hWndMain; LPCTSTR lpszClass = TEXT("대화상자"); int x; int y; TCHAR str[128]; HWND hMDlg; int APIENTRY WinMain( HINSTAN.. 2010. 4. 24.
API-Control(2) 남은 컨트롤인, 에디트 박스,리스트 박스, 콤보 박스, 스크롤 바, 스태틱에 대해서 알아보자. 이번엔 특별히 전체 소스를 올리지 않고 그냥 사용법만 쭈욱 보고 넘어가자, 어차피 다이얼로그 쓰면 뭐 쉽게 갈테니, 먼저 에디트 박스부터 알아보자. HWND hEdit; // 전역으로 핸들이 하나 필요 hEdit = CreateWindow( TEXT("edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 10, 10, 200, 25, hWnd, (HMENU)100, g_hInst, NULL );​ 첫번째 인자는 클래스이름, 두번째는 윈도우 이름, 3번째에 옵션들을 삽입하고, 시작좌표 x, y, 폭, 높이, 부모 윈도우 지정, ID지정, 윈도우 인스.. 2010. 4. 24.
API-Control(1) API에 존재하는 컨트롤중 버튼과 체크박스, 라디오 버튼에 대해서만 먼저 보자, 사실 구지 소스로 만들지 않고, 추후에 다이얼로그를 사용해서 편하게 할 수 있으니, 그냥 존재에 대해서만 보고 넘어가도록 하겠다. #include enum { ID_R1 = 101, ID_R2, ID_R3, ID_R4, ID_R5, ID_R6 }; HWND r1, r2, r3, r4, r5, r6; int Graph = 0; COLORREF Color = RGB( 0, 0, 0 ); LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("Control"); int APIENTRY WinMain( HIN.. 2010. 4. 24.
API-BitMap 비트맵을 사용하기 위한 예제, #include #include "resource.h" LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); HINSTANCE g_hInst; LPCTSTR lpszClass = TEXT("Bitmap"); 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.hbrBackgrou.. 2010. 4. 24.