|
다른프로그램에 그림을 계속 그릴려고합니다
일단 소스는 아래와같습니다
void bmp(int t)
HWND p; //프로그램 동작 종료를위한 dc
Graphics::TBitmap *wa1 =new Graphics::TBitmap;
TResourceStream *ResStream1;//리소스에요 비트맵 파일들어잇는
HINSTANCE ImageDllInstance;
ImageDllInstance = LoadLibrary("pslib.dll"); //DLL에서 이미지들을 가지고 온다.
ResStream1 = new TResourceStream( (int)ImageDllInstance, "ID_800X600", RT_RCDATA );
wa1->LoadFromStream( dynamic_cast<TStream*>( ResStream1 ) );
HWND h = FindWindow(NULL,"팡야:시즌4");//두번쩨 윈도우 핸들 찾기
HDC dc = GetDC(h) ;dc를 얻음
do{
TransparentBlt(dc, 0,0, 800,600, wa1->Canvas->Handle,
0,0,800,600,RGB(255,255,255));//dc에다가 투명 으로 그려줌
Application->ProcessMessages(); 메세지처리
Sleep(t);//처리시간의 여유를줌
p = FindWindow(NULL,"사용중"); // 첫번쩨프로그램 핸들
if(p == 0)
break; // 첫번쩨프로그램의 캡션이 사용중이아니면 무한반복동작 종료
}while(1); //동작종료를위한것임
delete p;
delete wa1;
delete ResStream1;
ReleaseDC(h,dc);
FreeLibrary(ImageDllInstance);
}
우선 여기까지가 제가사용하고있던 소스에요
이소스로는 계속 깜빡입니다
그리고 이소스는 DLL 내에 넣어둿구요
호출해서스고있습니다
여기서 더블버퍼링을 하려고합니다
이함수 호출하는 프로그램에서
DoubleBuffered = true;
써준다고해서 되는게 아니더군요
제가원하는건 프로그램 실행시킨다음 그려지고있는 프로그램 이 활성화 되어있을때도 계속
그러줘야하거든요 그러니까
프로그램이 2개있을때 첫번쩨에서 그려주는 프로그램이 동작하고
두번쩨 프로그램을 사용중일때
첫번쩨 프로그램이 계속 동작되는상태가 되야하거든요
OnPaint() 에 쓰면 첫번떼 윈도우가 활성화 안되면 안그려주고요
한번그리고 그냥 멈추거든요 그렇다고 OnPaint()에 무한반복해버리면
프로그램이 먹통이되구요 그래서 위소스처럼
그래서 dll 넣고 호출해서쓰는중이에요
설명이좀 난해할가모르겠네요 dll에서 함수넣고 하는방법이나
온페인트 에 바로 쓰는방법이나 둘중에 깜빡이지않게함과동시에
두번쩨프로그램이 사용중이 되더라도 첫번쩨 프로그램이 계속동작 하도록하는게
제목적이거든요
어떻게 더블버퍼링 하는방법좀 알려주실수없나요?
winapi.co.kr에서나온건 이해하기어렵네요 그거보고따라해도
이해가안되네요
|