투명창을 이용하려고 하는 도중입니다.
SetLayeredWindowAttributes 함수를 XP에서 컴파일하고 win98실행시
"손실된 엑스포트 USER32.DLL에 연결되었습니다.SetLayeredWindowAttributes"
오류가 발생합니다..
XP 와 WIN98에서 같이 이 프로그램을 사용하려고 하는데
WIN98에는 투명창을 쓰지 않아도 된다고 치면
WIN98에서 위의 오류가 발생하지 않도록 어떻게 해야 하나요?
function SetLayeredWindowAttributes(hwnd : HWND; crKey : COLORREF; bAlpha : BYTE; dwFlags : DWORD) : boolean; stdcall; external user32 name 'SetLayeredWindowAttributes';
procedure TfmTest.ToolButton8Click(Sender: TObject);
var
ExtStyle : LongInt;
begin
if Win32Platform <> VER_PLATFORM_WIN32_NT then
begin
ShowMessage('윈도우 NT급(2000,XP등) 이상에서만 사용가능합니다.');
exit;
end;
//반투명폼
try
if ToolButton8.Down then
begin
fmTransParent.ShowModal;
Memo1.Font.Color := clBlue;
end
else
begin
ExtStyle := GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle or WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, RGB(200,200,200), 255, LMA_ALPHA or LMA_COLORKEY);
Memo1.Font.Color := clBlack;
end;
except
end;
end;
위와같이 코딩이 되었는데...
실행하자마자 오류가 발생하거든요..
WIN98에서는 걍 투명하지 않아도 되니까..오류가 안나게 하려면 어캐해야 하는지요..
SetLayeredWindowAttributes는 윈도 2000이상에서만 지원되는 함수라서 98에서는 사용할 수 없구요...
DLL을정적으로 로딩하셔서 함수를 사용하셨는데... 98에서도 에러없이 사용하실려면 동적으로 로딩하셔야됩니다.
DLL을 동적으로 로딩해서 사용하는 방법은 검색해보시면 무수히 많이 나오기 때문에 생략하겠습니다...
^^ 항상 즐코하세요...