C# 裡可以override 窗體的 WndProc ,但 WM_CLOSE 這些常量在哪裡有定義呢?還有那些結構體的定義在哪裡

问题描述

C#裡可以override窗體的WndProc,但WM_CLOSE這些常量在哪裡有定義呢?還有那些結構體的定義在哪裡

解决方案

解决方案二:
需要你自己定义。
解决方案三:
你可以从MSDN里找到相应的常量定义及结构定义,如果你安装了VC++那会更好,可以通过查找.H文件来找到定义。最简单的就是在IDE的文件查找里,输入常量名称,查找条件为.h来查找。
解决方案四:
如在WinUser.h文件里有如下的定义片段:#defineWM_SETFOCUS0x0007#defineWM_KILLFOCUS0x0008#defineWM_ENABLE0x000A#defineWM_SETREDRAW0x000B#defineWM_SETTEXT0x000C#defineWM_GETTEXT0x000D#defineWM_GETTEXTLENGTH0x000E#defineWM_PAINT0x000F#defineWM_CLOSE0x0010#ifndef_WIN32_WCE#defineWM_QUERYENDSESSION0x0011#defineWM_QUERYOPEN0x0013#defineWM_ENDSESSION0x0016#endif#defineWM_QUIT0x0012#defineWM_ERASEBKGND0x0014#defineWM_SYSCOLORCHANGE0x0015#defineWM_SHOWWINDOW0x0018

解决方案五:
引用1楼dancingbit的回复:

需要你自己定义。

Oh!MyGod!但我在WndProc裡用Debug.WriteLine(m.ToString());這樣把消息打印出來,也時輸出WM_CLOSE的字符串呢?我想在.net內部應該是有定義的
解决方案六:
WinForm的窗体和MFC类似都采用了Windows的原有的常量及结构。你只需去MSDN查找就可以了。这不是.net才有的。
解决方案七:
引用5楼hbxtlhx的回复:

WinForm的窗体和MFC类似都采用了Windows的原有的常量及结构。你只需去MSDN查找就可以了。这不是.net才有的。

我知道,我只是想確認一下,是不是.net裡沒有定義這些常量,是不是必須要手動加入
解决方案八:
当然要手动的来加入。你看到的那些常量的名字只不过是在.net内部把其使用Switch做了个处理。
解决方案九:
引用6楼fox1999的回复:

引用5楼hbxtlhx的回复:WinForm的窗体和MFC类似都采用了Windows的原有的常量及结构。你只需去MSDN查找就可以了。这不是.net才有的。我知道,我只是想確認一下,是不是.net裡沒有定義這些常量,是不是必須要手動加入

事实上.NetFramework在System.Windows.Forms中定义了windows的消息和结构体,在NativeMethods类中,但是由于其定义为"internalstaticclassNativeMethods",因此无法在System.Windows.Forms外使用,如果你不想查看msdn,你可以通过反编译该程序集的方法,将其中的消息定义copy下来使用即可。如下是其中一部分:publicconstintWH_GETMESSAGE=3;publicconstintWH_JOURNALPLAYBACK=1;publicconstintWH_MOUSE=7;publicconstintWHEEL_DELTA=120;publicconstintWINDING=2;publicconstintWM_ACTIVATE=6;publicconstintWM_ACTIVATEAPP=0x1c;publicconstintWM_AFXFIRST=0x360;publicconstintWM_AFXLAST=0x37f;publicconstintWM_APP=0x8000;publicconstintWM_ASKCBFORMATNAME=780;publicconstintWM_CANCELJOURNAL=0x4b;publicconstintWM_CANCELMODE=0x1f;publicconstintWM_CAPTURECHANGED=0x215;publicconstintWM_CHANGECBCHAIN=0x30d;publicconstintWM_CHANGEUISTATE=0x127;publicconstintWM_CHAR=0x102;publicconstintWM_CHARTOITEM=0x2f;publicconstintWM_CHILDACTIVATE=0x22;publicconstintWM_CHOOSEFONT_GETLOGFONT=0x401;publicconstintWM_CLEAR=0x303;publicconstintWM_CLOSE=0x10;publicconstintWM_COMMAND=0x111;publicconstintWM_COMMNOTIFY=0x44;publicconstintWM_COMPACTING=0x41;publicconstintWM_COMPAREITEM=0x39;publicconstintWM_CONTEXTMENU=0x7b;publicconstintWM_COPY=0x301;publicconstintWM_COPYDATA=0x4a;publicconstintWM_CREATE=1;publicconstintWM_CTLCOLOR=0x19;publicconstintWM_CTLCOLORBTN=0x135;publicconstintWM_CTLCOLORDLG=310;publicconstintWM_CTLCOLOREDIT=0x133;publicconstintWM_CTLCOLORLISTBOX=0x134;publicconstintWM_CTLCOLORMSGBOX=0x132;publicconstintWM_CTLCOLORSCROLLBAR=0x137;publicconstintWM_CTLCOLORSTATIC=0x138;publicconstintWM_CUT=0x300;publicconstintWM_DEADCHAR=0x103;publicconstintWM_DELETEITEM=0x2d;publicconstintWM_DESTROY=2;publicconstintWM_DESTROYCLIPBOARD=0x307;publicconstintWM_DEVICECHANGE=0x219;publicconstintWM_DEVMODECHANGE=0x1b;publicconstintWM_DISPLAYCHANGE=0x7e;publicconstintWM_DRAWCLIPBOARD=0x308;publicconstintWM_DRAWITEM=0x2b;
解决方案十:
当然,现在.netframework开源了,直接下源代码就可以复制了,不必要反编译了。
解决方案十一:
在NativeMethods类中,但是由于其定义为"internalstaticclassNativeMethods"暈了

