您的位置:首页 > 其它

winform模拟qq聊天界面的小功能textbox1输入自动跳到textbox2

2011-12-26 12:08 435 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WindowsFormsApplication28
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

protected override void WndProc(ref Message m)
{
const int WM_CHAR = 0x0102;
const int WM_USER = 0x0400;
const int WM_USER1 = WM_USER + 1;
switch (m.Msg)
{
case WM_USER1:
textBox1.Focus();
IntPtr hwnd = textBox1.Handle;
WinAPI.SendMessage(hwnd, WM_CHAR, (int)m.WParam, 0);
break;
}
base.WndProc(ref m);
}
}

class MyTextBox : TextBox
{
protected override void WndProc(ref Message m)
{
const int WM_CHAR = 0x0102;
const int WM_PAINT = 0x000F;
const int WM_USER = 0x0400;
const int WM_KEYDOWN= 0x0100;
const int WM_IME_CHAR = 0x0286;
const int WM_IME_COMPOSITION = 0x010F;
switch (m.Msg)
{
case WM_CHAR:
{
int key = (int)m.WParam;
IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
WinAPI.SendMessage(hwnd, WM_USER + 1, (int)m.WParam, 0);
}
return;
//case WM_IME_CHAR:
//    MessageBox.Show("a");
//    break;
//case WM_KEYDOWN:
//    {
//        IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
//        int code = (int)m.WParam;
//        WinAPI.SendMessage(hwnd, WM_USER + 1, code, 0);
//    }
//    return;
case WM_IME_COMPOSITION:
{
IntPtr hwnd = WinAPI.FindWindow("WindowsForms10.Window.8.app.0.2bf8098_r13_ad1", null);
int code = (int)m.WParam;
WinAPI.SendMessage(hwnd, WM_USER + 1, code, 0);
}
return;
//case WM_PAINT:
////MessageBox.Show("aa");
//    break;
}
base.WndProc(ref m);
}
}
}


记录下,备忘~

就是要把上面那个textbox的WndProc重写下,然后消息拦截下就ok了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