반응형

프로그램 중에는 신기하게도~ 창이 투명하게 비치는(?)... 그런 것들이 있습니다.
( 대표적인 예로는 '네이트온' 메신저의 '미니대화' 창~ 이 있구요~ㅋ )

예전에~ 그런 투명창을 처음 접해봤을땐~ 엄청 신기하더군요.

' 어떻게 저런식으로 투명하게 만들수 있을까? '...

그 때 투명창 만들기 위해서~~ 이것저것 뒤져보고 삽질(?)하던 기억을 떠올리며~
살포시 포스팅을 해봅니다~ㅋ
.
.

우선~ 한가지 먼저 알려드리자면~ '델파이' 나  'C++ 빌더' 같은 경우는...
별다른 코딩을 하지 않아도 툴~ 자체에서 투명창 효과를 낼 수 있도록 지원을 해줍니다.
( 물론~~ 좀 오래된 버전은 안되구요~ ^^;;;; )

메인 Form 의 속성 중에 'AlphaBlend''AlphaBlendValue' 항목이 있는데~
'AlphaBlend' 를 'TRUE' 로 맞춰두고~ 'AlphaBlendValue' 값을 설정하면 됩니다.

Intro 는 여기까지~~ 이제 본격적으로(?) ^^;

투명창을 만들기 위해서는 SetLayeredWindowAttributes 함수를 사용하면 됩니다.
( 참고로 해당 함수는 Layered Window 의 투명도/색상 등을 설정할 수 있는 함수입니다. )

이 함수를 이용해서 창의 투명도를 설정하기 위해서는 창이~ Layered 속성을 갖고 있어야 되는데요...
창의 속성은 SetWindowLong 함수로 설정을 해주시면 됩니다.

int nAlphaBlend = 140;

SetWindowLong(m_hWnd, GWL_EXSTYLE, 
            GetWindowLong(m_hWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(m_hWnd, 0, nAlphaBlend, LWA_ALPHA);

간단한 샘플코드입니다.
창을 Layered 속성을 가지도록 변경을 해준 다음 투명도를 설정하는거죠~
SetLayeredWindowAttributes 함수의 세번째 인자는 0 ~ 255 까지 가능합니다.
값이 낮으면 낮을수록~ 투명해지고, 0이 되면 완전 투명(창이 안보임)이 됩니다.

사용자 삽입 이미지투명창 예제 프로그램


별건 아니지만~~ 이런 지식들이 모여서 나중에 좀 더 멋진 UI 를 가진 프로그램을
개발할 수 있는 토대가 되길 바라면서~ㅋㅋㅋ
투명창에 대한 글은 여기서 접습니다~ ^^;
반응형
AND

반응형

리눅스 계열의 OS 를 조금 다뤄보셨던 분들은 "VI" 를 아실 겁니다~ㅋ

단순한 인터페이스에 어렵게 느껴지지만... 손에 익고 나면~ 엄청 막강한 "VI" ~!

리눅스 계열 뿐만 아니라 윈도우용 VI 도 있습니다~ ( gVim 이라고~ㅋ )

저는 윈도우에서 작업을 할때는 대부분 Visual Studio 의 IDE 로 작업을 하곤 합니다만...

한번씩~ 굉장히 간단한 소스코드를 작성할 땐 gVim 을 이용하기도 합니다.

( 별거 아닌 작업을 하는데 ~ 무거운 Visual Studio IDE 를 띄워놓긴 메모리가 아깝다고나 할까요;; )

Visual Studio IDE 에서 작업을 하다가 막상 gVim 으로 코드를 작성하게 되면...

Visual Studio IDE 특유의 인텔리센스 기능이 정말~~ 멋진(?) 기능이란걸 느끼게 됩니다.

함수의 선언이 어떻게 되어있는지...

클래스(혹은 구조체)의 멤버는 어떻게 구성되어 있는지...

생각이 나지 않을땐~ 일일이 뒤져서 찾아봐야되는 수고를 확~~ 덜어주니까요..


얼마전 우연히~~~ 어느 블로그에서 발견했는데...

gVim 에도 플러그인을 설치하면 '인텔리센스' 기능을 사용할 수 있다고 되어있더군요;

사용자 삽입 이미지

Vim Intellisense 설치 후~


위의 캡쳐는 "Vim Intellisense" 플러그인을 설치한 후의 gVim 입니다.

ㅋ~ gVim 에서도 인텔리센스가 동작하다니~~ 멋지지 않습니까..? ^^

VI 의 강력함을 잊지못하고 윈도우에서도 gVim 을 사용하시는 분들~~

"Vim Intellisense" 설치~ 적극 권장드립니다..ㅋ

( 아.. 참고로 해당 플러그인은 ActivePerl 이 설치되어 있어야 됩니다..^^;;; )

[ Vim Intellisense 사이트 ]

반응형
AND

반응형

꽤 오래전 일인데.. Rotate 를 써야 하는 경우가 있었습니다.

제가 작업할 때 주로 사용하는 언어는 C/C++ 인데...

C/C++ 에서는 Shift 연산자는 있지만~ Rotate 에 대한 내용은 없더라구요.

그래서 그 때~ 가볍게 작성한 Rotate 함수입니다~ㅋ

#define LEFT    0
#define RIGHT   1

void Rotate(unsigned char &src, int mode)
{
    if (mode == RIGHT) {
        unsigned char temp;
        temp = src;
        temp <<= 7;

        src >>= 1;
        src |= temp;
    }
    if (mode == LEFT) {
        unsigned char temp;
        temp = src;
        temp >>= 7;

        src <<= 1;
        src |= temp;
    }
}

한바이트에 대해서 Rotate 를 하게 되는데 mode 에~ LEFT, RIGHT 를 써서

방향을 지정해줄 수도 있습니다.

이글루스에 있던 자료를 백업차원에서 티스토리에도 올려봅니다~ㅋ

반응형
AND