본문 바로가기

프로그래밍/API

문자열 출력 BOOL Textout(HDC hdc,int nXstart,int nYstart,LPCTSTR lpString,int cbString); 화면에 출력하는 모든 함수들의 첫 번째 인수는 항상 hdc (nXstart, nYstart) : 출력될 좌표. lpString : 출력할 문자열을 담고 있는 문자열 포인터. cbString : 출력할 문자열 길이. cf)Textout 함수는 널 종료 문자열을 인식하지 않으므로 출력할 문자열의 길이를 인수로 밝혀야함. 그래서 문자 출력 할때마다 기찮으므로 lstrlen 함수를 함께 사용 TCHAR *str=TEXT("Beautiful Korea"); Textout(hdc,100,100,str,lstrlen(str)); --------------------또 다른 방법--.. 더보기
WM_PAINT 메시지 WM_PAINT 메시지는 다른 윈도우에 의해 언커버(Uncover)되면 출력해 놓은 문자열이 사라지는 경우 사실을 프로그램으로 즉각 알리는 메시지이다. cf) 운영체제는 개별 윈도우의 화면을 보관해주지 않는다. 예를들어 밑에 예제를 디버깅해서 화면을 클릭하면 first reverse 라는 글씨가 뜬다. 그 윈도우창에 다른 윈도우(메모장 같은)를 실행시켜 가리면 first reverse 글씨는 사라진다. ex)굵은 글씨체가 초장기버전 수정된 부분 ----------------------------------------------------- #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPCTSTR lpszCl.. 더보기
DC란?? DC(Device Context) 출력에 필요한 모든 정보를 가지는 데이터의 구조체. GDI(Graphic Device Interface) 모듈에의해 관리된다. cf) GDI : 화면 처리와 그래픽을 담당. KERNEL : 메모리를 관리하고 프로그램을 실행시킴. USER : 유저 인터페이스와 윈도우를 관리 우리는 이 세가지를 동적 연결 라이브러리(DLL)이라고 부른다. DC를 얻는 방법 1. GetDC함수를 사용하여 DC를 얻고 사용후 ReleaseDC로 해체하는것 HDC GetDC(HWND hWnd); int ReleaseDc(HWND hWnd,HDC hDC); 2. 이 방법은 WM_PAINT 메시지 루틴에서만 사용이가능하다. WM_PAINT 메시지 처리 루틴에서는 DC 핸들을 GetDC로 얻지 않고 .. 더보기
FirstWindow #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPCTSTR lpszClass=TEXT("First"); 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=.. 더보기
기초중기초(윈도우 스타일) CreateWindow함수의 세번째 인수 dwStyle은 윈도우의 모양과 동작 방식을 결정. WS_CAPTION 타이틀바를 가진다. WS_HSCROLL 수평 스크롤바를 가진다. WS_VSCROLL 수직 스크롤바를 가진다. WS_MAXIMIZEBOX 최대화 버튼을 가진다. WS_MINIMIZEBOX 최소화 버튼을 가진다. WS_SYSMENU 시스템 메뉴를 가진다. WS_THICKFRAME 크기를 조절할 수 있는 경계선을 가진다. 더보기
기초중기초(윈도우의 위치와 크기) CW_USEDEFAULT를 사용하여 윈도우즈가 정해두는대로 크기와 위치를 사용했다. hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, 100,100,300,200 이하 생략); ☞(100,100)위치에 폭300,높이 200 윈도우를 생성한다. 더보기
기초중기초(윈도우의 타이틀 바꾸기) hWnd=CreateWindow(lpszClass,TEXT(" 타이틀 "),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,(HMENU)NULL,hlnstance,NULL); cf) 문자열 상수를 쓸때는 항상 TEXT()매크로로 둘러싸야 유니코드로 쉽게 이식. 더보기
기초중기초(커서바꾸기) 기본 : WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); IDC_ARROW 화살표 모양 IDC_CROSS 십자 모양 IDC_IBEAM 'I'자 모양 IDC_NO 원안에 빗금이 쳐진 모양 IDC_WAIT 모래시계 모양 더보기
기초중기초(윈도우 배경색 바꾸기) 기본 : WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); hbrBackground : wndClass의 멤버중 배경색상을 지정 cf) BLACK_BRUSH로 변경하면 검정색 배경. LTGRAY_BRUSH로 변경하면 옅은회색 배경 - 윈도우즈의 기본 브러시는 흰,검,옅은회색 WndClass.hbrBackground=CreateSolidBrush(RGB(0,0,255));//파란색배경 WndClass.hbrBackground=CreateHatchBrush(HS_DIAGCROSS,RGB(255,0,0)); //빨간색의 기울어진 바둑판 배경 더보기
윈도우즈 윈도우즈=메시지 구동 시스템(Message Driver System) *도스와 가장 뚜렷한 대비를 이루는 윈도우즈의 특징 *도스에서는 명령들을 순서대로 실행하는 순차적 방법을 사용 이와 다르게 윈도우즈는 프로그램의 실행순서가 명확하게 정해져 있지 않으며 상황에 따라 실행순서가 달라진다. 윈도우생성(CreateWindow 함수) HWND CreateWindow(lpszClassName,lpszWindowName,dwStyle,x,y,nWidth, nHeight,hwndParent,hmenu,hinst,lpvParam) lpszClassName:생성하는 윈도우의 클래스를 지정하는 문자열 lpszWindowName:윈도우의 타이틀 바에 나타날 문자열 dwstyle:만들고자 하는 윈도우의 형태를 지정하는 인수 .. 더보기