본문 바로가기

Programming/Tips(C++,C#)142

Factory Pattern * 이 글은 C#기준으로 작성하였습니다. Factory Pattern. 같은 인터페이스를 가지는 여러 클래스들을 생성하려고하면.. 이 패턴을 쓰는것이 좋았다. (개인취향임..) 예를 들어, 비슷한 역할을 하는 클래스들이 여러개가 필요하다고 하면.. 이걸 매번 각각의 위치에서 생성하는 것도 하나의 방법이 되겠지만, 이걸 어느 한곳에서만 생성하게 해준다면? 그리고, 해당 클래스들을 사용하는 입장에서는 어느 클래스를 사용해도 동일한 코드를 사용할 수 있다면? 예를 들어, window client프로그램인데, Database에 접속하는 경우를 생각해보자.. MySQL, MS-SQL에 접속한 클래스들을 만든다고 하면? public class MSSQLHandler{ public void Connect(...){ .. 2022. 7. 18.
내 마음대로 짠 로그라이터 일을하면서 로그를 남겨야 할 일이 많아서 이와 같이구현한다. #include #include typedef enum { NORMAL = 0, WARNING = 1, DEBUGMODE = 2, } LogLevel; //로그레벨은 class CLogWriter{ public: CLogWriter(){ } ~CLogWriter(){ } //method public: void InitializeLogWriter(){ //로그라이터 설정 GetWorkDirectory(strCurPath); //현재 디렉토리 가져오는 함수 //로그 경로 만들기. strLogPath.Format(_T("%s\\Log"), strCurPath); if (::PathFileExists(strLogPath) == FALSE){ ::Cre.. 2016. 10. 13.
하드디스크 용량 가져오기 참조 : https://msdn.microsoft.com/ko-kr/library/ms890887.aspx 역시 MS에서는 웬만한건 다 오픈해 준다. 남아있는 하드디스크 용량까지도. 바로... GetDiskFreeSpace (!!!) 함수 원형은 GetDiskFreeSpaceA( LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters ); lpRootPathName : 탐색할 드라이브 경로 (최상위 root) lpSectorsPerCluster : 클러스터당 섹터의 수 lpBytesPerSector : 섹터당.. 2016. 9. 26.
STL에서 map, vector등에 힙에 할당한 객체를 삽입한 경우 STL에서 즉.. new를 이용하여 생성한 객체를 삽입할 경우. 반드시 delete를 해줄것. 예를들어 vector objStruct; for( int i = 0; i < iMax ; i++){ MyStruct *pObj = new MyStruct; objStruct.push_back(pObj); } ... vector::iterator itr; for(itr = objStruct.begin(); itr != objStruct.end(); itr++){ SAFEDELETE(itr); } objStruct.clear(); 뭐.. 대략 위에처럼.. cf. SAFEDELETE는 내가 주로 사용하는 delete관련 코드를 매크로로 만들어둔것. #define SAFEDELETE(X) if( X != NULL){ .. 2016. 9. 26.
C#에서 IE띄워서 핸들링하기 밑에 포스팅에서 작업을 할 때에.. WebBrowser를 사용해서 작업했는데.. ActiveX컨트롤을 불렀을 때 비정상 종료되는 문제가 있었다. (원인은 파악은 안되나. activeX컨트롤이 올라오면 발생했음. 내가 만든 ActiveX가 아니니..) 그래서 차선책(?)으로 IE를 직접 불러서 작업하기로. 해야할 것 1. 웹페이지를 연동한다. (Post전송사용) 2. 페이지가 로딩되면 해당 HTML에 조작(-_-)을 한다. using SHDocVw; using mshtml; -> 이 두개를 사용하기 위해서.. Microsoft HTML ObjectLibrary(mshtml) Microsoft Internet Controls (SHDocVw) 를 참조 추가. 우선 IE를 만들자. 사용방법은 WebBrowse.. 2016. 7. 7.
C# WinForm의 WebBrowser컨트롤 사용 시 javascript:void(0) 동작 안하는 경우 C#에서 윈폼의 WebBrowser컨트롤을 사용하여 브라우저를 만들 때, 아래와 같은 경우 경로 탐색을 정상적으로 하지 못한다. func(){ ... window.location.replace("url2"); ... } 위와 같은 페이지를 만나면 url2로 탐색을 하고, javascript:void(0)을 다음에 탐색을 하는데, 이 코드가 동작하지 않음. 해결책은 레지스트리에 값을 써야한다. (레지스트리 건드리기 싫어하지만 답이 없다.) HKLM(or HKCU)\\Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl에.. FEATURE_SCRIPTURL_MITIGATION 키 아래에 아래 값을 설정한다. $(실행파일명) (0x00000001) 값 형.. 2016. 7. 4.
728x90