728x90

c++ 8

문자 및 문자열의 split 구현

오늘은 문자 또는 문자열을 split 하는 방법에 대해 설명합니다. 보통 자바스크립트나 자바 등에서는 쉽게 제공이 되지만 C++에서는 직접 구현을 해줘야 합니다. 여러군데에서 설명나온걸 마니 보았지만 실제 업무에서 적용되어서 운영되는 것인지 명확하지 않기 때문에 제가 현재 사용하고 있는 함수를 공개합니다. * 문자단위의 split int Util::Split(LPCTSTR lpszExpression, TCHAR chDelimiter, CStringArray &result) { int nCount = 0; CString strSub; while (AfxExtractSubString(strSub, lpszExpression, nCount++, chDelimiter)){ strSub.TrimLeft(); st..

프로그램/C++ 2021.01.25

내 현재 폴더에 INI 파일 일고 쓰기

오늘은 INI 파일을 사용하는 법에 대해 설명하고자 합니다. 일반적인 INI 함수는 WINNT\SYSTEM 에 저장되어 사용되는것이 대부분인데 이 방식은 INI파일 관리하는데 문제점이 있고. 레지스트리 함수 또한 레지스트리에서 찾기도 힘들고, 관리 또한 힘든 점이 있습니다. 아래의 함수는 특정 폴더 위치에 INI을 생성해서 관리하는 방법을 설명하고자 합니다. 일반적으로 실행되는 위치 또는 그 하위폴더에 잡게 됩니다. * 특정폴더의 INI 읽기 // CString parm_command : command명 // CString parm_default : 없을경우 default값 CString Util::GetInformationINI(CString parm_command, CString parm_defaul..

프로그램/C++ 2021.01.15

바탕화면에 단축아이콘 만들기 (각종)

오늘은 윈도우 시스템의 바탕화면, quickLaunch, 시작메뉴 에 원하는 실행파일을 위한 단축아이콘 생성에 대한 통합 함수를 설명하고자 합니다. 아래 함수 하나면 원하는 위치에 생성할 수 있습니다. (win10 에서는 안해봐서 될지는 잘.. 해봐야 알 것 같네요..) 이 단축아이콘을 변경되는 경우는 PC을 재부팅해야 설정이 되더라구여.. 원래는 아래 함수 후에 시스템에 notify 을 줘야 하는데 그 부분은 검색해 보시면 됩니다. * 소스코드 // LPTSTR pszFilePath : 실행파일경로 및 파일명.확장자 // LPTSTR pszTitle : \\파일명.lnk // LPTSTR pszDescription : 표시할 툴팁 // BOOL bDesktop : 바탕화면 생성 유무 TRUE., FAL..

프로그램/C++ 2021.01.15

Dialog 모달리스 사용하기

오늘은 C++에서 모달(Modal), 모달리스(Modaless) 대해 설명하고자 합니다. 모달 은 잘 아시겠지만 DoModal() 함수를 이용하는 것이고, 모달리스 는 create을 통해 생성 후 필요할 때 사용하는 것입니다. 모달 은 DoModal() 만 호출하면 사용할 수 있기 때문에 생략을 하고요, 모달리스 에 대해 생성, 파괴 에 대해 설명드리고자 합니다, * 소스코드 (Header) #include "AaaWnd.h" CAaaWnd *mp_aaa_wnd; * 소스코드 (CPP) // 생성 mp_aaa_wnd = NULL; mp_aaa_wnd = new CAaaWnd(); if(mp_aaa_wnd){ mp_aaa_wnd->Create(IDD_WINDOW_DLG, this); mp_aaa_wnd->..

프로그램/C++ 2021.01.13

클래스기반의 쓰레드 사용하기

오늘은 쓰레드을 사용하는데 있어 일반적인 무한루프를 통해 프로세스를 처리하는 방식이 아닌 클래스기반하에 Cwnd 나 CDialog 기반하에 돌릴 수 있는 쓰레드를 만드는 방법에서 가장 심플하게 할 수 있는 방법을 소개하고 합니다. CWinThread 을 통해서도 만드는 것도 있지만 오늘은 다른 방법으로 만들고자 합니다. * 소스코드 (header) #include "ProcessThread.h" ProcessThread *mp_thread; * 소스코드 (cpp) mp_thread = NULL; void CDlg::ThreadStart() { if(mp_thread) ThreadEnd(); mp_thread = (ProcessThread *)AfxBeginThread(RUNTIME_CLASS(Proces..

프로그램/C++ 2021.01.13

vc++에서 간단히 사용헐 수 있는 html 파싱 dll

vc++에서 간단히 사용헐 수 있는 html 파싱 dll http://htmlcxx.sourceforge.net/ htmlcxx - html and css APIs for C++ Description htmlcxx is a simple non-validating css1 and html parser for C++. Although there are several other html parsers available, htmlcxx has some characteristics that make it unique: STL like navigation of DOM tree, using excelent's tree.hh library from Kasper Peeters It is possible to reprod..

프로그램/C++ 2021.01.11

네트워크 연결상태 확인

오늘은 C++ 개발에 있어 네트워크 연결 상태를 확인할 때 사용하는 함수 에 대해 설명합니다. 아주 간단한 함수 하나만 있으면 확인할 수 있습니다. 함수명은 InternetGetConnectedStateEx 입니다. * 소스코드 DWORD CDlg::NetworkStatus() { DWORD dwFlag; TCHAR szName[256]; return ::InternetGetConnectedStateEx(&dwFlag, szName, 256, 0); } 위 함수를 보면 특별한 인자 없이 InternetGetConnectedStateEx 을 던지게 되면 응답값이 true 이면 연결된 상태입니다. 응답되는 인자에 여려상태값이 있는데 이 값을 MSDN에서 보면 아래와 같습니다. etrieves the conn..

시스템 2021.01.10

Sleep 을 대신할 수 있는 Wait 함수

오늘은 Sleep 함수에 대해 얘기하고자 합니다. 일반적인 개발언어가 다 그렇듯이 sleep 함수는 단점이 해당 프로그램이 lock이 걸린다는 점입니다. 즉, 화면이 멍해지죠.. 그래서 프로세스 부분을 Thread 로 구현해서 프로그램 안에 또 다른 프로그램이 문한루프나 sleep 을 통해 프로세스를 처리를 하고, 화면 상의 프로그램은 마우스 키보드 이벤트를 받아 처리를 하게끔 합니다. 근데 초보 프로그래머나 thread 을 사용하기에는 과도한(?) 프로그램이나... 또는 thread 안에서 큰 부하가 없이 sleep 을 사용해야 될 때가 있는데.. 이런 때 아래 함수를 이용하시면 편리합니다. 핵심은 sleep(1) 과 PeekMessage, TranslateMessage, DispatchMessage ..

프로그램/C++ 2021.01.10
728x90
반응형