|
TreeSortFunc 콜백함수부분을 다음과 같이 수정하니까 목록은 제대로 나오더군요
int CALLBACK TreeSortFunc(LPARAM Node2, LPARAM Node1, LPARAM lParam)
{
if (Node1 && Node2)
{
TShellFolder* sfFirst = (TShellFolder*)((TTreeNode*)Node1)->Data;
TShellFolder* sfSecond = (TShellFolder*)((TTreeNode*)Node2)->Data;
HRESULT hr = sfFirst->ParentShellFolder()->CompareIDs(0,
sfFirst->RelativeID, sfSecond->RelativeID);
if (FAILED(hr))
return 0;
return (-(short)SCODE_CODE(GetScode(hr)));
}
else
return 0;
}
그런데 이놈을 Form1, 과 Form2를 만들고 Form2에 ShellTree 를 올려놓은 상태에서
Form1의 OnCreate 부분에서 Form2를 Form1의 Child로 생성하는 경우, 또는 Form2를
Form1의 Panel에 ManualDocking 하는 경우 Error가 발생하는군요.
아마도 Recreate과정중에 생기는 에러같은데 정말 잡기 함드네요.
참고로 제가 테스트했던 예제 코드를 올려보니 고수분들 문제해결좀 부탁드립니다.
Form1의 OnCreate에서
Form2 = new TForm2(this);
Form2->BorderStyle = bsNone;
Form2->Align = alClient;
Form2->Parent = this; // Parent를 다시 지정했습니다.
Form2->Visible = true;
이상과같이 테스트 하였는데 에러가 나는군요... ㅡㅜ
Parent를 재지정안하고 사용하면 잘죄는데 Parent를 지정하면 무조건 Error
Docking을 이용해도 Error .... 미티...
|