|
fortran调用API函数SendMessage,函数定义如下
[Fortran] 纯文本查看 复制代码 01 | FUNCTION SendMessage ( & |
07 | integer ( LRESULT ) :: SendMessage |
08 | !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SendMessageA' :: SendMessage |
11 | integer ( UINT_PTR ) wParam |
12 | integer ( LONG_PTR ) lParam |
COPYDATASTRUCT结构体如下:
[Fortran] 纯文本查看 复制代码 3 | integer ( pointer_len ) dwData |
[Fortran] 纯文本查看 复制代码 01 | program SendMsg_Fortran |
07 | real , dimension ( 5 , 3 ) , parameter :: b = & |
08 | & ( / 0.2 , 0.4 , 0.1 , 0.1 , 0.1 , & |
09 | & 0.1 , 0.1 , 0.1 , 0.8 , 0.1 , & |
10 | & 0.1 , 0.1 , 0.1 , 0.1 , 0.1 / ) |
12 | type ( T_COPYDATASTRUCT ) :: COPYDATASTRUCT |
13 | COPYDATASTRUCT % dwData = size ( b ) |
14 | COPYDATASTRUCT % cbData = sizeof ( b ) |
15 | COPYDATASTRUCT % lpData = loc ( b ) |
17 | hWnd = FindWindow_G 2 ( NULL , 'Form1' ) |
19 | ret = SendMessage ( hWnd , 74 , 0 , loc ( COPYDATASTRUCT ) ) |
C#接受消息并解析
C# COPYDATASTRUCT接口提定义
[C#] 纯文本查看 复制代码 1 | public struct COPYDATASTRUCT |
复写DefWndProc函数
[C#] 纯文本查看 复制代码 01 | const int WM_COPYDATA = 0x004A; |
03 | protected override void DefWndProc( ref Message m) |
11 | COPYDATASTRUCT myData = new COPYDATASTRUCT(); |
12 | Type mytype = myData.GetType(); |
13 | myData = (COPYDATASTRUCT)m.GetLParam(mytype); |
14 | ff = new float [( int )myData.dwData]; |
15 | Marshal.Copy(myData.lpData, ff, 0, ( int )myData.dwData); |
16 | for ( int i = 0; i < ff.Length; i++) |
18 | textBox1.Text += ff[i].ToString() + "\r\n" ; |
22 | base .DefWndProc( ref m); |
|
|