GetComputerName

Syntax

BOOL WINAPI GetComputerName(
__out LPTSTR lpBuffer,
__inout LPDWORD lpnSize
);

Parameters

lpBuffer [out]

A pointer to a buffer that receives the computer name or the cluster virtual server name. The buffer size should be large enough to contain MAX_COMPUTERNAME_LENGTH + 1 characters.

lpnSize [in, out]

On input, specifies the size of the buffer, in TCHARs. On output, the number of TCHARs copied to the destination buffer, not including the terminating null character.

영어라고 대충 읽었더니만~ 아니 그냥 한글이어도 대충 읽었을 간단한 함수인데..
잘나왔다가 안나왔다가 지맘대로 동작을 해서 이상하다 싶었는데..
두번째 인자가 __inout이었다. 버퍼가 할당된 크기를 알려주어야 하는데 변수를 초기화를 안했더니 0으로 되서 안나오는 경우도 있고 쓰레기 값들어가서 나올때도 있고 그랬던 거였다.

이런 세세한 것까지 죄다 기억할 수도 없는 노릇이고, 이거야 달랑 이름가져오는 문제여서 심각하지 않지만 중요한 부분에 이런 실수가 들어가있으면 정말 찾기도 어려울텐데~

갑자기 막 코딩을 하는 내 자신이 두려워지기 시작한다.

Posted by philosup

2009/02/17 11:50 2009/02/17 11:50

창을 나누면 창과 창사이에 크기를 조절하는 Splitter bar가 존재한다.
이 바의 색 및 두께를 조절하기 위해선 상속을 받아서 처리하면 된다.

OnDrawSplitter(CDC* pDC, ESplitType nType, const CRect& rectArg)
함수를 오버라이딩하여 사용하면 되고
간단한 색 조절 코드
 if((nType != splitBar) || (pDC == NULL))
 {
  CSplitterWnd::OnDrawSplitter(pDC, nType, rectArg);
  return;
 }
 ASSERT_VALID(pDC);
 CBrush brush;
 brush.CreateSolidBrush(RGB(1,68,122));
 pDC->FillRect(&rectArg, &brush);

ESplitType은 다음과 같이 정의 되어 있다.
 enum ESplitType { splitBox, splitBar, splitIntersection, splitBorder };

MSDN을 찾아보면 아래와 같다. 위 예제 코드를 보면서 응용하면 되것다.

A value of the enum ESplitType, which can be one of the following:

  • splitBox   The splitter drag box.

  • splitBar   The bar that appears between the two split windows.

  • splitIntersection The intersection of the split windows. This element will not be called when running on Windows 95/98.

  • splitBorder   The split window borders.


추가로 아래와 같은 변수 값의 조절로 Splitter bar의 크기및 모양을 조절할 수 있다.
m_cxSplitter,  m_cySplitter
m_cxBorderShare, m_cyBorderShare
m_cxSplitterGap, m_cySplitterGap
m_cxBorder, m_cyBorder

Posted by philosup

2009/01/21 14:14 2009/01/21 14:14

Visual Studio 2008 Beta2

회사에서 프로젝트로 하고 있는 것은 Visual Studio .Net 2003으로 개발 중이다.

이래저래 자기계발을 하고 싶지만 쉽지만은 않다. 왜 업무 = 자기계발이 안되는 걸까? 생각하다.
귀찮더라도 업무=자기계발의 발판을 마련하고자 한다.

일단 많이 듣고 책도 보고 관심만 많은 TDD해보고 싶다. 근데 툴을 이용하지 않고 할 방도가 전혀 생각이 나지 않는다.
eclipse를 사용하기에는 업무와의 연계성을 찾기가 너무 힘들다.

그래서 찾아보니 Visual Studio 2005부터는 뭔가 지원해 주는 것이 있는 것이다.
뭔지 어떻게 해야 될지 전혀 모르고 있지만 뭐 일단 시작하는 거다.
그래서 2005를 설치할려고 다운로드 센터에 갔더니만 2008이 올라와 있어서 뭐 이왕 할꺼 최신버전으로~

일단 설치는 완료하고... 근데.... 어떻게 해야되는 건지 도무지 모르겠다.

사용자 삽입 이미지

뭐 이런게 있어서 만들어 보았지만 여전히 답답한... 관련 문서 부터 좀 찾아봐야겠다.

Posted by philosup

2007/09/07 16:42 2007/09/07 16:42

Windows Contacts replaces WAB in Windows Vista

http://msdn2.microsoft.com/en-us/library/ms735779.aspx

비스타에서 Outlook Express가 사라지고, Windows Email, Windows Contacts, Windows Calendar로 분리/대체 되었다.
그래서 아래 써놓은 WAB in Vista에서 언급한 Export는 Vista에서는 Windows Contacts으로 해야하는 것이 옳은 것 같다. 위 참조 문서를 보고 열심히 공부를 해보는 수 밖에..

