C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45803] Bitmap을 메모리DC에서 불러들일때요.....
아야 [] 1087 읽음    2006-07-24 09:11
안녕하세요~~~~~~또다시 이렇게 질문을 올리게 되었습니당....  m(- -)m
즐거운 주말 보내셨나요??? 전.... 이것땜시 잠을 설쳤답니당......  - -;
다름이 아니라 우선 구조가...

----------             전송             |------------|        복사       |----------- |
-   Main   -        <=======           |MainmemDC |   <========= |  virmemDC  |
-    화면   -                                 |                     |                      |                   |
- --------                                 |----------- |                       |-----------|
                                                                                                 ^                ^
                                                                                 이미지로드 |                |  이미지로드
                                                                                       |-------------|       |-------------|
                                                                                        | Main용이미지 |       | 특정이미지     |
                                                                                        |-------------|       |-------------|
왜 메모리DC를 두개를 만들었냐면요  특정이미지에 마우스로 클릭하면 팝업의 서브폼이 열러 거기에서 버턴을 클릭하면 선택한 이미지가 위로 회전하고 아래로 회전가능하게 하고 싶어서....
그러려면  MaimmemDC 랑 virmemDC 에서 변화가 있으면 MainmemDC 변환시켜 메인화면에 전송...
이런식으로 하고 싶은데....  메인DC  랑 virDC의 핸들이 안잡혀요....우선 소스가...
//----------------------------
TMainForm *MainForm;
TPoint    Cam_lst[] = {
        ( Point)( 269, 151),
        ( Point)( 354, 410),
        ( Point)(NULL, NULL)
    };
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormPaint(TObject *Sender)
{
    TPoint    *list;
    BOOL res = FALSE;
    int sx, sy, cx, cy;
// 메인용 화면 로드
    scr_bmp = (HBITMAP)LoadImage(0, "Image\\Map_Test.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
// 메인위로 표시할 화면 로드
    cam_bmp = (HBITMAP)LoadImage(0, "Image\\BlueCam_Img.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
   GetObject(scr_bmp,sizeof(BITMAP),&scr_info);
  GetObject(cam_bmp,sizeof(BITMAP),&cam_info);
   scrdc = CreateCompatibleDC( NULL);
   virdc = CreateCompatibleDC( NULL);   <--------------virmemDC도 작성해야한는지 궁금
    SelectObject(scrdc, scr_bmp);
//SelectObject(virdc, cam_bmp);
//  전송을 메인DC에 복사하고 싶은데 모르겠어요...........핸들을 어떻게...--;
    res = BitBlt( ?????????, 0 ,0 , scr_info.bmWidth,scr_info.bmHeight,scrdc,0,0,SRCCOPY);
    list = &Cam_lst[ 0];
    do {
        SelectObject(scrdc, cam_bmp);
//  전송을 메인DC에 복사하고 싶은데 모르겠어요...........--;
       BitBlt( ????????????????,list->x, list->y, cam_info.bmWidth, cam_info.bmHeight, scrdc, 0, 0, SRCC OPY);
        list++;
       } while(( list->x != NULL)||( list->y != NULL));
//    Image1->Canvas->CopyRect(Rect(0,0,Image1->Picture->Width,Image1->Picture->Height),
//                            Image1->Picture->Bitmap->Canvas,Rect(0,0,scr_info.bmWidth,scr_info.bmHeight));
Image1->Refresh();
DeleteDC(scrdc);
// DeleteDC(camdc);
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
    if ( cam_bmp != NULL) {
        DeleteObject( cam_bmp);
    }
    if ( scr_bmp != NULL) {
               DeleteObject(scr_bmp);
    }
}
//----------------------------------------------------------------
void __fastcall TMainForm::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TPoint    *cam_list;
   if(Button == mbRight){
                         // 팝업처리작성
   }
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::CamTestClick(TObject *Sender)
{
  CamForm->Show();
}
//---------------------------------------------------------------------------
이렇게 하면 되는건지 확실치도 않고.....
?????? 란에 메일이미지 핸들을 잡아주면 이미지가 뜨긴 뜨는데..... 서브폼에서 버턴처리가 가능해지는지...이것도 궁금하고....

+ -

관련 글 리스트
45803 Bitmap을 메모리DC에서 불러들일때요..... 아야 1087 2006/07/24
45809     Re:Bitmap을 메모리DC에서 불러들일때요..... 박영목 2031 2006/07/24
45811         자답... 그리고 읽어봐 주셔서 감사합니다... 아야 1023 2006/07/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.