|
MDI application에서 콘트롤바에 도구바를 올려놓고 도구바의 DragKind=dkDock, DragMode=dmAutomatic으로 해 놓으면 도구바를 도킹하여 쓸 수 있습니다. 이때 도구바를 클릭하여 child form을 제어하고 싶습니다. 하지만 도구바를 선택하면 메인폼이 비활성화되고 또 child 폼들도 다 비활성화되더군요.
그래서 도킹된 도구바윈도우를 선택하는순간 억지로 메인폼을 포커스시켰습니다.
하지만 도킹된 도구바윈도우가 비활성화되어 캡션바 색깔이 비활성화된 색으로 바뀌는데 이것을 활성화된것처럼 하기 위해 SDK의 DrawCaption함수를 이용하여보려고 했습니다. 그런데 잘 안되네요. 어디가 문제인지 잘 모르겠습니다.
포럼에 올라온글을 읽어보니깐 DrawCaption함수를 쓰기전에 윈도우의 BorderStyle을 bsNone으로 하라고 했는데 tool bar의 property를 아무리 뒤져봐도 BorderStyle이 없네요.
그리고 DC_ACTIVE를 쓰면 활성화된 폼의 색깔로 칠해준다고 하는데 그게 잘 안되네요.
며칠째 고생하고 있습니다. 코드를 올려놓을테니 답변부탁드립니다.
void __fastcall TMainForm::ToolBar1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
SetFocus(); //메인폼 포커싱
HDC dc = GetDC(ToolBar1->Handle);
RECT r;
r.left = 0;
r.top = -20;
r.right = 300;
r.bottom = 0; //ToolBar1의 left,top,right,bottom은 0,0,300,30임
HWND hw2 = ToolBar1->Handle;
DrawCaption(hw2, dc, &r,
DC_ACTIVE |
DC_TEXT |
DC_ICON |
DC_INBUTTON |
DC_SMALLCAP
);
ReleaseDC(hw2,dc);
}
|