반응형 훈, IT 공부/C,C++,MFC40 C++ 에서의 .h 헤더파일 확장자 사용하지 않는 이유 C++언어를 주 언어로 사용하다보면, 당연하게 생각하면서 사용하다보니 실제 사용된 이유를 잊고 사용하는 코드들이 종종있습니다. C++언어를 통한 개발에서는 이러한 내용의 기초를 세워두는 것이 중요한데요. 특히나 전처리기 include를 통해서 선언하는 헤더파일에 관하여 기본적인 내용을 정리해보려합니다. 안녕하세요 IT훈이입니다 😁 .h 헤더를 사용할때와 사용하지 않을때 #include //표준헤더 #include //사용자정의헤더 iostream은 분명 헤더파일임에도 불구하고, C++에서는 iostream.h라고 표기하지 않고 iostream이라고 표기합니다. 그렇다고해서 iostream이 iostream.h은 같은파일이 아닌 서로 다른파일입니다. 그렇다면 왜 이렇게 헤더를 생략하는 것일까요? C++에서.. 훈, IT 공부/C,C++,MFC 2023. 9. 12. warning C4996 10초만에 해결하는법 3가지 정리, Visual Studio 2022 C4996 오류는 초기에 C++으로 개발하다보면, 정말 자주 볼 수 있는 에러입니다. C4996에러가 뜨면서 빌드가 안되고, 분명 예제사이트에서는 잘만 사용하던데, 나만 안되는 이유를 찾기 정말 어려웠습니다. 해당문제는 MSVC(Microsoft Visual C++)가 강제로 보안에 취약한 함수를 사용하지 못하도록 제어하기위해서 강제로 발생시키는 에러입니다. 해결방법은 총 3가지가 있고, 따라만 해주시면 쉽게 개선이 가능한 에러코드입니다. warning C4996에러발생 빌드를 할때 아래와같은 에러코드가 발생됩니다. the posix name for this item is deprecated. instead use the ISO C and C++ .... 대부분 C4996에러가 발생되는 이유는 보안에 .. 훈, IT 공부/C,C++,MFC 2023. 6. 22. C/C++ IPropertyStore / 파일 속성 모두 얻어오기 .doc .docs .xlsx .pptx C/C++ IPropertyStore / 파일 속성 모두 얻어오기 .doc .docs .xlsx .pptx IPropertyStore() 개발을 진행하다보면 별 특이한 경우를 많이 경험하게 됩니다. 개발을 하다가 발생된 이슈로 인한 기능정리를 위한 포스팅을 진행할까 합니다. 안녕하세요 IT훈이입니다 😁 이슈 word 파일의 버전을 취득해야하는 상황입니다. '속성-자세히-유형' 에 있는 값을 취득하여서 값을 분기처리 해줘야합니다. 해당 값을 얻기위해서 구글링을 진행하는데, 생각보다 원하는 결과를 얻기가 어려웠기에 포스팅으로 기록을 남겨봅니다. SHGetPropertyStoreFromParsingName 함수사용 구글링을 열심히 하다보니, SHGetPropertyStoreFromParsingName 함수를 .. 훈, IT 공부/C,C++,MFC 2022. 8. 11. [VS에러] 함수에서 참조되는 확인할 수 없는 외부기호 LNK1120, LNK2019 #오류 발생 과정 1. visual studio 2019를 통해서 새 프로젝트를 만들고, 외부에 있는 클래스 파일을 불러옴 2. 프로젝트 속성 - C/C++ - 일반 - 추가 포함 디렉터리 해당 위치에 사용할 클래스파일 경로 입력함 3. 미리컴파일된 헤더 pch.h ( 하위버전은 stdafx.h ) 에 사용할 헤더 include 해줌 4. 빌드 실패 5. 오류 발생 -> 2개의 확인할 수 없는 외부 참조 입니다 -> ----함수에서 참조되는 확인할 수 없는 외부기호 #해결방안 1. 사용하려고 하는 대상 .cpp 파일과 .h 파일을 프로젝트에 포함. 2. 빌드 성공 #장애원인 정의와 선언이 헤더파일 a.h에만 되어있다면 상관없지만 선언는 a.h에 되어있고 정의은 a.cpp 되어있는 경우라면 반드시 프로젝트.. 훈, IT 공부/C,C++,MFC 2021. 1. 14. [C++] 멀티바이트 -> 유니코드 변환을 위한 4가지 방법 개발을 하다보면 멀티바이트 유니코드 변환을 해줘야하는 경우가 너무나도 많다. 프로젝트가 멀티바이트로 만들어져있는 경우에 유니코드 문자열을 처리해야한다면 변환을 해야하고, 소켓 통신을 할때는 멀티바이트 형태를 사용해서 또 변환을 해줘야하는 경우도있다. 데이터를 받는쪽이 중국이나 일본, 헝가리일 경우에도 변환을 해서 패킷을 보내주어야한다. 그렇지 않을경우에는 데이터 수신자는 깨져있는 데이터를 받아 처리하게 된다. #1번째 USES_CONVERSION; // 1번 std::wstring wstr = "UNICODE"; // UNICODE -> MULTIBYTE std::string str; str.assign(wstr.begin(), wstr.end()); // MULTIBYTE -> UNICODE std::.. 훈, IT 공부/C,C++,MFC 2020. 6. 5. C++ PCRE 정규식 라이브러리 사용해서 정규표현식 사용하기 POSIX 정규표현식에서 확장된 Perl 방식의 PCRE . . . . 복잡한 설명은 제쳐두고 사용을 하긴 해야하는데 명확하게 사용하는 방법이 나와있는 것을 찾기가 어려워서 정리를 해보았습니다. 1. 검증을 받기위해서 정규식 데이터 세팅 // 1. 검증을 받기위함 정규식 데이터 ( 주민등록번호) char *regex = "(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}"; 검증을 받기위한 데이터를 변수에 넣어준다. 아래의 사이트를 통해서 원하는 정규식을 만들어 낼 수 있다. https://regexr.com/ 불러오는 중입니다... 2. 정규식 패턴을 가지고 컴파일을 진행 // 2. 패턴 컴파일 (검출을 하기 위해서 패턴을 .. 훈, IT 공부/C,C++,MFC 2020. 4. 8. Library, DetourCreateProcessWithDll() 함수 MS에서 제공해주는 후킹 라이브러리는 Detour이다. 그 중 이번에 알게된 녀석이 DetourCreateProcessWithDll 어플리케이션이 시작될때 후킹을 붙이기 원한다면 DetourCreateProcessWithDll 함수를 사용하면 된다. 이 함수는 이미 실행중인 프로세스에 넣어주면 좋다. 링크 : https://www.codeproject.com/Articles/30140/API-Hooking-with-MS-Detours 훈, IT 공부/C,C++,MFC 2019. 9. 17. Visual Studio 2008 - fatal error C1859 미리 컴파일된 헤더에서 예기치 않은 오류가 발생했습니다. 컴파일러를 다시 실행하면 이 문제를 해결할 수 있습니다. 미리 컴파일된 헤더에서 예기치 않은 오류가 발생했습니다. 컴파일러를 다시 실행하면 이 문제를 해결할 수 있습니다. 64bit 컴파일하면 나타나는 오류입니다. Microsoft Developer Network (MSDN) 코드 갤러리에서 핫픽스를 다운받아서 설치하면 해결이 됩니다. 훈, IT 공부/C,C++,MFC 2019. 6. 17. C/C++/Window, 서비스에서 UI 실행시키기 서비스 UI에서 동작시키는법 [문제발생] 서비스에서 UI가 있는 A.exe 프로그램을 CreateProcess() API를 사용하여 실행을 시켰다. 실행은 되었지만 UI가 있는 프로그램임에도 불구하고 UI가 나타나지 않는다. 그 이유는 SYSTEM권한으로 실행되어서 UI가 발생되지 않았던 것이다. [문제분석] 윈도우는 기본적으로 User Interface, GDI, 커널 메인 객체를 제공한다. 커널은 안전하지만, UI, GDI는 그렇지 않기 때문에 추가적인 보안성을 제공하기 위해 윈도우는 Stations와 desktops을 사용한다. 각 윈도우 데스크탑은 세션과 윈도우 스테이션에 속하며, 각 세션에서 오직 한번에 하나의 테스크탑만이 활성되 될 수 있다. 그리고 그것은 반드시 WinSta0에 속해야 한다... 훈, IT 공부/C,C++,MFC 2019. 5. 10. C++, Gdiplus 사용하여 png 생성하기 GDI+ 활용 회사에서 워터마크 관련하여 작업하는 중에 GDI+를 찾게 되었고, 이걸 이용해서 문제를 해결하였다. #include using namespace Gdiplus; 우선 Gdiplus를 사용하기 위해서는 헤더파일을 먼저 선언 해주어야한다. ▶ Gdiplus png 이미지파일 생성하기 // GDI+ 을 사용하기위한 설정 GdiplusInit gdiplusinit; ULONG_PTR gpToken; GdiplusStartupInput gpsi; if(GdiplusStartup(&gpToken, &gpsi, NULL) != Ok) { TRACE(_T("Do Not GDI+ initizlize!")); return ; } //GDI+ 폰트 생성 REAL rSize = 30; Gdiplus::Font .. 훈, IT 공부/C,C++,MFC 2018. 9. 9. [MFC]CreateFont 폰트 관련하여서. ▶ CFont::CreateFont BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bItalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecision, BYTE nClipPrecision, BYTE nQuality, BYTE nPitchAndFamily, LPCTSTR lpszFacename ); nHeight - 글자의 원하는 높이 지정. - 16~384 단위를 넘어가지 않도록 설정해야한다. nWidth - 글자의 넓이를 지정한다. - 0을 입력할 경우에는 사용가능한 글꼴의 가장 가까운 크기의 .. 훈, IT 공부/C,C++,MFC 2018. 8. 31. [MFC]트레이아이콘(Tray)과 풍선(Balloon) 알림 사용 트레이아이콘과 풍선알림 ▶ 트레이아이콘 Windows 운영체제에서는 트레이 아이콘이라는 것이 있습니다. 작업표시줄의 우측 하단을 통해서 살펴볼 수 있습니다. 누구나 쉽게 접할 수 있을 것입니다. 트레이아이콘을 응용하여서 메뉴, 알림, 툴팁 등 을 이용하여서 사용자에게 여러 편의성을 제공할 수 있다는 점이 큰 장점입니다. ▲ win10 트레이아이콘 목록 ▲ win7 트레이아이콘 목록 익숙하게 보던 것들입니다. 그리고 아이콘을 우측 클릭하면 발생하는것을 트레이 메뉴라고 합니다. 다른 프로그램들을 보게되면 트레이아이콘을 실시간으로 모양이 바뀌면서 재미난 모습을 보여주는 것들도 있습니다. 오늘은 그렇게 까지 응용하지는 않고 핵심 부분만 볼 것입니다. ▲ ToolTip 옵션 ▲ 트레이 메뉴 추가적으로 트레이 메뉴.. 훈, IT 공부/C,C++,MFC 2018. 8. 12. 이전 1 2 3 4 다음 반응형