순환 종속(Circular Dependency) 와 전방 선언(Forward Declaration)
·
DEV/C++
AClass 와 BClass 가 있고AClass에는 BClass* 를 선언부(.h)에 선언하여 전역변수로 사용 하고BClass에서는 AClass 의 함수를 호출 한다 라는 구성으로 되어있다고 하자. 그럼#pragma once#include "BClass.h" // BClass를 직접 포함class AClass {public: BClass* b; // BClass의 포인터 사용};[AClass.h] #pragma once#include "AClass.h" // AClass를 직접 포함class BClass {public: void someFunction(AClass* a); // AClass의 함수 호출};[BClass.h] 와 같이 구현되면 순환 종속(Circular Dependency..
헤더 중복 방지 #pragma once 와 Include Guard 차이
·
DEV/C++
일반적으로 헤더파일의 중복 포함을 방지하기 위한 방법으로1. #pragma once 와 2. include Guard 의 2가지 방법을 사용하며 큰 결과물(헤더가 중복 컴파일 되지 않음)은 동일하다. 하지만 세부적으로 구현 및 동작에 차이가 있고 각 상황마다 권장되는 방식이 다르기 때문에 차이점을 알고 구분해서 사용하는것이 좋다.1. #pragma once 구현 Header 파일 최상단에 위치함.( Include 선언 전에) Visual Studio 에서 자체 생성되는 Class 의 헤더 파일에 자동으로 추가되는 형태.  #pragma once// 헤더 파일 내용class CustomClass { // 클래스 정의}; 특장점 코드의 간결함: 한 줄로 중복 포함 방지를 설정해서 코드가 간결해짐.빠른 ..
JAN(Bar)Code 생성 QT Sample Source
·
DEV/C++
JAN Code는 쉽게 말해서 일본에서 사용되는 바코드의 형태이다. (JAN 자체가 Japanese Article Numbering 의 약자) 바코드와 같이 각 Index별로 의미하는 값이 정해진다 (참조 :https://www.gs1jp.org/code/jan/procedure.html) 실제 구현 코드보면 글보다 더 쉽다.. #C++/QT 사용 #include #include #include bool validateCode(const QString& code, int length) { QRegularExpression regex("^[0-9]{" + QString::number(length) + "}$"); QRegularExpressionMatch match = regex.match(code); r..
[MFC] Static Control 배경 투명화
·
DEV/C++
기본 다이얼로그에 Static Control 올리면 그 컨드롤 영역만큼 기본 배색(회색)으로 보이는데, 이렇게 그 영역만큼 보여서 해당 부분을 투명화 하는 처리가 필요하다. 다이얼로그에 WM_CTLCOLOR 이벤트 추가 한뒤, 해당 이벤트 함수(OnCtlColor) 수정 HBRUSH CStaticTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); int nRet = pWnd->GetDlgCtrlID(); if (nRet == IDC_STATIC ) //여기에 투명화 처리할 Static ID추가 { pDC->SetBkMode(TRANSPARENT); hb..
[MFC]Dialog UPDATE_COMMAND_UI 안먹는 문제
·
DEV/C++
Dialog 에 UPDATE_COMMAND_UI 가 적용 안되는 증상 아래는 토글flag에 따라 메뉴UI 활성/비활성 화 하기 위한 소스인데, 1.초기 버튼토글 위한 전역 변수생성, 초기화. _bstart = TRUE; 2. 버튼 컨트롤의 COMMAND, UPDATE_COMMAND_UI 만들어서 함수내용 작성한다. //ID_STRAT버튼의 COMMAND 이벤트함수 void CMenuTestDlg::OnStrat() { _bstart = !_bstart; //토글 } //ID_STRAT버튼의 UPDATE_COMMAND_UI void CMenuTestDlg::OnUpdateStrat(CCmdUI* pCmdUI) { if (_bstart == TRUE) pCmdUI->Enable(FALSE); //메뉴 비활성..
[MFC] CheckBox, RadioButton 체크 옵션
·
DEV/C++
MFC에서 체크박스나 라디오버튼 체크 옵션 SetCheck(TRUE); 함수 사용한다 CButton* pButton; pButton = (CButton*)GetDlgItem(IDC_RADIOBUTTON); pButton->SetCheck(TRUE); 하거나, IDC_RADIOBUTTON 의 컨트롤 멤버변수 설정해서 멤버변수가 m_radiobutton 이라면, m_radiobutton.SetCheck(TRUE);