정보공유
-
MFC - 블락킹 현상(메세지 큐 지우기)정보공유/공부 2024. 3. 15. 11:22
메세지 큐 지우기 시간이 오래걸리는 작업을 하다보면 마우스가 빙글빙글 도는 블로킹상태에 빠기게 되는 경우가 있다 이때 마우스 클릭을 하게 되면 프로그램 종료라는 경고창이 뜨는 경우가 있는데 이런 상황을 방지하기 위해 메세지 큐에서 마우스 이벤트를 없애주는 것이 좋을 것이라 판단 되어 기록해 놓음 사용 방법 사용 방법은 과부화 걸리는 부분에 이코드를 넣어주면 된다. PeekMessage(pMsg, NULL, WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE); 자세한 내용은 Micro soft 도움말을 확인하면 될 듯! https://learn.microsoft.com/ko-kr/windows/win32/api/winuser/nf-winuser-peekmessagea PeekMes..
-
[MFC] What is Window Message Number??/ 윈도우 메세지 넘버 확인 / PeekMessage() / OnMessagePending()정보공유/공부 2024. 1. 10. 10:34
메세지가 이상 소켓의 동작은 기본적으로 블로킹으로 수행이 되기 때문에 Connect에 들어가면 외부에서 다른 동작을 할 수 없기 때문에 블로킹 모드로 동작하는 동안 OnMessagePending()함수를 통해 메시지 큐 안의 메시지를 검사하고 이를 처리할 수 있게 만들어 준다고 한다. 일정 시간 간격으로 타이머를 설정한 뒤(SetTimer()) 동작이 시간보다 일찍 끝나게 되면 KillTimer() 를 호출해 메시지 큐에는 타이머가 남아있지 않게 되는데 해당 시간보다 Connect 안에 있는다면 SetTimer가 호출되어 메시지 큐에는 WM_Timer() 메시지 남아있어 작업을 중지하게 만드는 원리이다. 다른 사람들이 한 타임아웃 예제를 보면 msg값에 타이머 nIDEvent 값이 들어가서 해당 메세지와..
-
[MFC] PC <-> PC 소켓 통신 TCP/IP / 이더넷 연결 / 무선 연결 / IP 통신 / JSON / rapid JSON정보공유/공부 2024. 1. 2. 10:25
개요 목적 Pc 두대 이더넷 연결을 통해 데이터 주고 받는 코드 구현 (Soket 통신 TCP/IP) 환경 노트북 2대 LAN 선으로 연결 프로그램주요 내용 피시1을 서버로 만들고 피시2에서 클라이언트로 접속하여 데이터를 주고 받을 수 있도록 구현 + Json 형식 데이터에서 원하는 값 추출 통신 순서는 이렇게 진행이 된다. 서버에서 소켓을 오픈을 하면 연결 대기 (Listen) 하다가 클라이언트에서 연결(Connect)시도를 하면 허락을 한 뒤 데이터 수송신이 이뤄진다. 소켓 통신 기본 설정 - CSocket ‘Csocket’ : base class undefined 발생 시 소켓통신을 하기 위해서는 CSocket 이라는 클래스가 필요한데 초기 프로그램 생성시 window socket 체크를 해주던가 ..
-
[MFC] C++에서 JSON 다루기 / rapid JSON / JSON / 예외처리정보공유/공부 2023. 12. 27. 10:04
JSON JSON이란 JavaScript Object Notation (JSON)은 Java script 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 데이터 포맷을 말하는 건데 공부하다 보면 { “name”: "Chris", “age”: "38" }이런 형식의 데이터를 봤었을 것이다. 키와 값 두개가 쌍으로 이루어진 데이터 포맷인데 내 생각에 비슷한 걸로는 파이썬의 딕셔너리 같은 느낌..? 현재 만드는 프로그램에서 JSON 데이터를 핸들링 하기 위해 외부 라이브러리를 사용하려고 하는데 JSON을 사용할 수 있게 하는 여러 가지 라이브러리 있지만 rapid JSON을 사용하기로 했다. JSON 소스 코드 char* pszBuff;// rapidjson 관련 함수 사용시 char 형을 써야함 ..
-
[MFC] 상단바 없애기정보공유/공부 2023. 12. 18. 09:37
기본 윈도우 MFC 새로운 프로젝트를 만드는 도중... 상단바를 없애려고 하는데 리소스 뷰 - 속성에서 관련 항목들을 모두 False를 해도 안 없어져서 코드 입력하는 것을 기억하기 위해... MainFrm.cpp - 도구모음 없애기 우선 순정 기본 윈도우는 이렇게 도구 모음까지 있는 상태인데 MainFrm에서 기본 창에 대한 것이 지정 가능하다. MainFrm.cpp의 OnCreate에서 ToolBar와 관련된 것들을 주석을 하면 도구 모음은 사라진다. - 메뉴 / 최대, 최소 버튼 삭제 MainFrm.cpp파일에 PreCreateWindow함수 내에 밑에 속성들 설정을 해주면 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: CREATEST..
-
[MFC] 조명 컨트롤러 연결 (Modbus 형식) + RS485 케이블을 이용한 컨트롤정보공유/공부 2023. 12. 13. 14:37
기존 사용하는 조명이 아닌 새로운 조명을 써야하는 일이 생겼다. 기존에는 RS-232케이블을 통해 조명컨트롤러에 연결해서 조명값을 조절했는데 이번 조명 컨트롤러는 RS-232 RS-485 통신해야했다. 이번 프로젝트를 하면서 전기선도 만들어서 연결해보고 조립하는 과정이 있었는데 처음 해보는 건데 흥미로웠고 전기에 대해 많이 배울 수 있어 좋았던 프로젝트 이다. 테스트 하드웨어 작업용 노트북 iPulse controller CCS White Dome (HPD-100sw) 하드웨어 구성 컨트롤러 PC : RS-485 to USB를 통해 연결 위 그림과 같이 생긴 컨트롤러 인데 iPulse strobe controllers라고 한다. 컨트롤러 옆면에 LAN선을 연결하고 랜선의 내부 전선에서 필요한 전선(여기에..
-
[MFC] Visual Studio 2022 새 솔루션 만들기 SDI, 메뉴바 제거, 도구바 제거, 창 속성 변경정보공유/공부 2023. 12. 5. 10:25
2022 Visual Studio에서는 stdafx -> pch로 이름이 변경되었다고 합니다. (Visual Studio 2017 및 이전 버전에서는 파일이 호출 stdafx.h되었습니다.) 라고 마이크로 소프트에서는 알려줍니다. window 2015버전을 쓰고있었는데 2022로 넘어와서 새 프로젝트를 만들려고하니까 헷갈린 점들 정리해 보려고 합니다. MFC앱 템플릿으로 시작 한 뒤 문서템플릿속성 ~ 고급기능까지는 쓰지 않기 때문에 체크만 해제하고 넘어갔습니다. 후에 실행을 하게 되면 이렇게 못생긴 창이 나오게 되는데 없애는 방법은 MainFrame.cpp파일 안에 OnCreate 함수안에 코드를 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if..
-
mfc - web 통신정보공유/공부 2023. 5. 16. 13:58
MFC web 통신하는 법 까먹기 전에 기록해 놓는 용도 web통신을 해야하는 경우가 생겨서 테스트 서버랑 만들어 봤다 server - python / Flask 로 구현 client - C++(MFC) 주고받는 데이터 형식은 Json (rapidjson 사용) - web 접속을 도와주는 일반적인 HTTP 클라이언트 애플리케이션의 단계 | Microsoft Learn 설명서 일반적인 HTTP 클라이언트 애플리케이션의 단계 자세한 정보: 일반적인 HTTP 클라이언트 애플리케이션의 단계 learn.microsoft.com - cpp에서 json데이터를 다른 손질 없이 사용할 수 있게 만들어주는 rapidjson 설명서 / 깃 접속 링크입니다. RapidJSON: Main Page A fast JSON par..