전체 글
-
일반적으로 헤더파일의 중복 포함을 방지하기 위한 방법으로1. #pragma once 와 2. include Guard 의 2가지 방법을 사용하며 큰 결과물(헤더가 중복 컴파일 되지 않음)은 동일하다. 하지만 세부적으로 구현 및 동작에 차이가 있고 각 상황마다 권장되는 방식이 다르기 때문에 차이점을 알고 구분해서 사용하는것이 좋다.1. #pragma once 구현 Header 파일 최상단에 위치함.( Include 선언 전에) Visual Studio 에서 자체 생성되는 Class 의 헤더 파일에 자동으로 추가되는 형태. #pragma once// 헤더 파일 내용class CustomClass { // 클래스 정의}; 특장점 코드의 간결함: 한 줄로 중복 포함 방지를 설정해서 코드가 간결해짐.빠른 ..
헤더 중복 방지 #pragma once 와 Include Guard 차이일반적으로 헤더파일의 중복 포함을 방지하기 위한 방법으로1. #pragma once 와 2. include Guard 의 2가지 방법을 사용하며 큰 결과물(헤더가 중복 컴파일 되지 않음)은 동일하다. 하지만 세부적으로 구현 및 동작에 차이가 있고 각 상황마다 권장되는 방식이 다르기 때문에 차이점을 알고 구분해서 사용하는것이 좋다.1. #pragma once 구현 Header 파일 최상단에 위치함.( Include 선언 전에) Visual Studio 에서 자체 생성되는 Class 의 헤더 파일에 자동으로 추가되는 형태. #pragma once// 헤더 파일 내용class CustomClass { // 클래스 정의}; 특장점 코드의 간결함: 한 줄로 중복 포함 방지를 설정해서 코드가 간결해짐.빠른 ..
2024.05.20 -
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..
JAN(Bar)Code 생성 QT Sample SourceJAN 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..
2023.11.02 -
NSIS에서 사용되는 함수들 중 내가 사용하기 위해 정리함 안하겠지만생각 날때 마다 해야지 실행 파라메터 확인 1 2 !include "FileFunc.nsh" ${GetParameters} $R0 cs - "installer.exe" "/T=1 K=key" 식으로 호출되면 "/T=1 K=key" 으로 $R0 에 저장 문자열 치환(Replace) 1 2 3 4 5 6 7 !include "StrFunc.nsh" ${StrRep} ${UnStrRep} StrCpy $R1 "NSIS Installer?" ${StrRep} $R0 $R1 "?" "!" cs - ${StrRep} 변환된 변수 원본 변수 원본 문자열 변환할 문자열 ( $R1에 저장된 문자열의 "?"를 "!" 로 바꿔 $R0에 저장) 드라이브 용량..
[NSIS] 함수 들NSIS에서 사용되는 함수들 중 내가 사용하기 위해 정리함 안하겠지만생각 날때 마다 해야지 실행 파라메터 확인 1 2 !include "FileFunc.nsh" ${GetParameters} $R0 cs - "installer.exe" "/T=1 K=key" 식으로 호출되면 "/T=1 K=key" 으로 $R0 에 저장 문자열 치환(Replace) 1 2 3 4 5 6 7 !include "StrFunc.nsh" ${StrRep} ${UnStrRep} StrCpy $R1 "NSIS Installer?" ${StrRep} $R0 $R1 "?" "!" cs - ${StrRep} 변환된 변수 원본 변수 원본 문자열 변환할 문자열 ( $R1에 저장된 문자열의 "?"를 "!" 로 바꿔 $R0에 저장) 드라이브 용량..
2022.10.31 -
인스톨러 자체 모듈의 버전 및 파일 설명 추가 하는 스크립트 ( 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..
[NSIS] Installer 버전 정보 설정( + 빌드 시 변경)인스톨러 자체 모듈의 버전 및 파일 설명 추가 하는 스크립트 ( 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..
2022.10.31 -
기본 다이얼로그에 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] Static Control 배경 투명화기본 다이얼로그에 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..
2021.07.07 -
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]Dialog UPDATE_COMMAND_UI 안먹는 문제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); //메뉴 비활성..
2021.07.05