Когда я использую функцию анализа кода в своем проекте Visual Studio, я получаю неожиданное CA1901 предупреждение для ChildWindowFromPointEx , а также для RealChildWindowFromPoint , вих параметры типа POINT .
Я только что определил структуру с именем NativePoint с полями X и Y как Int32 типа, который я использую в качестве эквивалента для этих POINT параметров.
Я понимаю, что означает переносимость с точки зрения размера значения при работе под x86 илиx64, однако, в этом случае я не уверен, как решить это предупреждение, потому что я использую такую же структуру NativePoint для POINT параметров других функций, таких как, например: ChildWindowFromPoint , ClientToScreen , GetCursorPos и многие другие, и анализ кода не предупреждает о них, и они работают при запуске в процессах x86 и x64.
На самом деле ChildWindowFromPoint и ChildWindowFromPointEx , кажется, отличаются только одним дополнительным параметром, оба принимают одну и ту же структуру POINT в качестве параметра, поэтому я неНе понимаю, почему ChildWindowFromPointEx предупреждает о проблемах переносимости, в то время как для ChildWindowFromPoint все в порядке.
Мой вопрос: как в C # или VB.NET, как мне правильноисправить (не подавить) это предупреждение для ChildWindowFromPointEx и RealChildWindowFromPoint функций ?.Может быть, мне нужно определить другую другую NativePoint структуру с разными типами полей только для использования с этими двумя функциями ?.Но почему эти две функции выдают предупреждение, в то время как для ChildWindowFromPoint нет, если обе они принимают одинаковую структуру POINT (my NativePoint )?.
Обратите внимание, что я получаю одно и то же предупреждение для этих двух функций, если использую структуру System.Drawing.Point , но только для этих двух.
[DllImport("user32.dll", EntryPoint="ChildWindowFromPointEx", SetLastError=false)]
public extern static IntPtr ChildWindowFromPointEx(IntPtr hwndParent,
NativePoint point,
uint flags);
[DllImport("user32.dll", EntryPoint="RealChildWindowFromPoint", SetLastError=false)]
public extern static IntPtr RealChildWindowFromPoint(IntPtr hwndParent,
NativePoint point);
[StructLayout(LayoutKind.Sequential)]
public struct NativePoint {
public int X;
public int Y;
}