中易网

windows api static text控件的使用

答案:2  悬赏:10  
解决时间 2021-04-21 18:50
小弟是个新手,刚学,想问下,请哪位大侠给个静态文本的简单例子,包括控件的创建之类的。(要求一定要控件,不要TEXTOUT。。。)
最佳答案
MSDN中的API说明最完全 不过都是英文的。。。

写了个程序 可以枚举当前操作系统中的所有顶层窗口和子窗口(控件)
是个完整的程序。

using System;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace EnumWindows
{
class Program
{
private static Form form;
private static TreeView tree;
private static TextBox text;

private const uint WM_GETTEXT = 0x000D;

private static WNDENUMPROC wEnumProc;

private delegate bool WNDENUMPROC(IntPtr hwnd, TreeNode lParam); // 枚举过程委托

[DllImport("user32.dll")]
private static extern bool EnumChildWindows(IntPtr hWndParant, WNDENUMPROC lpEnumFunc, TreeNode lParam); // 枚举子窗口(控件)

[DllImport("user32.dll")]
private static extern bool EnumWindows(WNDENUMPROC lpEnumFunc, int lParam); // 枚举顶层窗口

[DllImport("User32.dll")]
private static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, StringBuilder lParam); // 获得窗口标题(文本)

static void Main(string[] args)
{
form = new Form();
tree = new TreeView();
text = new TextBox();

form.Text = "Enum Windows";
form.ClientSize = new Size(600, 500);
form.Controls.Add(tree);
form.Controls.Add(text);
form.Load += new EventHandler(form_Load);

tree.Location = Point.Empty;
tree.Size = new Size(300, 500);
tree.AfterSelect += new TreeViewEventHandler(tree_AfterSelect);

text.Location = new Point(300, 0);
text.Size = new Size(300, 500);
text.Multiline = true;
text.Enabled = false;

Application.Run(form);
}

private static void form_Load(object sender, EventArgs e)
{
wEnumProc = new WNDENUMPROC(EnumWindowProc);

EnumWindows(wEnumProc, 0);
}

private static void tree_AfterSelect(object sender, EventArgs e)
{
text.Clear();

if (null == tree.SelectedNode) return;

text.Text = tree.SelectedNode.Tag.ToString();
}

private static bool EnumWindowProc(IntPtr hwnd, TreeNode lParam)
{
StringBuilder wndtext = new StringBuilder(1024);

SendMessage(hwnd, WM_GETTEXT, 128, wndtext);
if (0 == wndtext.Length) wndtext.Append("null");
if (null == lParam)
{
lParam = new TreeNode("0x" + hwnd.ToString("X8") + " - " + wndtext);
lParam.Tag = wndtext;
tree.Nodes.Add(lParam);
}
else
{
TreeNode node = new TreeNode("0x" + hwnd.ToString("X8") + " - " + wndtext);
node.Tag = wndtext;
lParam.Nodes.Add(node);
}
EnumChildWindows(hwnd, wEnumProc, lParam); // 不想枚举子窗口(控件)就把这行注释了

return true;
}
}
}
全部回答
windows api其实也就是一些函数官方的说法是api其实只是些函数 比如和dos函数strlen()也可以说是api 只是文件不同 比如messagebox()这个api函数在windows.h文件中 strlen在stdio.h文件中 简单的写一个api #include "windows.h" #include "windowsx.h" winmain(这里有六个数) { messagebox(null,"你好","编程世界",mb_yesno); }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
女主角是金发 男女主角家里都是黑道这个动漫
堰塘塆我想知道这个在什么地方
战地之王什么公测
天干地支纪年、月、日始于哪年?具体怎么搭配
天津南开区哪有牙科 王顶堤附近有没有
有时不会尿床,有时一个晚上尿几次床,晚上我
s7300如何查看总线上各站点是不是连接正常
已知供电局据抢修工地15千米,电工据抢修工地
公寓和普通住宅有何区别?哪个更好?物业费包
从苏州园区唯亭实验小学怎么到金鸡胡景区
绿豆糕最简单的做法
在(酷我音乐盒)上如何下载LRC歌词
情满楼宾馆地址有知道的么?有点事想过去
宝宝大便是白色的为什么
广州哪里有外贸服装批发市场
推荐资讯
金谷牛肉面华东店在什么地方啊,我要过去处理
那位好心人知道从石家庄到承德的火车票还有吗
我想代理一家瓷砖店,规模100平方左右...不知
我手机看直播很卡.有什么解决办法吗
二手房一般首付百分之多少合适?
减肥的秘诀是什么?
吃什么治脸上黑斑?
一排五人在繁华的大街上走着,突然一个广告牌
为什么我绑定了密保卡 可登陆QQ游戏却不需要
承压式太阳能热水器热水压力很小是什么原因
沈阳新民能不能办车体广告
哪个网页游戏平台玩的人最多?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?