전체 글 269

COM에서 DATE 타입 사용하기

ActiveX에서 외부에 노출할 메소드를 하나 만들려고 할 때 보이는 Data 타입 중 하나가 DATE 타입이다. DATE는 time_t 보다 더 큰 타입이라나. 암튼 그렇다. ActiveX에서 이렇게 받았다. DATE m_ChartFirstDate COleDateTime dateChartFirst(this->m_ChartFirstDate); int nYear = dateChartFirst.GetYear(); int nMonth = dateChartFirst.GetMonth(); int nDay = dateChartFirst.GetDay(); 그리고 2006년 12월 31일이 DATE 타입으로 어떤 값인지를 알아야 HTML에서 ActiveX로 값을 넘길 수 있다. 그건 이렇게 만들었다. COleDateT..

switch / case의 이상한 경험

MemoryDC에서 모든 그림을 다 그려온 다음 bitblt하려고 다음과 같이 했다. CDC MemDC; MemDC.CreateCompatibleDC(pDC); CBitmap bitmap; bitmap.CreateCompatibleBitmap(pDC, m_BackImage.GetWidth(), m_BackImage.GetHeight()); CBitmap *pBitmap = MemDC.SelectObject(&bitmap); switch(spec) { case 0 : foo(&MemDC); break; case 1 : foo(&MemDC); break; } 그런데 저거 안된다. foo로 호출한 MemDC안에 아무것도 안 그려진다. 그래서 함수 호출하지 않고 switch(spec) { case 0 : Mem..

SVN에서 SSH 터널링하기

SVN에서 SSH로 터널링할 수 있다. 장점 1. passwd 파일을 통해 비밀번호가 노출되지 않는다. 2. SSH를 통하니만큼 보다 보안유지에 좋다. 3. 서버에 SSH만 떠 있으면 그걸로 끝이다. 4. 특별히 svnserve를 띄울 필요도, 외부에서 접속하려고 그 포트를 따로 열어줄 필요도 없다. 단점 1. repository로 가는 문자열 길이가 좀 길어졌다고 해야 하나. 2. 사용자수만큼 리눅스 계정을 생성해 줘야 한다. 서버 설정 SSH 터널링을 하면 리눅스의 사용자 계정으로 접속하게 된다. 그리고 그 사용자 계정으로 로그인해서 그 사용자의 계정 밑의 폴더에 repository를 생성해서 사용하게 된다. svnadmin create --file-fs fsfs TEST 이런 식이다. 그리고 사용자..

슬라이더 콘트롤의 특징

슬라이더 콘트롤의 모양을 바꾸고 싶을 때가 있다. 슬라이더 기본콘트를은 이지만, 다음과 같이 새로 고칠 수 있다. 하지만 이때 알아야 할 사항이 있다. 손잡이 Thumb의 최대 크기는 11픽셀이라는 거다. 그리고 맨 왼쪽에 손잡이를 놓으면 그때의 THumb의 rect.left가 8이 나온다. 8~Thumb의 width()만큼 화면에 그려지는거다. 최대로 오른쪽에 놓으면 그때 Thumb의 Rect.left는 89이다. 89~THumb의 Height()만큼 그려진다. 89 + 11 = 100. 이 값을 넘어서면 Thumb이 짤린다. 기본 트래커의 THumb은 정확히 11픽셀의 가로를 갖는다. 그리고 위아래 특히 아래 여백이 충분하지 않으면 손잡이를 잡고 움직일 때 제대로 되지 않는 현상이 발생한다.

1단계 Undo하기

1단계 Undo하기. 아주 단순하게 1단계의 Undo만 할 수 있다. 생각해 봤는데 그렇게 어렵지 않게 할 수 있다. 만약 TextList를 Undo한다면 다음과 같이 하면 된다. TextList의 형이 CTextList라면 CTextList형으로 2개의 슬롯을 만든다. 배열을 이용하자. CTextList textlist[2] 이렇게 2개의 배열을 만든다. 그리고 int m_nUndoIndex를 통해 2개의 배열중 어느 배열을 이용하면 되는지를 알 수 있다. 처음엔 0으로 세팅한다. 그리고 0번째 배열에 맨 처음 초기 상태의 값들을 넣는다. 이렇게 해야 맨 처음 한번 데이터를 넣고 그걸 Undo할 때 맨 처음 상태로 돌아갈 수 있다. 그리고 데이터를 하나씩 추가할 때마다 m_nUndoIndex를 0, 1..

프로그래밍 2006.11.05