Win32 学习笔记_静态编辑控件(StaticEdit)

1.控件的创建

// 创建静态文本框(StaticEdit)

         HWND hStaticEdit = CreateWindowEx(0, TEXT("Static"), TEXT("StaticEdit1"), WS_VISIBLE | WS_CHILD | SS_LEFT,

                   10, 10, 100, 30, hWnd, NULL, hInstance, 0);

         // 创建静态文本,水平居中

         HWND hStaticEdit2 = CreateWindowEx(0, TEXT("Static"), TEXT("StaticEdit2"), WS_VISIBLE | WS_CHILD | WS_BORDER|SS_CENTER,

                   10, 50, 100, 30, hWnd, NULL, hInstance, 0);

         // 创建显示图标的静态文本框

         HWND hStaticEdit3 = CreateWindowEx(0, TEXT("Static"), NULL, WS_VISIBLE | WS_CHILD | SS_ICON,

                   10, 90, 100, 30, hWnd, NULL, hInstance, 0);

         HICON hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));

         SendMessage(hStaticEdit3, STM_SETICON, (WPARAM)hIcon, 0);

         // 创建显示位图的静态文本框

         HWND hStaticEdit4 = CreateWindowEx(0, TEXT("Static"), NULL, WS_VISIBLE | WS_CHILD | SS_BITMAP,

                   10, 130, 100, 30, hWnd, NULL, hInstance, 0);

         HBITMAP hBitmap = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));

         SendMessage(hStaticEdit4, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM)hBitmap);

效果图:

2.控件样式

SS_BITMAP

位图将显示在静态控件中。 文本是位图的名称, (不是资源文件中其他地方定义的文件名) 样式忽略 nWidth  nHeight 参数;控件会自动调整自身大小以适应位图。

SS_BLACKFRAME

一个框,以与窗口框架相同的颜色绘制框架。 此颜色在默认配色方案中为黑色。

SS_BLACKRECT

用当前窗口框架颜色填充的矩形。 此颜色在默认配色方案中为黑色。

SS_CENTER

一个简单的矩形,并将矩形中的文本居中。 文本在显示之前设置格式。 沿行末尾延伸的单词会自动包装到下一个居中线的开头。 超过控件宽度的单词将被截断。

SS_CENTERIMAGE

位图以包含它的静态控件居中。 控件的大小不会调整,因此将剪裁控件的位图太大。 如果静态控件包含一行文本,则文本在控件的工作区中垂直居中。

SS_EDITCONTROL

静态控件复制多行编辑控件的文本显示特征。 具体而言,平均字符宽度的计算方式与编辑控件相同,并且函数不显示部分可见的最后一行。

SS_ENDELLIPSIS

如果字符串的末尾不适合矩形,则会截断并添加省略号。 如果字符串末尾的单词超出矩形的限制,则会在不省略号的情况下被截断。 使用此样式将强制控件的文本位于一行中,没有换行。  SS_PATHELLIPSIS  SS_WORDELLIPSIS进行比较。

SS_ENHMETAFILE

增强型图元文件将显示在静态控件中。 文本是图元文件的名称。 增强型图元文件静态控件具有固定大小;将缩放图元文件以适应静态控件的工作区。

SS_ETCHEDFRAME

使用 EDGE_ETCHED 边缘样式绘制静态控件的框架。 有关详细信息,请参阅 DrawEdge 函数。

SS_ETCHEDHORZ

使用 EDGE_ETCHED 边缘样式绘制静态控件的上边缘和下边缘。 有关详细信息,请参阅 DrawEdge 函数。

SS_ETCHEDVERT

使用 EDGE_ETCHED 边缘样式绘制静态控件的左右边缘。 有关详细信息,请参阅 DrawEdge 函数。

SS_GRAYFRAME

具有与屏幕背景相同的颜色绘制的框, (桌面) 默认配色方案中此颜色为灰色。

SS_GRAYRECT

一个用当前屏幕背景色填充的矩形。 默认配色方案中此颜色为灰色。

SS_ICON

