国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

c# 中如何定義和接收消息?(轉)

2024-07-21 02:20:13
字體:
來源:轉載
供稿:網(wǎng)友
在c#中目前我還沒有找到發(fā)送消息的類成員函數(shù),所以只能采用通過調用win 32 api 的 sendmessage() 函數(shù)實現(xiàn)。由于 sendmessage的參數(shù)中需要得到窗體的句柄(handler) ,所以又要調用另一個api findwindow(), 兩者配合使用,達到在不同窗體之間的消息發(fā)送和接收功能。

另外一個要點是,需要通過重寫(override) 窗體的 defwndproc() 過程來接收自定義的消息。defwndproc 的重寫:

protected override void defwndproc(ref system.windows.forms.message m)
{
switch(m.msg)
{
case ...:
break;
default:
base.defwndproc(ref m);
break;
}
}


下面是我的c#實踐例程。
------------------------------------
/////////////////////////////////////////
///file name: note.cs
///
public class note
{
//聲明 api 函數(shù)

[dllimport("user32.dll",entrypoint="sendmessage")]
private static extern int sendmessage(
int hwnd, // handle to destination window
int msg, // message
int wparam, // first message parameter
int lparam // second message parameter
);
[dllimport("user32.dll",entrypoint="findwindow")]
private static extern int findwindow(string lpclassname,string
lpwindowname);
//定義消息常數(shù)
public const int user = 0x500;
public const int test = user + 1;


//向窗體發(fā)送消息的函數(shù)

private void sendmsgtomainform(int msg)
{
int window_handler = findwindow(null,@"note pad");
if(window_handler == 0)
{
throw new exception("could not find main window!");
}
sendmessage(window_handler,msg,100,200);
}
}


/////////////////////////////////////////
/// file name : form1.cs
/// 接收消息的窗體
///

public class form1 : system.windows.forms.form
{
public form1()
{
//
// required for windows form designer support
//
initializecomponent();
//
// todo: add any constructor code after initializecomponent call
//
}
/// 重寫窗體的消息處理函數(shù)
protected override void defwndproc(ref system.windows.forms.message m)
{
switch(m.msg)
{
//接收自定義消息 user,并顯示其參數(shù)
case note.user:
string message = string.format ("received message!
parameters are :{0},{1}",m.wparam ,m.lparam);
messagebox.show (message);
break;
default:
base.defwndproc(ref m);
break;
}
//console.writeline(m.lparam);
}
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 长春市| 金寨县| 卢龙县| 法库县| 杭锦旗| 山东省| 和林格尔县| 钟祥市| 晋中市| 永德县| 望江县| 昭通市| 平罗县| 逊克县| 伊通| 都安| 剑川县| 巴中市| 旬阳县| 本溪市| 潢川县| 河北区| 湖北省| 高陵县| 全州县| 科尔| 德化县| 肃南| 汉沽区| 庄浪县| 新宾| 保山市| 玉树县| 西盟| 丁青县| 长宁县| 内黄县| 札达县| 武隆县| 海安县| 来凤县|