[FONT=Courier New][SIZE=2][COLOR=#008000]//Private Declare Function SetCapture Lib "user32.dll" (ByVal hWnd As Long) As Long
[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"user32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2]: [/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].I4)][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][SIZE=2] SetCapture([[/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].I4)][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] hWnd);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New][/FONT]
[/SIZE][SIZE=2][COLOR=#008000][FONT=Courier New]//Private Declare Function ReleaseCapture Lib "user32" () As Long[/FONT]
[/COLOR][/SIZE][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"user32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2]: [/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].I4)][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] ReleaseCapture();[/FONT]
[/SIZE][SIZE=2][COLOR=#008000][FONT=Courier New]//Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long[/FONT][/COLOR][/SIZE]
[SIZE=2][COLOR=#008000][FONT=Courier New][/FONT]
[/COLOR][/SIZE][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"user32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2]: [/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].I4)][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][SIZE=2] WindowFromPoint([[/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].I4)][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] xPoint,[/FONT]
[FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][SIZE=2].I4)][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New] yPoint);[/FONT][/SIZE]
[SIZE=2][FONT=Courier New][/FONT]
[/SIZE][SIZE=2][COLOR=#008000][FONT=Courier New]//Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long[/FONT]
[/COLOR][/SIZE][SIZE=2][FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#008080]DllImport[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#800000]"user32.dll"[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New])][/FONT]
[FONT=Courier New][[/FONT][/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=2]: [/SIZE][SIZE=2][COLOR=#008080]MarshalAs[/COLOR][/SIZE][SIZE=2]([/SIZE][SIZE=2][COLOR=#008080]UnmanagedType[/COLOR][/SIZE][/FONT][SIZE=2][FONT=Courier New].I4)][/FONT]
[/SIZE][FONT=Courier New][SIZE=2][COLOR=#0000ff]private [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]static [/COLOR][/SIZE][SIZE=2][COLOR=#0000ff]extern [/COLOR][/SIZE][SIZE=2][COLOR=#008080]Int32[/COLOR][/SIZE][SIZE=2] GetCursorPos([/SIZE][SIZE=2][COLOR=#008080]IntPtr[/COLOR][/SIZE][SIZE=2] lpPoint);
[/SIZE][/FONT]
VB->C# помогите !!!! перегнать 1 строчку!
Суть такая прога на VB там библиотека используется(верней функции из этой библиотеки переопределяются) вроде так , я VB почти не знаю(
вот эта строчка:
Private Declare Function SetCapture Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
ПоДСКАЖИТЕ КАК В c#-ЭТО ПЕРЕГНАТЬ ХОТЯБЫ КОД ДЛЯ 1 СТРОЧКИ
сп! за рание!:)
Вот так вроде:
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.I4)]
private static extern Int32 SetCapture([MarshalAs(UnmanagedType.I4)]Int32 hWnd);
*/
СП!!
а что значит строчка "[return: MarshalAs(UnmanagedType.I4)]
" и зачем её использовать????
P.S. пересел обратно MSVS2005)))
[return: ...] означает, что атрибут применяется к типу возвращаемого значения метода. Создать библиотеку со своими контролами - File->New->Project...->Windows Control Library. Далее на проект правой кнопкой, выбираем Add New Item и выбираем User Control
но когда создаёшь новый Project->Windows Application то как мою dll к этому проекту, просто add ref и добавить в Toolbox, на чинаешь отрисовывать вылетает вся студия(( может надо както по другому dll создать подскажите!плз!
потратил 3 дня (( но результат есть))). Вы говорили про [return...], понятно, а если у меня координаты и Int32 мне не подходит, если тип поставить другой ?? то MarshalAs(...... . I4)?? прокатит?? и за что I4 отвечает если не трудно поясните!
Private Type POINTAPI
x As Long
y As Long
End Type
я зделал так:
private class POINTAPI
{
long x;
long y;
}
но так не катит мне надо потом объевить переменую типа POINTAPI (пример POINTAPI a; у меня написано POINTAPI a = new POINTAPI(); так как объяслен класс). И при такой реализации не выходит так:
a.x или a.y -нет токих переменых, но это я понимаю, я не понимаю как надо правельно объевить POINTAPI !!! помогите!!!!!!!
Почитайте
как объявлять dll я уже знаю, вопрос в моём предыдущем сообщении ,это меня ща вылнует больше!!!!!
http://pinvoke.net/ для решения подобных вопросов ;-)
Вот например как выглядит описание структуры POINT из WinAPI:
Таким же образом можно описать и вашу структуру..
Советую ресурс
Вот например как выглядит описание структуры POINT из WinAPI:
Код:
// http://pinvoke.net/default.aspx/Structures.POINT
[StructLayout( LayoutKind.Sequential )]
public struct POINT {
public int X;
public int Y;
public POINT( int x, int y ) {
this.X = x;
this.Y = y;
}
public static implicit operator System.Drawing.Point( POINT p ) {
return new System.Drawing.Point( p.X, p.Y );
}
public static implicit operator POINT( System.Drawing.Point p ) {
return new POINT( p.X, p.Y );
}
}
[StructLayout( LayoutKind.Sequential )]
public struct POINT {
public int X;
public int Y;
public POINT( int x, int y ) {
this.X = x;
this.Y = y;
}
public static implicit operator System.Drawing.Point( POINT p ) {
return new System.Drawing.Point( p.X, p.Y );
}
public static implicit operator POINT( System.Drawing.Point p ) {
return new POINT( p.X, p.Y );
}
}
Таким же образом можно описать и вашу структуру..