要显示在对话框中的图标。 如果控件作为对话框的一部分创建,则文本是图标的名称, (不是资源文件中其他地方定义的文件名) 如果控件是通过 CreateWindow 或相关函数创建的,则文本是图标的名称, (不是在与 hInstance 参数为 CreateWindow 参数指定的模块中指定的模块中定义的文件名)
图标可以是动画游标。
样式忽略 CreateWindow 参数 nWidth  nHeight;控件会自动调整自身大小以适应图标。 它使用 LoadIcon 函数时, SS_ICON 样式只能加载 维度SM_CXICON  SM_CYICON的图标。 除了SS_ICON之外,还可以使用SS_REALSIZEIMAGE样式绕过此限制。
如果无法通过 LoadIcon 加载图标,则尝试使用 LoadCursor 将指定的资源加载为游标。 如果太失败,则尝试使用 LoadImage 从设备驱动程序加载。

SS_LEFT

一个简单的矩形,并将矩形中的文本左对齐。 文本在显示之前设置格式。 沿行末尾延伸的单词会自动包装到下一个左对齐行的开头。 超过控件宽度的单词将被截断。

SS_LEFTNOWORDWRAP

一个简单的矩形,并将矩形中的文本左对齐。 选项卡已展开,但单词未包装。 将剪裁超过行尾的文本。

SS_NOPREFIX

防止解释控件文本中任何和 () & 字符作为快捷键前缀字符。 这些字符以删除和删除并带下划线的字符串中的下一个字符显示。 此静态控件样式可以包含在任何定义的静态控件中。 可以将 SS_NOPREFIX 与其他样式组合在一起。 当文件名或其他可能包含和 () & 的字符串必须显示在对话框中的静态控件中时,这非常有用。

SS_NOTIFY

当用户单击或双击控件时,发送父窗口 STN_CLICKED STN_DBLCLK STN_DISABLE STN_ENABLE 通知代码。

SS_OWNERDRAW

静态控件的所有者负责绘制控件。 每当需要绘制控件时,所有者窗口都会收到 WM_DRAWITEM 消息。

SS_PATHELLIPSIS

将字符串中间的字符替换为省略号,以便结果适合指定的矩形。 如果字符串包含反斜杠 (\) 字符, SS_PATHELLIPSIS 在最后一个反斜杠后保留尽可能多的文本。 使用此样式将强制控件的文本位于一行中,没有换行。  SS_ENDELLIPSIS  SS_WORDELLIPSIS进行比较。

SS_REALSIZECONTROL

调整位图以适应静态控件的大小。 例如,更改区域设置可以更改系统字体,因此控件可能会调整大小。 如果静态控件具有位图,则位图将不再适合该控件。 此样式位决定了位图的自动重新定义以适应其控件。
如果指定 SS_CENTERIMAGE ,则位图或图标 (居中,并根据需要) 剪裁。 如果未指定 SS_CENTERIMAGE ,则位图或图标会拉伸或收缩。
请注意,两个轴中的重新定义是独立的,结果可能具有更改纵横比。
 SS_REALSIZEIMAGE进行比较。

SS_REALSIZEIMAGE

指定使用实际资源宽度并使用 LoadImage 加载图标。 SS_REALSIZEIMAGE 始终与 SS_ICON一起使用。
SS_REALSIZEIMAGE 使用 LoadImage,重写通常在 SS_ICON 下遵循的过程。 它不加载游标;如果 LoadImage 失败,则不会进一步尝试加载。 它使用实际资源宽度。 静态控件会相应地调整大小,但图标仍与控件的最初指定左边缘和上边缘对齐。
请注意,如果还指定 SS_CENTERIMAGE ,则图标以控件的空间为中心,该空间是使用 CreateWindow 参数 nWidth  nHeight 指定的。
 SS_REALSIZECONTROL进行比较。

SS_RIGHT

一个简单的矩形,将矩形中的文本右对齐。 文本在显示之前设置格式。 沿行末尾延伸的字词会自动包装到下一个右对齐行的开头。 超过控件宽度的单词将被截断。

SS_RIGHTJUST

具有SS_BITMAPSS_ICON样式的静态控件的右下角在调整控件大小时保持固定。 仅调整顶部和左侧,以适应新的位图或图标。

SS_SIMPLE

一个简单的矩形,并在矩形中显示一行左对齐的文本。 不能以任何方式缩短或更改文本行。 此外,如果控件被禁用,控件的文本不会灰显。

SS_SUNKEN

在静态控件周围绘制一个半沉没的边框。

SS_TYPEMASK

