0

私の MFC アプリケーションには、MianFrame と多くのフローティング/ドッキング バー、ほとんど共通点のないダイアログがあります。複雑なフレームのポイントかどうかを確認する必要があります。私はこのコードを使用しようとしました:

MainFrame::___
{
...
HRGN hrgn = CreateRectRgn(0,0,0,0);
int regionType = GetWindowRgn(hrgn);
if (regionType != ERROR) 
{ 
if ( !PtInRegion(hrgn, p.x, p.y) )  
    return false;
}
DeleteObject(hrgn); 
...
}

しかし、regionType は常に == ERROR です。なぜだか分かりますか?または、別の解決策を知っていますか?

4

2 に答える 2

1

GetLastError()を呼び出して、より適切なエラーコードを取得してみてください。

または、GetClientRect()とPtInRect()を使用してみて、より良い結果が得られるかどうかを確認することもできます。

于 2012-09-06T15:12:07.543 に答える
0

GetWindowRect() を使用して 'rect' を取得し、次に HRGN hrgn = CreateRectRgn(0,0,0,0)、次に hrgn と 'rect' を使用して SetRectRgn を使用できます。SetRectRgn が正常に返される限り、コードは問題ありません。

私もこれに慣れていません。hrgn を初期化する必要がありますか?

于 2012-09-20T06:51:07.600 に答える