时间: 2025-01-21 17:31:50

C# 裡可以override 窗體的 WndProc ,但 WM_CLOSE 這些常量在哪裡有定義呢?還有那些結構體的定義在哪裡的相关文章

披著羊皮的大野狼 Session

session    寫過稍微大型一點 ASP 的人都知道,Session 這個物件真是好用,它可以用來記錄使用者私有的資料變數,既安全又方便.但是你真的知道 Session 的運作原理嗎?或許了解以後,你就再也不太敢使用這個令人又愛又恨的物件.雖然轉而替代之的方法稍嫌麻煩,但在長期考量之下,也就不得不這麼做了.       首先來講講 Session 的好處,它可以用來記錄用戶端私有的資料變數,並且在時間範圍內不會消失.這真的是很重要的功能,尤其是有會員的系統必須要用到的.像是會員的登入帳號.

披著羊皮的大野狼 - Session[转]

session 寫過稍微大型一點 ASP 的人都知道,Session 這個物件真是好用,它可以用來記錄使用者私有的資料變數,既安全又方便.但是你真的知道 Session 的運作原理嗎?或許了解以後,你就再也不太敢使用這個令人又愛又恨的物件.雖然轉而替代之的方法稍嫌麻煩,但在長期考量之下,也就不得不這麼做了. 首先來講講 Session 的好處,它可以用來記錄用戶端私有的資料變數,並且在時間範圍內不會消失.這真的是很重要的功能,尤其是有會員的系統必須要用到的.像是會員的登入帳號.時間.狀態以及許許

WinFrom玩转config配置文件

本文转载:http://www.dotblogs.com.tw/sam319/archive/2010/01/01/12753.aspx 有時候我們希望程式可以記下使用者的設定    下次開啟時可以繼續沿用這些設定值    方法有很多種 (用登錄檔/寫INI...)    今天來學怎麼使用ApplicationSettings儲存這些設定值 假設我今天寫了一個下載軟體    希望可以儲存使用者下載的目錄位置 首先開啟textBox1的屬性設定    找到ApplicationSettings欄位

Resouce, platform_device 和 platform_driver 的关系【转】

转自:http://blog.csdn.net/uruita/article/details/7278313 從2.6版本開始引入了platform這個概念,在開發底層驅動程序時,首先要確認的就是設備的資源信息,例如設備的地址,在2.6內核中將每個設備的資源用結構platform_device來描述,該結構體定義在kernel\include\linux\platform_device.h中, struct platform_device {  const char * name; u32  i

WSDL文件详解(转贴)上

详解 作者:Carlos C. TapangInfotects 2001 年 7 月 摘要:只要使用 WSDL,即可以真正不受語言與平台限制的方式,自動為網路服務產生 Proxy.(列印共 28 頁) 內容使用 WSDL 的原因WSDL 文件結構WSDL 範例檔案命名空間SOAP 訊息WSDL 類型與訊息區段中的 XML 結構描述<portType> 與 <operation> 元素<binding> 與 <operation> 元素文件樣式繫結<se

C#语法学习:结构(Struct)

/*結構體(struct) *通常我們會用來封裝小型相關變量 *例如,點的x,y的坐標. * public struct Point * { * public int X; * public int Y; * } * 結構體是一個值類型 * 結構也可以包含建構函式.常數.欄位.方法.屬性.索引子.運算子.事件和巢狀型別, * 雖然如果需要上述數種成員時,您應該考慮讓型別變成類別. * 結構可以實作介面,但不能繼承自另一個結構. * 因為如此,結構成員無法宣告為 protected. * * 結構

如何得到一個窗體中所有 Component

问题描述 如何得到一個窗體中所有Component我知道可以用form的Controls得到窗體上所有的控件,但得不到如菜單這樣的組件.如何得到這些Component呢? 解决方案 解决方案二:窗体的声明中有如下的一句:privateSystem.ComponentModel.IContainercomponents=null这里的components会记录所有的Component.当然这是私有的,不像Controls是Public的.解决方案三:我知道這裡有個compenonts,但它是pri

浮窗开发之窗口层级

最近在项目中遇到了这样的需求:需要在特定的其他应用之上悬浮自己的UI交互(拖动.输入等复杂的UI交互),和九游的浮窗类似,不过我们的比九游的体验更好,我们越过了很多授权的限制. 很多人都知道如何去实现一个简单的浮窗,但是却很少有人去深入的研究背后的流程机制,由于项目中浮窗交互比较复杂,遇到了些坑查看了很多资料,故总结浮窗涉及到的知识点: 窗口层级关系(浮窗是如何"浮"的)? 浮窗有哪些限制,如何越过用户授权实现浮窗功能? 窗口与用户输入系统(Activity是如何接收到touch事件的

敏捷的軟體開發流程(CMMI)

敏捷的軟體開發流程(CMMI) 發表於 2006 年 10 月 15 日 由 Tsung 大公司都很喜歡推一堆流程, CMMI, Scrum, Agile .... 有一卡車的流程, 總而言之大多數就是多一堆的報表出來(當然有些流程例外), 來做 Check 的動作... 到底這些流程的精神在哪邊... 下面整理一下找到的連結, 還有 CMMI 推導者推行成功後受 ITHome 採訪的文章~ 可以參考看看  讓幽默態度在工作上發揮蝴蝶效應(CMMI推導者感言) 敏捷的軟體開發流程 - MS 你真