순환 종속(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..
[NSIS] 함수 들
·
DEV/NSIS
NSIS에서 사용되는 함수들 중 내가 사용하기 위해 정리함안하겠지만생각 날때 마다 해야지실행 파라메터 확인12!include "FileFunc.nsh"${GetParameters} $R0cs   - "installer.exe" "/T=1 K=key" 식으로 호출되면  "/T=1 K=key" 으로 $R0 에 저장 문자열 치환(Replace)1234567!include "StrFunc.nsh" ${StrRep}${UnStrRep} StrCpy $R1 "NSIS Installer?"${StrRep} $R0 $R1 "?" "!"cs- ${StrRep} 변환된 변수 원본 변수 원본 문자열 변환할 문자열 ( $R1에 저장된 문자열의 "?"를 "!" 로 바꿔 $R0에 저장)  드라이브 용량 확인123!include ..
[NSIS] Installer 버전 정보 설정( + 빌드 시 변경)
·
DEV/NSIS
인스톨러 자체 모듈의 버전 및 파일 설명 추가 하는 스크립트 ( ref : https://nsis.sourceforge.io/Reference/VIAddVersionKey) 1 2 3 4 5 6 7 8 9 10 11 12 !define PRODUCT_NAME "Test Product" !define COMPANY_NAME "Test Company" !define PRODUCT_VERSION "1.0.1.25" VIAddVersionKey 'ProductName' '${PRODUCT_NAME} Setup' VIAddVersionKey 'Comments' '${PRODUCT_NAME} Setup' VIAddVersionKey 'CompanyName' '${COMPANY_NAME} Co., Ltd.' VIAd..
[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..