위 내용의 적용은 토의를 해봐야 할 듯 하고 또한, WAB으로 Export도 가능하면 될 수 있도록 하는 것이 좋겠다.

Posted by philosup

2006/12/15 16:51 2006/12/15 16:51

WAB in Vista

 비스타 이놈 때문에 죽갔다. 호환성... 일단 직접깔아서 써본결과 이것저것 막히는 것이 많아서 다시 지워버렸다. 무엇보다 윈어플 개발자로서 비스타와의 호환성테스트를 하고 있는데.. 이것이 제대로 이루어지지 않는다.

드라이버관련쪽이 더욱 어렵겠지만 비스타에서 Outlook Express가 사라지는 바람에 골치가 이만저만이 아니다.

현재 처리중인 문제는 MAPI를 사용한 WAB이다. 일단 이걸 쓰기 위해 WAB32.DLL을 로드해야 하는데 레지스트리에 WAB_DLL_PATH_KEY로 부터 가져온다. 일단 여기서 비스타와 XP계열의 차이점이 때문에 문제가 생겼었다.
   XP에서는 파일의 절대경로가 레지스트리에 등록되어 있는 반면에
   Vista에서는 %ProgramFilesCommon%이란 경로로 되어 있었다.
현재는 문자열의 시작이 '%'인지를 판단하여 일반적인 절대경로로 바꾸어 놓긴 했지만 땜빵코드일뿐이다.(아직 %[NAME]%값의 절대경로를 윈도우가 어떻게 판단해서 가져오는지 모르겠다ㅜ.ㅜ;)

일단 위의 처리로 DLL을 로드하는데는 성공하였다. XP에서 Export한 wab파일을 Import해도 잘 된다. 하지만 Export가 안된다. 진행과정및 모든 wab관련 모듈은 정상동작(리턴값들의 이상이 없음)하나 파일이 생성이 안된다. 도대체 알 수 없는 벽에 부딛혀 고민중이다.

Posted by philosup

2006/12/14 14:25 2006/12/14 14:25

COM은 무엇인가?


COM(Component Object Model)은 소프트웨어 컴포넌트 개발을 위한 마이크로소프트의 플랫폼이다. 마이크로소프트에 의해 1993년에 소개되었다. 이 기술은 프로세스간 통신을 가능하게 하고, 이 기술을 지원하는 어떠한 프로그래밍 언어에서도 오브젝트를 동적으로 생성할 수 있도록 하기 위해 사용된다. 소프트웨어 개발 세계에서는 COM이라는 용어를 종종 OLE, OLE 자동화, ActiveX, COM+, DCOM 기술을 포함하는 포괄적 용어로 사용한다. COM이 소개된 건 1993년이지만, 마이크로소프트는 1997년이 되어서야 COM이라는 이름을 강조하기 시작했다.
출처 : http://ko.wikipedia.org/wiki/컴포넌트_오브젝트_모델

  • Class Factory
  • CoClass
.... 정리중...

Posted by philosup

2006/12/11 15:45 2006/12/11 15:45

find_all_regex

정규식은 이메일 추출용


#include <boost/algorithm/string/regex.hpp> //find_all_regex
       vector<string> tokens;
       regex rx("[_a-zA-Z0-9-]+(\\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)+");
       find_all_regex( tokens, tmp, rx );
       for(int i=0; i&lt;tokens.size(); ++i)
              m_ctrlListBox.AddString(tokens[i].c_str());

Posted by philosup

2006/08/03 15:02 2006/08/03 15:02

string to wstring

유니코드때문에 이리 저리 찾다가 발견한 코드 유용한듯^^


template<class E,
       class T = std::char_traits<E>,
       class A = std::allocator<E> >

class Widen : public std::unary_function<
const std::string&, std::basic_string<E, T, A> >
{
       std::locale loc_;
       const std::ctype<E>* pCType_;

       // No copy-constructor, no assignment operator...
       Widen(const Widen&);
       Widen& operator= (const Widen&);

public:
       // Constructor...
       Widen(const std::locale& loc = std::locale()) : loc_(loc)
       {
       #if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6.0...
              using namespace std;
              pCType_ = &_USE(loc, ctype<E> );
       #else
              pCType_ = &std::use_facet<std::ctype<E> >(loc);
       #endif
       }

// Conversion...
       std::basic_string<E, T, A> operator() (const std::string& str) const
       {
              typename std::basic_string<E, T, A>::size_type srcLen =
                     str.length();
              const char* pSrcBeg = str.c_str();
              std::vector<E> tmp(srcLen);

              pCType_->widen(pSrcBeg, pSrcBeg + srcLen, &tmp[0]);
              return std::basic_string<E, T, A>(&tmp[0], srcLen);
       }
};

Posted by philosup

2006/08/03 14:47 2006/08/03 14:47


Calendar

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30