Q&A

  • 투명창관련 입니다.
투명창을 이용하려고 하는 도중입니다.
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에서는 걍 투명하지 않아도 되니까..오류가 안나게 하려면 어캐해야 하는지요..
1  COMMENTS
  • Profile
    최용일 2005.11.10 06:21
    안녕하세요. 최용일입니다.

    SetLayeredWindowAttributes는 윈도 2000이상에서만 지원되는 함수라서 98에서는 사용할 수 없구요...

    DLL을정적으로 로딩하셔서 함수를 사용하셨는데... 98에서도 에러없이 사용하실려면 동적으로 로딩하셔야됩니다.

    DLL을 동적으로 로딩해서 사용하는 방법은  검색해보시면 무수히 많이 나오기 때문에 생략하겠습니다...

    ^^ 항상 즐코하세요...