홈 · 개발 참고자료

개발 참고자료

[파워빌더API] Window화면을 반투명하게 (WIN2000 이상)

작성자
왕희복
작성일
2016-07-14
조회
10099
분류
파워빌더
External Function에 다음을 기술합니다.
//Function Long SetLayeredWindowAttributes (Long hWnd ,Long crKey ,Blob bAlpha ,Long dwFlags ) Library "user32 "
//Function Long SetWindowLongA (Long hWnd ,Long nIndex ,Long dwNewLong ) Library "user32"
------------------------------------------------

//Window Open Event에 기술했습니다.
Constant Long LWA_ALPHA = 2
Constant Long GWL_EXSTYLE = (-20)
Constant Long WS_EX_LAYERED = 524288
Blob{150} LB_TRANSPARENT //{} 안에 들어가는 값에 따라 투명도가 변경됨

SetWindowLongA(Handle(This), GWL_EXSTYLE, WS_EX_LAYERED)
SetLayeredWindowAttributes(Handle(This),0,LB_TRANSPARENT,LWA_ALPHA)

WIN2000 이상 에서만 되는군요.
handle값을 넘겨주면 다른 프로그램도 반투명이 됩니다.






================




//Function Long SetLayeredWindowAttributes (Long hWnd ,Long crKey ,blob bAlpha ,Long dwFlags ) Library "user32 " //Function Long SetLayeredWindowAttributes (Long hWnd ,Long crKey ,char bAlpha ,Long dwFlags ) Library "user32 " blob을 char로 선언하고 투명도는 0~255 (0은 안보임,255는 불투명) SetLayeredWindowAttributes(Handle(This),0,char(0),LWA_ALPHA) //완전투명 SetLayeredWindowAttributes(Handle(This),0,char(150),LWA_ALPHA) //반투명 SetLayeredWindowAttributes(Handle(This),0,char(255),LWA_ALPHA) //불투명 blob을 char 로 바꿔쓰면 농도조절이 가능한다는것을 이제야 알게되었네요. byte값을 넘기는 거라 blob으로 해야할거라 생각했는데. char 또한 마찬가지임을 생각치 못한 어리석음 이었네요..