일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- visual
- MFC 예제
- MyTread
- 별찍기
- MFC
- 포트폴리오
- 김성엽
- 도움말
- 정처기 독학
- win32
- C++
- ListBox
- do it c
- 유료강좌
- mfc 실습
- C언어
- C
- Time
- 정보처리기사
- tips강좌
- MyThread
- SSG
- 핵심 요약
- 마이크로소프트
- 미가공
- mysql
- 실습
- Tipsware
- linux
- 충무창업큐브
- Today
- Total
목록전체 글 (220)
History
보호되어 있는 글입니다.

리소스 뷰에서 도구 상자-> ListBox를 선택해서 크기를 조절한다. ListBox의 id는 IDC_ITEM_LIST이다. 아래 EditCtrl은 IDC_TOTAL_EDIT의 ID를 부여했다. CCheckListBox는 subclass를 해줘야 하기 때문에 OnwerDraw속성을 활성화시킨다. 이제 헤더 클래스 안에서 변수를 선언한다. private: CCheckListBox m_item_list; 그런 후 리스트 박스 안에 값을 대입하면 항목이 생길 때마다 체크박스가 생긴다. 이제 옆에 체크박스를 누르면 이 값들이 더해져서 값을 EditCtrl에 출력하는 루틴을 만든다. 이벤트 처리기에서 LBNSELCHANGE를 선택한 후 GetCheck함수를 이용해서 체크가 된 것만 값을 더하도록 만들었다. 실행화면

우선 ListCtrl과 ListBox, 추가 버튼 등을 추가하고 이름 번호 나이 를 입력하고 추가를 누르면 왼쪽 ListBox에 순차적으로 들어간다. 그리고 리스트박스에 있는 데이터를 클릭하면 오른쪽에 있는 ListCtrl에 각 데이터가 분산되어 들어간다. 키보드,마우스로 움직인 영상
이번에 실습한 내용은 +버튼과 -버튼을 마우스로 눌러서 숫자의 크기를 늘리고 줄이는 실습이다. 이번 실습은 MFC클래스에서 CButton클래스를 추가해서 버튼을 0.5초 이상 누르고 있으면 0.1초마다 숫자가 자동으로 늘어나는 실습을 진행했다. CButton클래스에서 LBUTTONDOWN과 LBUTTONUP, TIMER를 넣었다. LBUTTONDOWN에서는 SetTimer로 1번을 부여하고 0.5초를 세팅한다. 그리고 TIMER함수에서 1번에 들어왔으면 바로 KillTimer를 하고 바로 SetTimer를 호출하여 2번을 0.1초를 세팅한다. 그 후 SendMessage로 메인 dlg.cpp에 메시지를 보낸다. 메인 dlg에서는 가상함수에서 OnCommand를 추가해주고 wParam으로 컨트롤 ID를 비..

기본적으로 윈도우에서 제공하는 기본 스크롤바에 대해서 실습을 했다. 먼저 OnPaint에서 구구단을 TextOut으로 출력한다. 그 후 리소스뷰에서 위의 사진처럼 속성을 바꿔준다. 컴파일 했을 때의 화면이다. 이제 이 스크롤을 내려서 4단 이후의 모습도 볼 수 있게 만든다. 우선 클래스 마법사에서 WM_VSCROLL을 추가한다. 그 후 위에서 나오는 메시지를 switch문으로 제어해서 원하는 동작을 코드로 작성한다. 그리고 스크롤을 내린만큼 TextOut함수에서 위치를 연산하면 정상적으로 작동한다. 정상적으로 동작하는 모습을 볼 수 있다. 다만 처음 LINEDOWN을 눌렀을 때 내려가는 위치를 좀 더 줬어도 될 것 같다.
전 게시물에서는 깜빡이는 상태로 원이 움직였다. 이번 실습에서는 깜빡임을 잡을 수 있게 MemoryDC를 사용하여 깜빡임을 잡겠다. 우선 CMemDC클래스는 사용하지 않고 직접 구현해보았다. MemoryDC를 사용했을 때 MemoryDC의 배경색은 원래 검은색이기 때문에 MemoryDC에 FillSoildRect를 이용하여 배경을 채워주겠다. 배경을 채워도 깜빡임이 살짝 남아있다. 배경을 채웠지만 깜빡임이 남아있다. 해결방법은 Invalidate() 함수에서 FALSE를 대입하면 배경을 안 지울 수 있다. 깜빡이 완전히 수정완료 깜빡임 없이 원을 출력할 수 있게되었다. 차후 코드는 ON_PAINT 쪽에서 그리는 것보다 Timer함수에서 그리는 게 훨씬 낫다 왜냐하면 WM_PAINT함수는 Invalidat..
보호되어 있는 글입니다.

이번에는 복습 겸 간단한 실습을 진행해본다. 타이머 함수를 이용해 크기와 위치가 랜덤인 원들이 계속 크기가 줄어들면서 새롭게 생기는 프로그램을 만들어본다. 우선 구조체를 이용하여 원의 크기를 잡아줄 x, y 그리고 반지름인 r을 설정한다. 변수 r을 설정하는 이유는 Rectangle함수 같은 경우는 왼쪽 위의 좌표와 오른쪽 아래의 좌표만 알면 되지만 Ellipse함수는 Rectangle의 내접하는 원을 구하는 것이기 때문에 반지름 r을 이용해서 좌표를 구해야 한다. OnInitDialog에서 랜덤함수를 이용해서 반복문으로 값을 구조체에 대입하고 Onpaint에서 원을 출력한다. 그러면 아래와 같은 그림이 출력된다. 흰 색 원들이 무작위로 생성되었지만 뭔가 밋밋하다. 각각 원에 색깔도 입히기 위해 구조체의..