打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
wince/mobile下支持触屏点击的文本框实现
[c-sharp] view plaincopy
  1. using System;  
  2.   
  3. using System.Collections.Generic;  
  4. using System.ComponentModel;  
  5. using System.Data;  
  6. using System.Drawing;  
  7. using System.Text;  
  8. using System.Windows.Forms;  
  9. using System.Runtime.InteropServices;  
  10.   
  11. namespace ClickableTextboxSample  
  12. {  
  13.     public partial class Form1 : Form  
  14.     {  
  15.         public Form1()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.         #region 子类化  
  20.   
  21.         [DllImport("coredll.dll")]  
  22.         private static extern int PostMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);  
  23.         [DllImport("coredll.dll")]  
  24.         private extern static int CallWindowProc(IntPtr lpPrevWndFunc, IntPtr hwnd, uint msg, uint wParam, int lParam);  
  25.         [DllImport("coredll.dll")]  
  26.         public static extern IntPtr SetWindowLong(IntPtr hwnd, int nIndex, IntPtr dwNewLong);  
  27.         public const int GWL_WNDPROC = (-4);  
  28.         public IntPtr OldProc = IntPtr.Zero;  
  29.         public delegate int WndProcHandler(IntPtr hwnd, uint msg, uint wParam, int lParam);     
  30.         WndProcHandler myproc = null;   
  31.  
  32.         #endregion  
  33.   
  34.         //窗体创建好后执行  
  35.         protected override void OnLoad(EventArgs e)  
  36.         {  
  37.             base.OnLoad(e);  
  38.             myproc = new WndProcHandler(MyWndProc);  
  39.             OldProc = SetWindowLong(textBox1.Handle, GWL_WNDPROC, Marshal.GetFunctionPointerForDelegate(myproc));  
  40.         }  
  41.   
  42.         public const int WM_LBUTTONUP = 0x202;  
  43.         int MyWndProc(IntPtr hwnd, uint msg, uint wParam, int lParam)  
  44.         {  
  45.             if (msg == WM_LBUTTONUP)  
  46.             {  
  47.                 CallWindowProc(OldProc, hwnd, msg, wParam, lParam);  
  48.                 KeyboardWindow key = new KeyboardWindow();  
  49.                 key.Input = textBox1.Text;  
  50.                 if (key.ShowDialog() == DialogResult.OK)  
  51.                 {  
  52.                     textBox1.Text = key.Input;  
  53.                 }  
  54.                 return 1;//1表示处理过了,不需要系统继续处理了。  
  55.             }  
  56.             return CallWindowProc(OldProc, hwnd, msg, wParam, lParam);  
  57.         }  
  58.   
  59.         //本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wuyazhe/archive/2010/07/05/5714741.aspx  
  60.     }  
  61. }  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
常用Win32API 封装 Win32api for .net
User32.dll 函数
dotnet-call-the-win32-API-to-create-a-window
在.NET中基于Windows消息的IPC实现
关于程序正常运行一断时间后,进行任何操作,都可能内存溢出问题的解决,谢谢。
c#如何处理自定义消息
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服