精华内容
下载资源
问答
  • 在VS2015中,可以通过API函数获取Windows窗口控件的信息,包括控件句柄、控件显示的文字以及控件类型等。其流程为,首先获取Windows指定窗口的句柄,之后通过回调函数遍历该窗口中的控件句柄,最后通过控件句柄...

    在VS2015中,可以通过API函数获取Windows窗口中控件的信息,包括控件句柄、控件显示的文字以及控件类型等。其流程为,首先获取Windows指定窗口的句柄,之后通过回调函数遍历该窗口中的控件句柄,最后通过控件句柄获取控件文字及类型。

    1 获取窗口句柄

    可以通过FindWindow()函数获取指定窗口的句柄。该函数的格式为

    HWND FindWindowA(
    
    LPCSTR lpClassName
    
    , LPCSTR lpWindowName
    
    );

    其中,参数lpClassName指定了窗口所属的类名;lpWindowName指定了窗口的标题。如果函数执行成功,则返回指定窗口的句柄,否则返回值是NULL。

    通过FindWindow()函数,有两种方法获取指定窗口句柄。一种方法是指定窗口所属的类名称,另外一种是指定窗口的标题。例如,在Windows中,可以通过鼠标右键可以查看某个文件的属性,该属性窗口为图1所示。

     

    图1 png文件属性窗口

    可以通过以下代码获取该窗口的句柄

    HWND hwnd;
    
    hwnd = FindWindow(NULL, L"图片1.png 属性");

    其中,HWND是窗口句柄类型,FindWindow()函数的第一个参数是NULL,第二个参数指定了窗口的标题,即通过窗口标题查找窗口。

    2 遍历窗口控件。

    如果成功获取了指定窗口句柄,接下来调用API函数EnumChildWindows()函数开始遍历控件。

    2.1 EnumChildWindows()函数

    该函数的格式为

    BOOL EnumChildWindows(
    
    HWND hWndParent
    
    , WNDENUMPROC lpEnumFunc
    
    , LPARAM lParam
    
    );

    其中参数hWndParent是指定窗口的句柄;lpEnumFunc是一个系统定义好的回调函数,系统会将窗口中每个控件的句柄依次给这个回调函数,并依次调用该回调函数。在lpEnumFunc回调函数中通过控件的句柄获取控件的信息;lParam是传递给回调函数的参数。如果每次调用回调函数成功,则EnumChildWindows()函数直到所有的控件都被遍历后才会返回TRUE,如果回调函数调用失败,则EnumChildWindows()函数直接返回FALSE。

    展开全文
  • 解决方法:利用委托,以RichTextBox控件为例,直接上代码private void btnopenserver_Click(object sender, EventArgs e)//点击事件 { readerCamera.OpenServer(55);//打开服务端,监听端口55 richTextBox1....

    解决方法:利用委托,以RichTextBox控件为例,直接上代码

    private void btnopenserver_Click(object sender, EventArgs e)
    {
        readerCamera.OpenServer(55);//打开服务端,监听端口55
        WriteLog(richTextBox1,"打开端口55成功");//点击事件中调用该写入方法不会报错
    }
    /// <summary>
    /// 服务器接收数据
    /// </summary>
    /// <param name="btAryReceiveData"></param>
    private void ReceiveDataCamera(byte[] btAryReceiveData)
    {
        string str = System.Text.Encoding.Default.GetString(btAryReceiveData);//数据接收转string
        //richTextBox1.AppendText("接收到数据:" + str);直接调用该方法会出现跨线程调用问题
        WriteLog(richTextBox1,"接收到数据:" + str);
    }
    #region 利用委托解决跨线程调用问题方法
    private delegate void WriteLogUnSafe(RichTextBox logRichTxt, string strLog);
    public static void WriteLog(RichTextBox logRichTxt, string strLog)
    {
        if (logRichTxt.InvokeRequired)
        {
            WriteLogUnSafe InvokeWriteLog = new WriteLogUnSafe(WriteLog);
            logRichTxt.Invoke(InvokeWriteLog, new object[] { logRichTxt, strLog });
        }
        else
        {
            logRichTxt.AppendText(strLog + "\r\n");
        }
    } 
    #endregion

    上述代码中,在btnopenserver点击事件中直接使用RichTextBox的appendtext方法不会出现跨线程问题,正常使用,但是如果在ReceiveDataCamera的监听事件中使用RichTextBox的appendtext方法则会出现跨线程调用问题。
    因此我们新建个委托方法WriteLog,当线程占用时新建个线程,这样就不会出问题了。WriteLog方法中只需要传入控件名和内容即可

    展开全文
  • #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b...

    #if defined _M_IX86
    #pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'/"")
    #elif defined _M_IA64
    #pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'/"")
    #elif defined _M_X64
    #pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'/"")
    #else
    #pragma comment(linker,"/manifestdependency:/"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'/"")
    #endif

     

    突然找到了,就是这么简单

    找个地方加上以上代码就可以了

    不加的效果,有点丑

    加上两句代码后控件看起就舒服点了

    展开全文
  • 前言:实验室目前一个项目是用C#写的界面,读取inSQL、SQLserver数据库中的...下面两个openFileDialog打开文件控件、savefiledialog保存文件控件 直接上代码,都已经注释了: using System; using System.Collections

    前言:实验室目前一个项目是用C#写的界面,读取inSQL、SQLserver数据库中的数据转存到MySQL。正在一步一步看代码。
    打开文件与保存文件控件使用
    新建
    在这里插入图片描述
    添加控件:
    在这里插入图片描述
    其中:“打开文件”“关闭文件“为:Button控件。
    “文件路径:”“(文件路径)”为label控件;
    空白区域为:textbox控件
    下面两个openFileDialog打开文件控件、savefiledialog保存文件控件

    直接上代码,都已经注释了:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.IO;
    
    namespace opentext1007
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                label1.Text = string.Empty;
                button1.Text = "保存文件.....";
                button2.Text = "打开文件.....";
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
    
              try
              {
                OpenFileDialog openFileDialog = new OpenFileDialog();  //实例化打开文件控件
                openFileDialog.Filter = "所有文件|*.*|文本文件|*.txt|xlsx文件|*.xlsx|xls文件|*.xls";//可打开的文件格式
                if (openFileDialog.ShowDialog() == DialogResult.OK)//如果有选择打开文件
                {
                    string[] lines = File.ReadAllLines(openFileDialog.FileName);//读出文本文档中的所有行
                    textBox1.Clear();//清空文本
                    foreach (string line in lines)  //遍历上述所有行
                    {
                        textBox1.AppendText(line + Environment.NewLine);//System.Environment.NewLine默认换行符
                    }
    
                    label1.Text = openFileDialog.FileName; //显示文件路径
    
                }
              }
              catch
              {
                  Console.WriteLine("报错:打开失败!!!");
              }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
    
                try
                {
                    SaveFileDialog savefiledialog = new SaveFileDialog();//实例化打开文件控件
                    savefiledialog.Filter = "文本文件|*.txt";//可保存的文件格式
                    if (savefiledialog.ShowDialog() == DialogResult.OK)
                    {
                        StreamWriter streamwriter = new StreamWriter(savefiledialog.FileName);//实例化保存文件控件
                        streamwriter.Write(textBox1.Text);//写入文本框的内容
                        streamwriter.Flush();//刷新缓存
                        streamwriter.Close();//关闭流
    
                    }
                }
                catch
                {
                    Console.WriteLine("报错:保存文件失败!");
                }
            }
        }
    }
    
    

    运行后:点击打开文件按钮
    在这里插入图片描述
    打开mytest.txt效果:
    在这里插入图片描述
    点击保存文件按钮
    在这里插入图片描述
    保存成功后:
    在这里插入图片描述
    不足之处,请多指教

    展开全文
  • 2.2 回调函数 2.2.1 函数格式 在“2.1 EnumChildWindows()函数”中提到,调用EnumChildWindows()函数前,需要定义一...在获取到控件信息后,可以通过printf()函数将控件信息显示到控制台窗口中,如图2所示。
  • 继昨天用Button_SetCheck()函数成功的将一个CheckButton去掉了打勾的状态,即从Checked状态改为UnChecked状态后,今天发现这个状态的转变的消息实际上...直接将鼠标左键按下以及弹起的消息发送给控件,问题解决。
  • 这段代码没有生效,但是当我把上面代码替换成该窗口中的其他Button控件,如OK按钮,却是可以成功点击到的。 难道”无边距打印“那个控件不是Button类型?但显然不对,因为在spy++中明显能看到这个控件是一个...
  • Windows窗口程序设计中,按钮、文本编辑框等控件都作为一个子窗口在WM_CREATE事件中创建的。其中按钮类button有多种类型和风格,常见的单选钮、复选钮、分组框也在此类中,见下表: 子窗口控件:按钮类button ...
  • 网页嵌入windows form窗口控件

    热门讨论 2008-07-18 12:52:57
    windows form下编写的程序转换成.net控件的形式.嵌入到web页面中,既可以避免重复编码,又能够弥补普通web客户端无法满足复杂需求的弊端。例子比较简单,但把实现原理基本说清楚了,接下来要做的事情无非是将控件...
  • Windows窗口控件和对话框   windows应用程序是通过窗口(window)、控件(control)和对话框(dialog box)来和用户交互的,windows系统预定义了很多基本的交互行为和外观,也预定义了很多共用的控件和对话框,...
  • 窗口控件 按钮类别 button 滚动条类别 scrollbar 静态类别 static 编辑框类别 edit 清单方块 listbox 子窗口与主窗口的交互 创建窗口要:注册窗口类型 和 创造相应窗口实例 1 //注册窗口类型 ...
  • Windows编程之基本窗口控件小结

    千次阅读 2014-04-22 09:41:41
     子窗口控件类似windows的窗口,不过可以利用windows中已经有的,来直接CreateWindow,CreateWindow中的函数参数如下所示: Class name(类别名称) Window text(窗口文字) Window style(窗口样式) x position...
  • windows窗口控件的样式

    千次阅读 2019-07-05 15:03:34
    将组合框编辑控件中输入的文本从Windows字符集转换为OEM字符集,然后再转换回Windows字符集。当应用程序调用CharToOem函数将组合框中的Windows字符串转换为OEM字符时,这可确保正确的字符转换 。此样式对于包含...
  • 在看对话框之前,还是觉得有必要先看一下子窗口控件,很多对话框的知识点都涉及到子窗口控件。 正好看到学长的一篇实现窗口透明化的文章,对它比较感兴趣,于是就想拿这个例子来练练手 首先先介绍下窗口透明化...
  • 具体内容:Windows窗口的菜单栏、工具栏、状态栏、模态和非模态对话框的创建,以及使用MessageBox函数来创建标准对话框。 PS:代码是可以执行的,不存在语法问题。 1、mywindows.h 1 #ifndef MY...
  • 按钮类别/*---------------------------------------- BTNLOOK.C -- Button Look Program (c) Charles Petzold, 1998 ----------------------------------------*/#include <windows.h>struct {
  • windows程序设计学习笔记-子窗口控件

    千次阅读 2016-03-17 07:59:54
    9.子窗口控件hwndParent = GetParent(hwnd); 子窗口给父窗口发消息: SendMessage(hwndParent, message, wParam, lParam);// message >= WM_USER子窗口控件: 子窗口状态发生改变时,子窗口处理鼠标和键盘的消息...
  • //获得指定子窗口的父窗口句柄 hwnd是子窗口句柄 函数返回是父窗口句柄 hwndParent=GetParent(hwnd); //向父窗口发送消息 SendMessage(hwndParent,message,wParam,lParam); //获取实例句柄 GetWindowLong (hwnd, ...
  • 怎样实现 单击读取按钮btn 控件dgv 显示 文本文件.csv数据 ![图片说明](https://img-ask.csdn.net/upload/201507/14/1436851604_43163.png);![图片说明]...
  • 窗口控件

    2019-09-25 20:06:14
     Windows提供了几个预定义的窗口类以方便我们的使用,我们一般叫做子窗口控件,简称控件。 .控件会自己处理消息,并在自己状态发生改变时通知父窗口 预定义的控件有:按钮、复选框、编辑框、静态字符串标签和滚动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,687
精华内容 1,874
关键字:

windows窗口控件