본문 바로가기

프로그램언어

API 공용 대화상자 사용1 열기 대화상자 파일 열기 대화상자를 호출할 때는 사용하는 함수 BOOL GetOpenFileName( LPOPENFILENAME lpofn ); typedef struct tagOFN { // ofn DWORD lStructSize; // 구조체의 크기를 지정 HWND hwndOwner; // 대화상자의 소유자를 지정 HINSTANCE hInstance; // 인스턴스 핸들을 지정 LPCTSTR lpstrFilter; // 파일 형식 콤보박스에 나타날 필터들 LPTSTR lpstrCustomFilter; // 사용자가 실행 중에 선택한 커스텀필터를 저장하기 위한 버퍼 DWORD nMaxCustFilter; //컴스텀 필터의 길이 DWORD nFilterIndex; // 파일 형식 콤보박스에서 사용할 필터.. 더보기
API 리소스 리소스는 사전적 의미로 자원이란 의미를 가지고 있다. 소스코드는 개발자가, 리소스는 디자이너가 하는 식으로 분담 작업을 한다. 또한 리소스를 수정하더라도 프로그램을 다시 컴파일하지 않아도 되므로 개발 속도가 빨라진다. 소스코드와 리소스가 어떤 과정을 거처서 어느 시점에 결합이 되는 모식도를 보도록 한다. 소스 코드와 리소스는 각각 컴파일되어서 소스 코드는 *obj 파일이 되고, 리소스는 *.rc 파일이 되어 최종 실행 파일이 만들어지기 전 링크 단계에서 결합된다. 메뉴 만들기 솔루션 탐색기에서 리소스 파일을 클릭하고 마우스 오른쪽 버튼을 누르면 아래와 같이 나타난다. 여기서 리소스메뉴를 클릭한다. 대화상자에서 "Menu"선택하고 새로만들기 버튼을 클릭한다. 솔루션 탐색기의 리소스 파일에 Win32Proj.. 더보기
API 그리기 모드(Draw Mode) 래스터 연산 클라이언트 영역에 출력한 문자/그림의 색은 펜, 브러시의 색 자체이다. 클라이언트 영역에 그려저 있는 기존 도형의 색에 따라 출력하는 문자/그림의 색이 달라지게 하려면 다음 한수를 사용한다. SetROP2(hdc, nDrawMode); 그리기 모드를 구할 때 사용하는 함수이다. P : 펜 또는 브러시의 색, D : 화면 색 값 nDrawMode 연산식 그리는 방식(그려지는 색) 2 R2_NOTMERGEPEN ~(P|D) 펜과 화면의 색을 합한 색을 반전시킨 색 3 R2_NOT ~D 화면색의 반전색 4 R2_XORPEN P^D 펜과 화면색을 XOR 시킨 색 5 R2_MASKPEN P&D 펜과 화면색의 공통색 6 R2_COPYPEN P 펜의 색, 내정값 SetROP2(hdc, R2_XORPEN).. 더보기
API 마우스 기본적인 마우스 메시지 마우스메시지의 종류 메시지 설명 WM_LBUTTONDOWN 마우스 왼쪽 버튼을 눌렀을 때 WM_LBUTTONUP 마우스 왼쪽 버튼을 뗏을 때 WM_LBUTTONDBLCLK 마우스 왼쪽 버튼을 더블클릭 했을 때 WM_RBUTTONDOWN 마우스 오른쪽 버튼을 눌렀을 때 WM_RBUTTONUP 마우스 오른쪽 버튼을 뗏을 때 WM_RBUTTONDBLCLK 마우스 오른쪽 버튼을 더블클릭 했을 때 WM_MBUTTONDOWN 마우스 가운데 버튼을 눌렀을 때 WM_MBUTTONUP 마우스 가운데 버튼을 뗏을 때 WM_MBUTTONDBLCLK 마우스 가운데 버튼을 더블클릭 했을 때 WM_MOUSEMOVE 마우스가 움직일 때 마우스 클릭시 좌표정보( lParam ) lParam 매개변수는 32비트.. 더보기
API 타이머 WM_TIMER 메시지 윈도우는 타이머를 한 번 설정하면 종료하기 전까지 주기적으로 타이머 메시지를 발생 시킨다. 타이머를 시작하는 함수는 SetTimer이고 타이머를 종료하는 함수는 KillTimer이다. SetTimer() 함수 UINT_PTR SetTimer ( HWND hWnd, // 윈도우 핸들 UINT_PTR nIDEvent, // 타이머 ID로 정수값 UINT uElapse, // 시간 간격으로 단위는 밀리초(1000은 1초) TIMERPROC lpTimerFunc // 타이머가 보내는 WM_TIMER 메시지를 받을 함수 이름 ); KillTimer() 함수 BOOL KillTimer { HWND hWnd, UINT_PTR nIDEvent // 종료할 ID 입력 ); 오른쪽 방향키를 누르면 .. 더보기
API 키도드 입력로 도형제어 시작 #include #include LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { HWND hwnd; MSG msg; WNDCLASS WndClass; WndClass.style = CS_HREDRAW | CS_VREDRAW; // 출력 형태 WndClass.lpfnWndProc = WndProc; // 프로시저 함수 WndClass.cbClsExtra = 0; // 클래스 여분 메모리 WndClass.cbWndExtra = 0; //.. 더보기
클래스를 배열로 선언하기 클래스의 오브젝트를 생성하여 배열에 초기값으로 지정하고 출력해보자. class Menu { int num; String fname; int price; Menu(int a, String b, int c) { num = a; fname = b; price = c; } } public class t1 { public static void main(String[] args) { Menu[] test = { new Menu(1, "사과", 1000), new Menu(2, "배", 1500), new Menu(3, "자두", 500), new Menu(4, "복숭아", 800), new Menu(5, "살구", 1000) }; System.out.println("\n####### 메뉴 리스트 #######");.. 더보기
실행파일 실행시 인자 삽입 int main(int argc, char* argv[]) 메인 함수에서 int main(int argc, char* argv[]) argc argument count argv argument vector 속성창에서 [디버깅] - 명령 인수에 인자값 삽입 더보기