본문 바로가기
728x90

개발아닌개발/C,C++10

[MFC] 원하는 각도의 좌표 값 구해서 직선 그리기 알아야 할 것 일반적으로 사용하고 있는 각도계(0~360도 사이) 는 60분법(Degree) 호의 길이를 이용한 호도법(Radian) 삼각함수를 이용해서 각도의 좌표를 알아내 그릴 수 있는데 이때, 사용하는 방법은 Radian을 사용한다. 때문에 60분법에서 호도법으로 변환을 하는 공식은 필수. 참고해야할 공식 #define PI 3.141592 #define DEGREE_TO_RADIAN(degree) ((PI/180)*(degree)) // #define RADIAN_TO_DEGREE(radian) ((180/PI)*(radian)) 삼각함수를 이용해서 각도별 좌표를 그리면 각도의 시작위치(0도)는 3시가 된다. 나는 12시가 0도(시작위치)가 되도록 구현할 예정 #include "math.h" //.. 2023. 2. 15.
[C,C++] visual studio 2008 디버그 출력창에 Trace 로그 안나옴 visual studio 2008 로 빌드 중 항상 나오던 로그가 안 나온다... Trace 로그가 안찍힘 Trace 로그가 안나옴 Trace 로그가 안보임 잘 표출되던게 안나오니까 답답. 디버그 출력창을 보면, 이와 같이 로드된 내용 등만 보인다. 무수히 찍혀있어야할 로그가 없음. 저장소도 다시 내려받고 재부팅도 해봤지만 소용없음. 기존에 Trace Log가 잘 표출되던 프로젝트도 이젠 안뜬다. 금방 찾은 해결방법 출력창에서 마우스 우측을 누르면, '프로그램 출력(O)' 이라는 항목이 있음. 이게 체크가 해제되어있는지 확인할것 체크(∨) 시 로그가 정상 출력된다. 그 밖에 다른 디버그 출력창에 메시지가 안뜰 때는, 마우스 우측을 눌러보자. 기존에 나오던 로그가 안나올때, 혹시나 마우스를 잘못눌렀는지 확.. 2023. 2. 7.
[MFC] 두 점의 좌표로 화살표 그리기 내가 그릴 화살표 원리 A의 좌표와 B의 좌표를 알때, A의 좌표를 기준으로 45도,45도로 직선 그리기 A와 B의 좌표를 알아야 하는이유는, 직선이 갖는 각도를 알아야 A에서 +-45 할 각도를 알수 있기 때문 ↘↖↙↗ 윈도우상의 4분면을 고려하여, atan2 함수를 사용한다. * atan2 (math.h 라이브러리 내장함수) 1사분면과 4사분면 사이가 각도(0º)의 기준이다. 1에서 2사분면은 + 0~180도, 4에서 3분면은 -0~180도 이걸 또 음수가 아닌 360도로 계산해서 풀어보려고 했다가 머리만 더썼다.. 가만히 둔다. atan2를 사용하면 라디안 값이 나오는데, degree로 변환을 해주기 위해 * 180 / PI 을 연산한다. 참고로, 일반적인 각도 60도 90도로 sin, cos를 호.. 2023. 1. 5.
[MFC] shapefile(shapeLib-1.5.0) c++ 오픈소스 라이브러리 컴파일하기 비슷한 글 참고 2022.02.25 - [개발아닌개발/C,C++] - [MFC] 내 프로젝트에 외부 라이브러리(zlib 1.2.11) 적용 방법 - windows visualstudio 2008 MFC C언어로 shape 파일을 읽기 위해 라이브러리를 찾던 중, 발견한 http://shapelib.maptools.org/ 사이트는 찾았지만, 압축 풀고 나서 어떻게해야할지 헤맸다.. windows 환경이라 shapelib-1.5.0.zip을 다운받고 압축풀어 보면 README 라는 파일이 있지만 (홈페이지의 github? 확인하면 방법이 나와있긴 함) VCVARS32.BAT 파일 실행 시, 바로 꺼지고 알려준 빌드 방법으로는 못하겠다는 생각이 들어서 Zlib 때와 동일하게 만들기로 함. [ 컴파일 ] 1... 2022. 5. 13.
[MFC] SDI 메뉴 모음(m_wndMenuBar) 없애기 visual studio 2008 프로젝트 생성 당시, 정확히는 기억안나지만 MFC의 테마도 변경가능하고, 메뉴 모음?도구 모음?, 툴바 등 온갖 다 있는 상태였음 내 프로젝트에 맞는 메뉴 모음(m_wndMenuBar) 제거 하는 코드 PreCreateWindow에서도 끄적여보고, Menu를 new로 생성하고 NULL값을 주고 다해봤는데 안되고 결국 해결된 방법. 깔끔한 방식은 아닌것 같지만 일단 안보인다. 1. CMainFrame 클래스(MainFrm.cpp)의 OnCreate함수의 해당 부분 제거 m_wndMenuBar를 사용하지 않을 예정이므로 MainFrm.h에서 선언된 멤버 변수도 삭제하기 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { ... 2022. 4. 29.
[MFC/C,C++] 가변 인자를 이용하여 WORD 배열 Define 선언하기 숫자 배열을 Define으로 선언하여 사용하기 위함 가변 인자를 이용해서 구조체 생성자를 통해 내가 사용할 배열을 선언한다. 큰 숫자범위를 사용하지 않으므로 WORD Array를 적용하기로 함. 다양한 자료형에서 적용가능하다 define 하여 배열 선언 후 사용할 수 있음(CHAR, WORD, UINT 등) 가변인자인 만큼 숫자의 끝을 알기 쉽게 0으로 표기하였음. while 조건문에서 0을 만나면 배열의 끝을 알 수 있다. 때문에 선언할 숫자에 0이 없을때 사용가능한 코드 끝에 0을 써주는 것 매우 중요한데 이건 굳이 0이 아니여도 끝이란걸 알게끔 while 조건문 수정하면됨. typedef struct _WORD_ARRAY :public CWordArray { _WORD_ARRAY(WORD _nNum.. 2022. 4. 19.
반응형