- PR -

Windowsクラス内でWndProcを使いたい

1
投稿者投稿内容
Kcha
会議室デビュー日: 2009/01/20
投稿数: 3
投稿日時: 2009-02-03 15:22
こんにちは。初心者で申し訳ないのですが、よろしくお願いします。
現在C#でスクリーンキーボードのようなものを作っています。
WndProcを使って、ウィンドウをアクティブにならないようにしたいのですが、
下のようにしても、WndProcにエラーが出てしまします。



----------------------------------------------------------

using System;
using System.Windows;
using System.Windows.Forms;
using System.Drawing;
     :
     :

public partial class Window1 : Window
{
           :
           :

    // ウィンドウがアクティブにならないようにする
protected override void WndProc(ref Message m)
{
const int WM_MOUSEACTIVATE = 0x21;
const int MA_NOACTIVATE = 3;

if( m.Msg == WM_MOUSEACTIVATE)
{
m.Result = new IntPtr(MA_NOACTIVATE);
return;
}
base.WndProc(ref m);
}

----------------------------------------------------------



「protected override void WndProc(ref Message m)」の部分で
'MouseControll.Window1.WindProc(ref System.Windows.Forms.Message)':オーバーライドする適切なメソッドが見つかりませんでした。

「base.WndProc(ref m);」の部分で
'System.Windows.Window' に 'WndProc' の定義がありません。

と出てきてします。
もしわかる方がいらっしゃいましたら、ご教授をお願いしたいです。
よろしくお願いします。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2009-02-03 15:50
継承しているクラスが
ControlじゃなくてWindowだからでは?
Kcha
会議室デビュー日: 2009/01/20
投稿数: 3
投稿日時: 2009-02-03 23:18
さっそくのご返答ありがとうございます。

Windowを継承したクラスで使いたかったので、このように記述していましたが
検索しても出てこなかったのでやはりWindowクラス下だとできないのでしょうか?

検索でよく出てくるのは
public class Form1 : System.Windows.Forms.Form
等が多いのでFormクラスでないと使えないのかとも思ったのですが…。

もう少し試行錯誤してみます。
ありがとうございます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2009-02-04 17:51
思うも何も実際にメンバの一覧を見た方が早いですよね。リファレンスを活用すると良いですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)