none
请问在.NET的CLR Windows Forms Application 里,怎么写自定义消息处理函数? RRS feed

  • 问题

  • 如题:

    LRESULT CALLBACK WindowProc(
      HWND hwnd,       // handle to window
      UINT uMsg,       // message identifier
      WPARAM wParam,   // device-change event
      LPARAM lParam    // event-specific data
    );

    应该是 MFC 的格式,那在 CLR 里应该怎么定义啊?
    2009年11月23日 7:05

答案

  • 找到答案了:

    public ref class Form1 : public System::Windows::Forms::Form
    {
        ...
        protected:
            virtual	void WndProc(System::Windows::Forms::Message% m) override;
        ...
    }
    
    void Form1::WndProc(System::Windows::Forms::Message% m)
    {
    	if (m.Msg == WM_DEVICECHANGE)
    	{
    		switch (m.WParam.ToInt32())
    		{
    			case DBT_DEVICEARRIVAL:
    				break;
    			default:
    				break;
    		}
    	}
    	System::Windows::Forms::Form::WndProc(m);
    	return;
    }
     
    2009年11月23日 9:37

全部回复

  • 继承一个控件,覆盖其WndProc函数。你会看到你要的东西。
    2009年11月23日 8:38
  • 找到答案了:

    public ref class Form1 : public System::Windows::Forms::Form
    {
        ...
        protected:
            virtual	void WndProc(System::Windows::Forms::Message% m) override;
        ...
    }
    
    void Form1::WndProc(System::Windows::Forms::Message% m)
    {
    	if (m.Msg == WM_DEVICECHANGE)
    	{
    		switch (m.WParam.ToInt32())
    		{
    			case DBT_DEVICEARRIVAL:
    				break;
    			default:
    				break;
    		}
    	}
    	System::Windows::Forms::Form::WndProc(m);
    	return;
    }
     
    2009年11月23日 9:37