复合样式位,用于在 SS_* 样式位上使用 OR 运算符。 可用于屏蔽给定位掩码的有效SS_* 位。 请注意,这已过期,并且未正确包含所有有效样式。 因此,不应使用此样式。

SS_WHITEFRAME

一个框,用与窗口背景相同的颜色绘制框架。 此颜色是默认配色方案中的白色。

SS_WHITERECT

用当前窗口背景色填充的矩形。 此颜色是默认配色方案中的白色。

SS_WORDELLIPSIS

截断任何不适合矩形的单词并添加省略号。 使用此样式将强制控件的文本位于一行中,且不换行。
 SS_ENDELLIPSIS  SS_PATHELLIPSIS进行比较。

3.控件消息

STM_GETICON                  获得控件的图标句柄 WPARAM=0,LPARAM=0,RETURN=HICON

STM_GETIMAGE   获得控件的图标,位图,光标句柄,WPARAM=IMAGE_BITMAP(IMAGE_CURSOR,IMAGE_ICON), LPARAM=0,RETURN=HBITMAP(HCURSOR,HICON)

STM_SETICON                   设置控件的图标,         WPARAM=HICON,LPARAM=0,RETURN=以前的HICON

STM_SETIMAGE                设置控件的图标,位图,光标,WPARAM=(IMAGE_HBITMAP,IMAGE_ICON,IMAGE_CURSOR), LPARAM=(HBITMAP,HICON,HCURSOR),返回原来的句柄

4.控件通知消息

在父窗口的WM_COMMAND消息中捕获控件的通知消息

STN_CLICKED  控件单击消息,具有SS_NOTIFY样式才有效,WPARAM=LOWORD(控件ID),HIWORD(指定的通知代码),  LPARAM=控件句柄

STN_DBLCLK 控件双击消息,具有SS_NOTIFY样式才有效,WPARAM=LOWORD(控件ID),HIWORD(指定的通知代码),  LPARAM=控件句柄

STN_DISABLE  禁用控件消息,具有SS_NOTIFY样式才有效,WPARAM=LOWORD(控件ID),HIWORD(指定的通知代码),  LPARAM=控件句柄

STN_ENABLE   启用控件消息,具有SS_NOTIFY样式才有效,WPARAM=LOWORD(控件ID),HIWORD(指定的通知代码),  LPARAM=控件句柄

WM_CTLCOLORSTATIC 绘制控件背景色和文本颜色,WPARAM=HDC,LPARAM=控件句柄(HWND)

5.实例:

1.修改静态控件的背景色和文本颜色

HDC hdc = (HDC)wParam;

         if ((HWND)lParam == GetDlgItem(hWnd, 10001))

         {

                   SetTextColor(hdc, RGB(0, 120, 215));

                   SetBkMode(hdc, TRANSPARENT);//OPAQUE,TRANSPARENT

                   g_hBkBrush1=CreateSolidBrush(RGB(255, 174, 201));

                   return (LRESULT)g_hBkBrush1;

         }

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我来回答你的问题。以下是一个使用 Tkinter 和 FileDialog 实现打开和保存文件的示例程序: ```python import tkinter as tk from tkinter import filedialog class App(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack() self.create_widgets() def create_widgets(self): self.text = tk.Text(self) self.text.pack() self.open_button = tk.Button(self, text="打开文件", command=self.open_file) self.open_button.pack(side="left") self.save_button = tk.Button(self, text="保存文件", command=self.save_file) self.save_button.pack(side="left") def open_file(self): file_path = filedialog.askopenfilename() if file_path: with open(file_path, "r") as file: file_content = file.read() self.text.delete("1.0", tk.END) self.text.insert(tk.END, file_content) def save_file(self): file_path = filedialog.asksaveasfilename(defaultextension=".txt") if file_path: with open(file_path, "w") as file: file_content = self.text.get("1.0", tk.END) file.write(file_content) root = tk.Tk() app = App(master=root) app.mainloop() ``` 这个程序创建了一个简单的文本编辑器,包含打开文件和保存文件的按钮。当用户点击“打开文件”按钮时,程序会弹出一个文件对话,用户可以选择要打开的文件。当用户点击“保存文件”按钮时,程序会弹出一个文件对话,用户可以选择保存文件的路径和文件名。程序会将用户输入的内容保存到文件中。 希望这个示例对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值