|
안녕하세요 경호입니다.
서브클래싱 예제군요 ^^ 음 그렇다면 굳이 위와같이 안하셔두 됩니다.
이런 헤더만 올렸네 음 다시 올립니다 지송 ^^
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo;
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormDestroy(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
WNDPROC FOriginalProc;
Graphics::TBitmap *Image1;
LRESULT CALLBACK MemoNewWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM
lParam)
{
switch(uMsg)
{
case WM_ERASEBKGND:
BitBlt((HDC)wParam, 0, 0, Form1->Memo->Width,Form1->Memo->Height, Image1->Canvas->Handle, 0, 0, SRCCOPY);
return 0;
case CN_CTLCOLOREDIT:
SetBkMode( (void *)wParam, TRANSPARENT );
return 0;
default:
return CallWindowProc((FARPROC)FOriginalProc, hWnd, uMsg, wParam,lParam);
}
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
FOriginalProc = (WNDPROC)SetWindowLong(Memo->Handle,GWL_WNDPROC, (LONG)MemoNewWndProc);//ControlWndProc);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1 = new Graphics::TBitmap;
Image1->LoadFromFile("a.bmp");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
delete Image1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
SetWindowLong(Memo->Handle, GWL_WNDPROC, (LONG) FOriginalProc);
}
//---------------------------------------------------------------------------
이렇게 하면 되여 그럼 즐프하세요 ^^
|