뭐가 이리 함수 인자도 많고..WinProc은 상황에 따라 lParam, wParam 신경써야하고..
메시지 종류도 많고... 아직 초보라 YOU JUST ACTIVATED MY TRAP이라 적힌
메시지 박스 하나 띄우고 즐거워 하고 있을뿐이고..
공부도 안되서 하루에 한 한두시간만 보는데
다음날 되면 기억안나서 또 다시 뒤적뒤적..
아 맞다 궁금한게 있는데
윈도우 창 띄울때, 크기 조정 안되고, 최대화 안되고 화면 고정시킬려면 WinMain의 어떤 인자 전달해야 되는지랑...
내가 CreateWindow 함수를 이해 하기를
// HWND CreateWindow(lpszClassName, lpszWindowName, dwStyle, x, y, nWidth , nHeight,
// hwndParent, hmenu, hinst, lpvParam)
// 1st 인자 : lpszClassName - 생성하고자 하는 윈도우의 class를 입력한다.
// 2nd 인자 : lpszWindowName- 윈도우 타이틀에 나타날 문자열
// 3rd 인자 : dwStyle - 만들고자 하는 윈도위의 형태를 지정
// 4~7 인자 : X,Y, nWidth, nHeight (바탕화면의 x,y위치에 폭 nWidth 높이 nHeight 크기로 윈도우가 만들어짐)
// 8th 인자 : hwndParent - 부모 윈도우가 있을 경우 부모 윈도우의 핸들을 지정. 최상위 윈도우 일때는 NULL로 지정
// -> NULL 지정되면 데스크 탑을 부모로 가져 바탕 화면 어디나 돌아다닐 수 있는 윈도우가 된다.
// 9th 인자 : hmenu - 사용한 메뉴의 핸들 지정. WinClass의 lpszMenuName 은 이 윈도우 클래스를 기반으로 하는
// 모든 윈도우에서 공통적으로 사용되는 반면 hmenu로 지정된 메뉴는 현재 CreateWindow 함수로 만들어지는
// 윈도우에서만 사용된다.
// -> 윈도우 클래스에서 지정한 메뉴를 그대로 사용하려면 NULL , 다른 메뉴를 사용할면 이 인수에 원하는 메뉴
// 핸들을 지정하면 된다. -> CreateWindow.lpszMenuName = NULL 이므로 메뉴없는 윈도우가 만들어짐
// 10th 인자 : hinst -윈도우를 만드는주체, 프로그램의 핸들을 지정
// 11th 인자 : IpvParam
// - CREATESTRUCT이라는 구조체의 번지,여러 개의 윈도우를 만들때 각 윈도우에 고유의 파라미터를 전달하는
// 특수한 목적에서 사용
이렇게 이해하고 윈도우 창 크기를 6,7번째에 800, 600을 주고 화면을 정확히 4분할 하게
수평, 수직선을 그어봤는데 왜 정확히 4분할이 안되는건지 혹시 아는 살암???????
800,600이 윈도우 창 크기를 말하는거 아잉가;;;; 좌표는 또 다르게 해석되야하나
짤방은
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,800,600,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
으로 창 만들고
두점주면 직선 만드는 내가 만든 임시 함수를 이용해
void DrawLine(HDC *hdc, int x1,int y1, int x2,int y2){
MoveToEx(*hdc,x1,y1,NULL);
LineTo(*hdc, x2,y2);
}
WinProc에서..
case WM_PAINT:
hdc=BeginPaint(hWnd, &ps);
DrawLine(&hdc,0,300,800,300);
DrawLine(&hdc,400,0,400,600);
EndPaint(hWnd, &ps);
return 0;
을 했을때 나오는 출력 화면. 아무리 봐도 제대로 4분할 된거 같지가 않단말야
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.