<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[博瑞博客]]></title> 
<atom:link href="http://blog.neacn.com/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[博瑞博客]]></description>
<link>http://blog.neacn.com/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>MFC窗口风格 WS_style/WS_EX_style（超详细）</title>
    <link>http://blog.neacn.com/C/163.html</link>
    <description><![CDATA[<p>窗口风格(Window style)</p>
<p>WS_BORDER   有边框窗口</p>
<p>WS_CAPTION   必须和WS_BORDER风格配合，但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。</p>
<p>WS_CHILD   说明窗口为子窗口，不能应用于弹出式窗口风格(WS_POPUP)。</p>
<p>WS_CHILDWINDOW   同WS_CHILD。</p>
<p>WS_CLIPCHILDREN   绘制父窗口时，不绘制子窗口的裁剪区域。使用在建立父窗口时。</p>
<p>WS_CLIPSIBLINGS 剪裁相关的子窗口，这意味着，当一个特定的子窗口接收到重绘消息时，WS_CLIPSIBLINGS风格将在子窗口要重画的区域中去掉与其它子窗口重叠的部分。（如果没有指定WS_CLIPSIBLINGS风格，并且子窗口有重叠，当你在一个子窗口的客户区绘图时，它可能会画在相邻的子窗口的客户区中。）只与WS_CHILD风格一起使用。</p>
<p>WS_DISABLED 创建一个初始状态为禁止的窗口。</p>
<p>WS_DLGFRAME 创建一个窗口，具有双重边界，但是没有标题条。</p>
<p>WS_GROUP 指定一组控件中的第一个，用户可以用箭头键在这组控件中移动。在第一个控件后面把WS_GROUP风格设置为FALSE的控件都属于这一组。下一个具有WS_GROUP风格的控件将开始下一组（这意味着一个组在下一组的开始处结束）。</p>
<p>WS_HSCROLL 创建一个具有水平滚动条的窗口。 </p>
<p>WS_ICONIC：创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。</p>
<p>WS_MAXIMIZE 创建一个最大化的窗口。</p>
<p>WS_MAXIMIZEBOX 创建一个具有最大化按钮的窗口。</p>
<p>WS_MINIMIZE 创建一个初始状态为最小化的窗口。仅与WS_OVERLAPPED风格一起使用。</p>
<p>WS_MINIMIZEBOX 创建一个具有最小化按钮的窗口。</p>
<p>WS_OVERLAPPED 创建一个重叠窗口。重叠窗口通常具有标题条和边界。</p>
<p>WS_OVERLAPPEDWINDOW 创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,WS_THICKFRAME,WS_MINIMIZEBOX和WS_MAXIMIZEBOX风格的重叠式窗口。</p>
<p>WS_POPUP 创建一个弹出式窗口，不能与WS_CHILD风格一起使用。</p>
<p>WS_POPUPWINDOW 创建一个具有WS_BORDER，WS_POPUP和WS_SYSMENU风格的弹出窗口。为了使控制菜单可见，必须与WS_POPUPWINDOW一起使用WS_CAPTION风格。</p>
<p>WS_SIZEBOX：创建一个可调边框的窗口，与WS_THICKFRAME风格相同。</p>
<p>WS_SYSMENU 创建一个在标题条上具有控制菜单的窗口。仅对带标题条的窗口使用。</p>
<p>WS_TABSTOP 指定了一些控件中的一个，用户可以通过TAB键来移过它。TAB键使用户移动到下一个用WS_TABSTOP风格定义的控件。</p>
<p>WS_THICKFRAME 创建一个具有厚边框的窗口，可以通过厚边框来改变窗口大小。</p>
<p>WS_TILED：产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。</p>
<p>WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU,MS_THICKFRAME风格的窗口。</p>
<p>WS_VISIBLE 创建一个最初可见的窗口。</p>
<p>WS_VSCROLL 创建一个具有垂直滚动条的窗口。</p>
<p>扩展窗口风格(Extended window style)</p>
<p>WS_EX_ACCEPTFILES 指明用这个风格创建的窗口能够接受拖放文件。</p>
<p>WS_EX_APPWINDOW - 当窗口可见时将一个顶层窗口放置在任务栏上。</p>
<p>WS_EX_CLIENTEDGE 指明窗口具有3D外观，这意味着，边框具有下沉的边界。</p>
<p>WS_EX_CONTEXTHELP 在窗口的标题条中包含问号。当用户单击问号时，鼠标光标的形状变为带指针的问号。如果用户随后单击一个子窗口，子窗口将接收到一个WM_HELP消息。</p>
<p>WS_EX_CONTROLPARENT 允许用户用TAB键遍历窗口的子窗口。</p>
<p>WS_EX_DLGMODALFRAME 指明一个具有双重边界的窗口，当你在dwStyle参数中指定了WS_CAPTION风格标志时，它可以具有标题条（可选）。</p>
<p>WS_EX_LEFT 指定窗口具有左对齐属性。这是缺省值。</p>
<p>WS_EX_LEFTSCROLLBAR 将垂直滚动条放在客户区的左边。</p>
<p>WS_EX_LTRREADING 按照从左到右的方式显示窗口文本。这是缺省方式。</p>
<p>WS_EX_MDICHILD 创建一个MDI子窗口。</p>
<p>WS_EX_NOPARENTNOTIFY 指定用这个风格创建的子窗口在被创建或销毁的时候将不向父窗口发送WM_PARENTNOTIFY消息。</p>
<p>WS_EX_OVERLAPPEDWINDOW 组合了WS_EX_CLIENTEDGE和WS_EX_WIND-OWEDGE风格。</p>
<p>WS_EX_PALETTEWINDOW 组合了WS_EX_WINDOWEDGE和WS_EX_TOPMOST风格。</p>
<p>WS_EX_RIGHT 赋予窗口右对齐属性。这与窗口类有关。</p>
<p>WS_EX_RIGHTSCROLLBAR 将垂直滚动条（如果有）放在客户区的右边。这是缺省方式。</p>
<p>WS_EX_RTLREADING 按照从右到左的顺序显示窗口文本。</p>
<p>WS_EX_STATICEDGE 创建一个具有三维边界的窗口，用于不接受用户输入的项。</p>
<p>WS_EX_TOOLWINDOW 创建一个工具窗口，目的是被用作浮动工具条。工具窗口具有标题条，比通常的标题条要短，窗口的标题是用小字体显示的。工具窗口不出现在任务条或用户按下ALT+TAB时出现的窗口中。</p>
<p>WS_EX_TOPMOST 指定用这个风格创建的窗口必须被放在所有非顶层窗口的上面，即使这个窗口已经不处于激活状态，它还是保留在最上面。应用程序可以用SetWindowsPos成员函数来加入或去掉这个属性。</p>
<p>WS_EX_TRANSPARENT 指定了用这个风格创建的窗口是透明的。这意味着，在这个窗口下面的任何窗口都不会被这个窗口挡住。用这个风格创建的窗口只有当它下面的窗口都更新过以后才接收WM_PAINT消息。</p>
<p>WS_EX_WINDOWEDGE 指定了具有凸起边框的窗口。</p>
<p>MFC 对话框不同风格（BY Icer）</p>
<p>MFC对话框Border类型（None、Thin、Resizing、Dialog Frame）对应的部分属性</p>
<p>在运行中转换对话框类型需要用到的属性<br />
Dialog Frame<br />
WS_CAPTION | WS_POPUP | WS_SYSMENU | WS_CLIPSIBLINGS | DS_MODALFRAME</p>
<p>WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE</p>
<p>Thin<br />
比Dialog Frame缺少一个扩展属性WS_EX_DLGMODALFRAME</p>
<p>None<br />
比Dialog Frame缺少WS_CAPTION | DS_MODALFRAME</p>
<p>比Dialog Frame缺少扩展属性WS_EX_DLGMODALFRAME | WS_EX_WINDOWEDGE</p>
<p>Resizing<br />
比Dialog Frame多一个属性WS_THICKFRAME</p>
<p>控件</p>
<h2>窗口样式</h2>
<p>WS_POPUP - 弹出式窗口(不能与WS_CHILDWINDOW样式同时使用)<br />
WS_CHILDWINDOW - 子窗口(不能与WS_POPUP合用)<br />
WS_MINIMIZE - 最小化状态<br />
WS_VISIBLE - 可见状态<br />
WS_DISABLED - 不可用状态<br />
WS_CLIPSIBLINGS - 使窗口排除子窗口之间的相对区域<br />
WS_CLIPCHILDREN - 当在父窗口内绘图时,排除子窗口区域<br />
WS_MAXIMIZE - 具有最大化按钮,须指定WS_SYSTEM样式<br />
WS_CAPTION - 有标题框和边框(和WS_TILED样式相同)<br />
WS_BORDER - 有单边框<br />
WS_DLGFRAME - 带对话框边框样式,不带标题框<br />
WS_VSCROLL - 有垂直滚动条<br />
WS_HSCROLL - 有水平滚动条<br />
WS_SYSMENU - 标题框上带有窗口菜单(须指定WS_CAPTION样式)<br />
WS_THICKFRAME - 有可调边框(与WS_SIZEBOX样式相同)<br />
WS_GROUP - 组样式,每个组的第一个控件具有WS_TABSTOP样式<br />
WS_TABSTOP - 可接受TAB键焦点<br />
WS_MINIMIZEBOX - 有最小化按钮<br />
WS_MAXIMIZEBOX - 有最大化按钮<br />
WS_OVERLAPPEDWINDOW - 具有层叠,标题框,系统菜单,可调边框,系统按钮<br />
WS_POPUPWINDOW - 具有单边框,弹出式,系统菜单样式</p>
<h2>扩展风格</h2>
<p>WS_EX_DLGMODALFRAME - 带双层边框<br />
WS_EX_NOPARENTNOTIFY - 创建/销毁时不通知父窗口<br />
WS_EX_TOPMOST - 窗口置顶(停留在所有非最高层窗口的上面)<br />
WS_EX_ACCEPTFILES - 可接受文件拖放<br />
WS_EX_TRANSPARENT - 透明样式,在同属窗口已重画时该窗口才可重画<br />
WS_EX_MDICHILD - MDI子窗口样式<br />
WS_EX_TOOLWINDOW - 工具条窗口样式<br />
WS_EX_WINDOWEDGE - 带凸起边缘的边框<br />
WS_EX_CLIENTEDGE - 带阴影的边缘<br />
WS_EX_CONTEXTHELP - 有上下文帮助样式,标题栏包含一个问号标志<br />
WS_EX_RIGHT - 右对齐<br />
WS_EX_RTLREADING - 窗口文本从右到左显示<br />
WS_EX_LEFTSCROLLBAR - 垂直滚动条在窗口左边界<br />
WS_EX_CONTROLPARENT - 允许用户使用TAB键在窗口的子窗口间搜索<br />
WS_EX_STATICEDGE - 当窗口为不可用状态时创建一个三维边缘<br />
WS_EX_APPWINDOW - 当窗口可见时将一个顶层窗口放置在任务栏上<br />
WS_EX_OVERLAPPEDWINDOW - 带凸起边缘的边框,边缘有阴影<br />
WS_EX_PALETTEWINDOW - 带立体边框,有工具条窗口样式,窗口在顶层<br />
WS_EX_LAYERED - 分层或透明窗口,该样式可使用混合特效<br />
WS_EX_NOINHERITLAYOUT - 子控件不继承窗体或控件的布局<br />
WS_EX_LAYOUTRTL - 窗体或控件将具有从右向左的布局(因而会被镜像)<br />
WS_EX_COMPOSITED - 用双缓冲从下到上绘制窗口的所有子孙(WinXP以上)<br />
WS_EX_NOACTIVATE - 处于顶层但不激活</p>
<h1>32770 IDD_DLG</h1>
<hr />
<p>DS_ABSALIGN - 对话框的坐标为屏幕坐标(缺省为客户区坐标)<br />
DS_SYSMODAL - 系统模式(仅支持16位程序),不能与DS_CONTROL同用<br />
DS_LOCALEDIT - 在对话框内部为编辑框分配内存(仅支持16位程序)<br />
DS_SETFONT - 可定制对话框字体<br />
DS_MODALFRAME - 框架样式(不能与WS_CAPTION同用)<br />
DS_NOIDLEMSG - 无空闲消息<br />
DS_SETFOREGROUND - 使对话框在最前面显示<br />
DS_3DLOOK - 四周有3维边框<br />
DS_FIXEDSYS - 使用系统固定字体<br />
DS_NOFAILCREATE - 忽略创建过程中的错误<br />
DS_CONTROL - 控件模式,可作为其他对话框的子窗口<br />
DS_CENTER - 在屏幕居中<br />
DS_CENTERMOUSE - 在鼠标位置居中<br />
DS_CONTEXTHELP - 有上下文帮助按钮</p>
<h2>Edit</h2>
<p>ES_LEFT - 左对齐<br />
ES_CENTER - 居中对齐<br />
ES_RIGHT - 右对齐<br />
ES_MULTILINE - 多行<br />
ES_UPPERCASE - 全部大写<br />
ES_LOWERCASE - 全部小写<br />
ES_PASSWORD - 密码框<br />
ES_AUTOVSCROLL - 自动垂直滚动<br />
ES_AUTOHSCROLL - 自动水平滚动<br />
ES_NOHIDESEL - 始终显示选中部分<br />
ES_OEMCONVERT - 允许ANSI和OEM互相转换<br />
ES_READONLY - 只读<br />
ES_WANTRETURN - 可接受回车换行<br />
ES_NUMBER - 只接受数字输入</p>
<h2>ToolbarWindow32</h2>
<p>BTNS_BUTTON - 标准按钮<br />
BTNS_SEP - 分隔条按钮<br />
BTNS_CHECK - 按钮有选中和非选中两种状态,分别有不同的背景颜色<br />
BTNS_GROUP - 指定一组按钮,与BTNS_CHECK样式一起使用,同组内的按钮互斥<br />
BTNS_CHECKGROUP - 相当于BTNS_GROUP+BTNS_CHECK<br />
BTNS_DROPDOWN - 下拉按钮<br />
BTNS_AUTOSIZE - 自动改变大小<br />
BTNS_NOPREFIX - 不处理前缀字符(&amp;)<br />
BTNS_SHOWTEXT - 显示按钮标题<br />
BTNS_WHOLEDROPDOWN - 按钮有下拉箭头<br />
TBSTYLE_TOOLTIPS - 允许出现提示窗口<br />
TBSTYLE_WRAPABLE - 当工具栏太窄一行放不下时,工具栏按钮可换行<br />
TBSTYLE_ALTDRAG - 允许按住ALT键的同时拖动按钮来更改按钮位置<br />
TBSTYLE_FLAT - 平面工具栏,即工具栏和按钮都是透明的<br />
TBSTYLE_LIST - 平面工具栏并且文字在位图右侧,须在显示前设置<br />
TBSTYLE_CUSTOMERASE - 处理删除背景消息时生成NM_CUSTOMDRAW消息<br />
TBSTYLE_REGISTERDROP - 鼠标经过按钮时生成通知消息以请求放置目标对象<br />
TBSTYLE_TRANSPARENT - 透明工具栏,工具栏是透明的,但按钮不是<br />
TBSTYLE_EX_DRAWDDARROWS - 有分隔条的下拉按钮<br />
TBSTYLE_EX_MIXEDBUTTONS - 混合按钮<br />
TBSTYLE_EX_HIDECLIPPEDBUTTONS - 隐藏部分省略的按钮<br />
TBSTYLE_EX_DOUBLEBUFFER - 双缓冲机制(检测ToolBar是否改变)(WinXP以上)<br />
CCS_TOP - 顶部对齐(工具栏控件缺省值)<br />
CCS_NOMOVEY - 可以水平移动和改变大小(如指定了CCS_NORESIZE则无效)<br />
CCS_BOTTOM - 底部对齐(状态栏控件缺少值)<br />
CCS_NORESIZE - 禁止改变大小<br />
CCS_NOPARENTALIGN - 禁止自动移动到父窗口的顶部或底部<br />
CCS_ADJUSTABLE - 允许工具栏内置的定制按钮功能<br />
CCS_NODIVIDER - 不在控件顶部画高亮线<br />
CCS_VERT - 垂直显示<br />
CCS_LEFT - 垂直并居左显示<br />
CCS_RIGHT - 垂直并居右显示<br />
CCS_NOMOVEX - 可以垂直移动和改变大小(如指定了CCS_NORESIZE则无效)</p>
<h2>Static</h2>
<p>SS_LEFT - 左对齐<br />
SS_CENTER - 居中对齐<br />
SS_RIGHT - 右对齐<br />
SS_ICON - 显示为图标<br />
SS_BLACKRECT - 黑色矩形<br />
SS_GRAYRECT - 灰色矩形<br />
SS_WHITERECT - 白色矩形<br />
SS_BLACKFRAME - 黑色边框<br />
SS_GRAYFRAME - 灰色边框<br />
SS_WHITEFRAME - 白色边框<br />
SS_USERITEM - 用户定义<br />
SS_SIMPLE - 指定一个简单矩形并在矩形中显示一行文字<br />
SS_LEFTNOWORDWRAP - 左对齐,文字不换行,超过部分省略<br />
SS_OWNERDRAW - 允许自画,该控件可接受 WM_DRAWITEM 消息<br />
SS_BITMAP - 显示为位图<br />
SS_ENHMETAFILE - 显示为增强图元文件(WMF)<br />
SS_ETCHEDHORZ - 用 EDGE_ETCHED 样式绘制上下边框<br />
SS_ETCHEDVERT - 用 EDGE_ETCHED 样式绘制左右边框<br />
SS_ETCHEDFRAME - 用 EDGE_ETCHED 样式绘制四周边框<br />
SS_REALSIZECONTROL - 图像随控件缩放<br />
SS_NOPREFIX - 不处理前缀字符(&amp;)<br />
SS_NOTIFY - 单击或双击时通知父窗口<br />
SS_CENTERIMAGE - 图像居中<br />
SS_RIGHTJUST - SS_BITMAP或SS_ICON样式改变大小时右边界不动<br />
SS_REALSIZEIMAGE - 图像不缩放,超过部分省略<br />
SS_SUNKEN - 凹边框<br />
SS_ENDELLIPSIS - 结尾超出范围的字符串将省略,若超出限制后面不加圆点.<br />
SS_PATHELLIPSIS - 尽可能保留'\'后的文字.并在'\'前插入圆点<br />
SS_WORDELLIPSIS - 任何超出范围的字都要被省略并加三个圆点</p>
<h2>Button IDC_GRP</h2>
<p>BS_PUSHBUTTON - 按下弹起<br />
BS_DEFPUSHBUTTON - 带默认的按钮<br />
BS_CHECKBOX - 复选框<br />
BS_AUTOCHECKBOX - 自动改变状态的复选框<br />
BS_RADIOBUTTON - 单选框<br />
BS_3STATE - 三态复选框(选中,非选中,灰色)<br />
BS_AUTO3STATE - 自动改变状态的三态复选框<br />
BS_GROUPBOX - 组框<br />
BS_USERBUTTON - 此样式只为兼容16位Windows,已由BS_OWNERDRAW代替<br />
BS_AUTORADIOBUTTON - 自动改变状态的单选按钮<br />
BS_OWNERDRAW - 允许自画, 使其接受 WM_DRAWITEM 消息<br />
BS_LEFTTEXT - 文字在左边<br />
BS_TEXT - 文字标题<br />
BS_ICON - 带图标<br />
BS_BITMAP - 带位图<br />
BS_LEFT - 左对齐<br />
BS_RIGHT - 右对齐<br />
BS_CENTER - 居中对齐<br />
BS_TOP - 文字靠上<br />
BS_BOTTOM - 文字靠下<br />
BS_VCENTER - 文字垂直居中<br />
BS_PUSHLIKE - 类似按下弹起<br />
BS_MULTILINE - 多行文字<br />
BS_NOTIFY - 允许将焦点消息通知父窗口<br />
BS_FLAT - 平面<br />
BS_RIGHTBUTTON - 按钮在右面,相当于BS_LEFTTEXT</p>
<h2>ComboBox</h2>
<p>CBS_SIMPLE - 不显示下拉按钮,总是显示列表框<br />
CBS_DROPDOWN - 类似CBS_SIMPLE,只是在未点击下拉按钮以前不显示下拉列表<br />
CBS_DROPDOWNLIST - 类似CBS_DROPDOWN,但不可以更改文本内容<br />
CBS_OWNERDRAWFIXED - 允许自画,但行高一致<br />
CBS_OWNERDRAWVARIABLE - 允许自画,行高可以不一致<br />
CBS_AUTOHSCROLL - 自动滚动文本<br />
CBS_OEMCONVERT - 允许OEM字符集转换<br />
CBS_SORT - 自动按字母排序<br />
CBS_HASSTRINGS - 指定自画样式的ComboBox包含的项目由字符串组成<br />
CBS_NOINTEGRALHEIGHT - 组合框的大小可以不是项目大小的整数倍<br />
CBS_DISABLENOSCROLL - 总是显示垂直滚动条<br />
CBS_UPPERCASE - 全部大写<br />
CBS_LOWERCASE - 全部小写</p>
<h2>ScrollBar</h2>
<p>SBS_HORZ - 水平滚动条<br />
SBS_VERT - 垂直滚动条<br />
SBS_TOPALIGN - 在指定区域内顶对齐<br />
SBS_LEFTALIGN - 在指定区域内左对齐<br />
SBS_BOTTOMALIGN - 在指定区域内底对齐<br />
SBS_RIGHTALIGN - 在指定区域内右对齐<br />
SBS_SIZEBOXTOPLEFTALIGN - 带有大小框,左上对齐<br />
SBS_SIZEBOXBOTTOMRIGHTALIGN - 带有大小框,右下对齐<br />
SBS_SIZEBOX - 带有大小框<br />
SBS_SIZEGRIP - 类似SBS_SIZEBOX,但有凸起的边框</p>
<h2>SysTabControl32</h2>
<p>TCS_SCROLLOPPOSITE - 选择一个选项卡时不需要滚动对边<br />
TCS_BOTTOM - 选项卡在底部<br />
TCS_RIGHT - 选项卡在右边<br />
TCS_MULTISELECT - 允许多选<br />
TCS_FLATBUTTONS - 平面按钮样式, 四周没有边框<br />
TCS_FORCEICONLEFT - 强制图标在左边<br />
TCS_FORCELABELLEFT - 强制标签在左边<br />
TCS_HOTTRACK - 允许热点选择<br />
TCS_VERTICAL - 选项卡在左边并且文字垂直显示<br />
TCS_TABS - 选项卡样式, 四周有边框, 缺省样式<br />
TCS_BUTTONS - 按钮样式, 四周没有边框<br />
TCS_SINGLELINE - 单行显示<br />
TCS_MULTILINE - 多行显示<br />
TCS_RIGHTJUSTIFY -<br />
TCS_FIXEDWIDTH - 选项卡宽度固定<br />
TCS_RAGGEDRIGHT - 不允许拉伸选项卡以适应宽度<br />
TCS_FOCUSONBUTTONDOWN - 点击时获取焦点<br />
TCS_OWNERDRAWFIXED - 父窗口负责画出选项卡<br />
TCS_TOOLTIPS - 允许出现提示信息窗口<br />
TCS_FOCUSNEVER - 点击时不获取焦点<br />
TCS_EX_FLATSEPARATORS - 平面分隔条<br />
TCS_EX_REGISTERDROP - 注册拖放通知事件, 使用前须初始化OLE</p>
<h2>ListBox</h2>
<p>LBS_NOTIFY - 双击鼠标时通知父窗口<br />
LBS_SORT - 自动按字母排序<br />
LBS_NOREDRAW - 当改变时不重画<br />
LBS_MULTIPLESEL - 允许多项选择<br />
LBS_OWNERDRAWFIXED - 允许自画,但行高一致<br />
LBS_OWNERDRAWVARIABLE - 允许自画,行高可不一致<br />
LBS_HASSTRINGS - 指定自画样式的ListBox包含的项目由字符串组成<br />
LBS_USETABSTOPS - 可接受TAB键焦点<br />
LBS_NOINTEGRALHEIGHT - 列表框的大小可以不是项目大小的整数倍<br />
LBS_MULTICOLUMN - 允许多列<br />
LBS_WANTKEYBOARDINPUT - 拥有焦点且有按键时拥有者接收WM_VKEYTOITEM消息<br />
LBS_EXTENDEDSEL - 允许使用Shift键多选<br />
LBS_DISABLENOSCROLL - 总是显示垂直滚动条<br />
LBS_NODATA - 无数据模式(必须指定LBS_OWNERDRAWFIXED)<br />
LBS_NOSEL - 失去焦点时隐藏所选项<br />
LBS_STANDARD - 标准样式:按字母排序,允许通知父窗口,有边框</p>
<h2>msctls_progress32</h2>
<p>PBS_SMOOTH - 平滑的滚动条(不是缺省的分段滚动条)<br />
PBS_VERTICAL - 垂直方向</p>
<h2>msctls_updown32</h2>
<p>UDS_WRAP - 递增和递减如果超过边界则循环<br />
UDS_SETBUDDYINT - 值改变时设置关联窗口的文本<br />
UDS_ALIGNRIGHT - 位置在关联窗口的右边<br />
UDS_ALIGNLEFT - 位置在关联窗口的左边<br />
UDS_AUTOBUDDY - 自动选择上一个窗口为关联窗口<br />
UDS_ARROWKEYS - 响应键盘的上下键<br />
UDS_HORZ - 水平显示<br />
UDS_NOTHOUSANDS - 不显示千位分隔符(',')<br />
UDS_HOTTRACK - 允许热点选择</p>
<h2>msctls_trackbar32</h2>
<p>TBS_AUTOTICKS - 自动出现刻度<br />
TBS_VERT - 垂直方向<br />
TBS_HORZ - 水平方向<br />
TBS_TOP - 刻度在上方<br />
TBS_BOTTOM - 刻度在下方<br />
TBS_LEFT - 刻度在左边<br />
TBS_RIGHT - 刻度在右边<br />
TBS_BOTH - 两边都有刻度<br />
TBS_NOTICKS - 隐藏刻度<br />
TBS_ENABLESELRANGE - 允许区域选择<br />
TBS_FIXEDLENGTH - 滑动长度固定<br />
TBS_NOTHUMB - 隐藏滑动块<br />
TBS_TOOLTIPS - 允许提示窗口显示当前进度<br />
TBS_REVERSED - 保留<br />
TBS_DOWNISLEFT - 下=左,上=右(缺省是下=右,上=左)</p>
<h2>SysDateTimePick32</h2>
<p>DTS_UPDOWN - 右边显示上下按钮(缺省显示为组合框),运行时不可更改<br />
DTS_SHOWNONE - 在左侧显示一个复选框(允许没有选择)<br />
DTS_SHORTDATEFORMAT - 短日期格式(年份为4位数)<br />
DTS_LONGDATEFORMAT - 长日期格式(年份为4位数)<br />
DTS_TIMEFORMAT - 显示时间(缺省为显示日期)<br />
DTS_SHORTDATECENTURYFORMAT - 短日期格式<br />
DTS_APPCANPARSE - 允许拥有者解析用户输入动作<br />
DTS_RIGHTALIGN - 下拉框右对齐</p>
<h2>SysTreeView32</h2>
<p>TVS_HASBUTTONS - 在父项目前显示+号或-号<br />
TVS_HASLINES - 显示项目间的连线<br />
TVS_LINESATROOT - 根节点前显示+号或-号(忽略TVS_HASLINES样式)<br />
TVS_EDITLABELS - 允许编辑标签(类似资源管理器的文件更名)<br />
TVS_DISABLEDRAGDROP - 禁止拖放<br />
TVS_SHOWSELALWAYS - 始终显示所选中项(包括失去焦点时)<br />
TVS_RTLREADING - 从右到左阅读<br />
TVS_NOTOOLTIPS - 不出现提示信息窗口<br />
TVS_CHECKBOXES - 在各项目前面显示复选框<br />
TVS_TRACKSELECT - 允许热点选择<br />
TVS_SINGLEEXPAND - 按Ctrl键多选时鼠标点击仍然展开该项目<br />
TVS_INFOTIP - 允许发送TVM_SETITEMHEIGHT消息获得信息<br />
TVS_FULLROWSELECT - 允许选择整行<br />
TVS_NOSCROLL - 隐藏滚动条<br />
TVS_NONEVENHEIGHT - 设置项目高度为奇数</p>
<h2>SysListView32</h2>
<p>LVS_ICON - 大图标<br />
LVS_REPORT - 详细资料<br />
LVS_SMALLICON - 小图标<br />
LVS_LIST - 列表<br />
LVS_SINGLESEL - 只能单选<br />
LVS_SHOWSELALWAYS - 始终显示所选中项(包括失去焦点时)<br />
LVS_SORTASCENDING - 按升序排序<br />
LVS_SORTDESCENDING - 按降序排序<br />
LVS_SHAREIMAGELISTS - 共享图像列表(当控件销毁时图像列表仍可用)<br />
LVS_NOLABELWRAP - 文字不换行<br />
LVS_AUTOARRANGE - 自动排列<br />
LVS_EDITLABELS - 允许编辑标签(类似资源管理器的文件更名)<br />
LVS_OWNERDATA - 指定一个虚拟的ListView, 由用户自己管理Item数据<br />
LVS_NOSCROLL - 禁止滚动条(对LVS_LIST和LVS_REPORT样式不适用)<br />
LVS_ALIGNTOP - 顶端对齐<br />
LVS_ALIGNLEFT - 左对齐<br />
LVS_OWNERDRAWFIXED - 允许自画(仅详细资料模式)<br />
LVS_NOCOLUMNHEADER - 详细资料模式时不显示列头<br />
LVS_NOSORTHEADER - 列头显示为平面,不响应鼠标点击(详细资料模式)<br />
LVS_EX_GRIDLINES - 显示表格线(仅详细资料模式)<br />
LVS_EX_SUBITEMIMAGES - 允许子项目显示图像(仅详细资料模式)<br />
LVS_EX_CHECKBOXES - 在各项目前面显示复选框<br />
LVS_EX_TRACKSELECT - 允许热点选择<br />
LVS_EX_HEADERDRAGDROP - 允许通过拖放列头来重新安排各列(详细资料模式)<br />
LVS_EX_FULLROWSELECT - 允许选择整行(仅详细资料模式)<br />
LVS_EX_ONECLICKACTIVATE - 单击项目激活<br />
LVS_EX_TWOCLICKACTIVATE - 双击项目激活<br />
LVS_EX_FLATSB - 平面滚动条<br />
LVS_EX_REGIONAL - 项目范围只包括图标不透明区域和文字区域(大图标模式)<br />
LVS_EX_INFOTIP - 将提示信息窗口的消息通知父窗口<br />
LVS_EX_UNDERLINEHOT - 带热点的项目文字带下划线<br />
LVS_EX_UNDERLINECOLD - 非热点的项目文字带下划线<br />
LVS_EX_MULTIWORKAREAS - 多个工作区(需在没有添加项目前设置)<br />
LVS_EX_LABELTIP - 如果没有提示信息文本就展开隐藏的标签<br />
LVS_EX_BORDERSELECT - 用选择边框的样式代替高亮<br />
LVS_EX_DOUBLEBUFFER - 双缓冲(WinXP以上)<br />
LVS_EX_HIDELABELS - 隐藏标签(WinXP以上)<br />
LVS_EX_SINGLEROW - 显示单行(WinXP以上)<br />
LVS_EX_SNAPTOGRID - 图标自动对齐到表格(WinXP以上)<br />
LVS_EX_SIMPLESELECT - (WinXP以上)</p>
<h2>SysMonthCal32</h2>
<p>MCS_DAYSTATE - 允许发送MCN_GETDAYSTATE通知获取日期状态<br />
MCS_MULTISELECT - 允许多选<br />
MCS_WEEKNUMBERS - 在左侧显示周数<br />
MCS_NOTODAYCIRCLE - 不在今天的日期上显示一个圆圈<br />
MCS_NOTODAY - 不显示今天</p>
<h2>RichEdit20A</h2>
<p>ES_LEFT - 左对齐<br />
ES_CENTER - 居中对齐<br />
ES_RIGHT - 右对齐<br />
ES_MULTILINE - 多行<br />
ES_UPPERCASE - 全部大写<br />
ES_LOWERCASE - 全部小写<br />
ES_PASSWORD - 密码框<br />
ES_AUTOVSCROLL - 自动垂直滚动<br />
ES_AUTOHSCROLL - 自动水平滚动<br />
ES_NOHIDESEL - 始终显示选中部分<br />
ES_OEMCONVERT - 允许ANSI和OEM互相转换<br />
ES_READONLY - 只读<br />
ES_WANTRETURN - 可接受回车换行<br />
ES_NUMBER - 只接受数字输入<br />
ES_SAVESEL -<br />
ES_SUNKEN -<br />
ES_DISABLENOSCROLL -<br />
ES_SELECTIONBAR -<br />
ES_NOOLEDRAGDROP -<br />
ENM_NONE -<br />
ENM_CHANGE -<br />
ENM_UPDATE -<br />
ENM_SCROLL -<br />
ENM_KEYEVENTS -<br />
ENM_MOUSEEVENTS -<br />
ENM_REQUESTRESIZE -<br />
ENM_SELCHANGE -<br />
ENM_DROPFILES -<br />
ENM_PROTECTED -<br />
ENM_CORRECTTEXT -<br />
ENM_SCROLLEVENTS -<br />
ENM_DRAGDROPDONE -<br />
ENM_IMECHANGE -<br />
ENM_LANGCHANGE -<br />
ENM_OBJECTPOSITIONS -<br />
ENM_LINK -</p>
<h2>SysAnimate32</h2>
<p>ACS_CENTER - 居中显示<br />
ACS_TRANSPARENT - 透明<br />
ACS_AUTOPLAY - 自动播放<br />
ACS_TIMER - 使用内部定时器控制(不使用线程)</p>
<h2>SysHeader32</h2>
<p>HDS_HORZ - 水平显示<br />
HDS_VERT - 垂直显示<br />
HDS_BUTTONS - 按钮样式,可响应鼠标点击<br />
HDS_HOTTRACK - 允许热点选择<br />
HDS_HIDDEN - 使其高度为0,类似隐藏的效果,非真正隐藏<br />
HDS_DRAGDROP - 允许通过拖放列头来重新安排各列<br />
HDS_FULLDRAG - 拖动时显示列头内容<br />
HDS_FILTERBAR - 包含一个过滤栏<br />
HDS_FLAT - 平面样式,不响应鼠标点击(WinXP以上)</p>
<p>分类: 其他</p>]]></description>
    <pubDate>Tue, 25 Feb 2025 06:44:01 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/163.html</guid>
</item>
<item>
    <title>UTF-16LE 和 UTF-16BE</title>
    <link>http://blog.neacn.com/C/162.html</link>
    <description><![CDATA[<p><strong>UTF-16LE</strong> 和 <strong>UTF-16BE</strong> 都是双字节编码，但它们的主要区别在于字节顺序（即字节的排列顺序）。</p>
<hr />
<h3><strong>UTF-16 的基本特性</strong></h3>
<ol>
<li>
<p><strong>双字节编码</strong>：</p>
<ul>
<li>UTF-16 使用 <strong>2个字节（16位）</strong> 来表示一个字符。</li>
<li>对于超出基本多语言平面（BMP，即 U+0000 到 U+FFFF）的字符，UTF-16 使用 <strong>4个字节（代理对，Surrogate Pair）</strong> 来表示。</li>
</ul>
</li>
<li>
<p><strong>字节顺序</strong>：</p>
<ul>
<li>UTF-16 有两种字节顺序：
<ul>
<li><strong>UTF-16LE（Little Endian）</strong>：低字节在前，高字节在后。</li>
<li><strong>UTF-16BE（Big Endian）</strong>：高字节在前，低字节在后。</li>
</ul></li>
</ul>
</li>
</ol>
<hr />
<h3><strong>UTF-16LE 和 UTF-16BE 的区别</strong></h3>
<h4>1. <strong>UTF-16LE（Little Endian）</strong></h4>
<ul>
<li>字节顺序：低字节在前，高字节在后。</li>
<li>例如，字符 <code>A</code>（Unicode 码点 <code>U+0041</code>）的编码为：
<ul>
<li>低字节：<code>0x41</code></li>
<li>高字节：<code>0x00</code></li>
<li>存储顺序：<code>0x41 0x00</code></li>
</ul></li>
</ul>
<h4>2. <strong>UTF-16BE（Big Endian）</strong></h4>
<ul>
<li>字节顺序：高字节在前，低字节在后。</li>
<li>例如，字符 <code>A</code>（Unicode 码点 <code>U+0041</code>）的编码为：
<ul>
<li>高字节：<code>0x00</code></li>
<li>低字节：<code>0x41</code></li>
<li>存储顺序：<code>0x00 0x41</code></li>
</ul></li>
</ul>
<hr />
<h3><strong>BOM（字节顺序标记）</strong></h3>
<p>UTF-16 文件通常以 <strong>BOM（Byte Order Mark）</strong> 开头，用于指示字节顺序：</p>
<ul>
<li><strong>UTF-16LE</strong> 的 BOM 是 <code>0xFF 0xFE</code>。</li>
<li><strong>UTF-16BE</strong> 的 BOM 是 <code>0xFE 0xFF</code>。</li>
</ul>
<p>如果没有 BOM，则需要通过其他方式推断字节顺序。</p>
<hr />
<h3><strong>示例</strong></h3>
<p>以下是一个简单的示例，展示 UTF-16LE 和 UTF-16BE 的编码差异：</p>
<h4>字符：<code>A</code>（Unicode 码点 <code>U+0041</code>）</h4>
<ul>
<li><strong>UTF-16LE</strong>：<code>0x41 0x00</code></li>
<li><strong>UTF-16BE</strong>：<code>0x00 0x41</code></li>
</ul>
<h4>字符：<code>汉</code>（Unicode 码点 <code>U+6C49</code>）</h4>
<ul>
<li><strong>UTF-16LE</strong>：<code>0x49 0x6C</code></li>
<li><strong>UTF-16BE</strong>：<code>0x6C 0x49</code></li>
</ul>
<hr />
<h3><strong>总结</strong></h3>
<ul>
<li><strong>UTF-16LE 和 UTF-16BE 都是双字节编码</strong>，但它们的字节顺序相反。</li>
<li>对于超出 BMP 的字符（如 Emoji），UTF-16 使用 4 个字节（代理对）表示。</li>
<li>通过 BOM 可以区分 UTF-16LE 和 UTF-16BE。</li>
</ul>
<p>希望这个解释能帮助你更好地理解 UTF-16LE 和 UTF-16BE 的区别！如果还有其他问题，欢迎随时提问！</p>]]></description>
    <pubDate>Thu, 06 Feb 2025 02:25:15 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/162.html</guid>
</item>
<item>
    <title>C++ std</title>
    <link>http://blog.neacn.com/C/161.html</link>
    <description><![CDATA[<p>C++ 标准库（<code>std</code> 库）是 C++ 语言的核心组成部分，提供了丰富的功能，包括容器、算法、字符串处理、输入输出、多线程支持等。<code>std</code> 是标准库的命名空间，所有标准库的类和函数都定义在这个命名空间中。</p>
<p>以下是 C++ 标准库的主要组成部分和功能的详细介绍：</p>
<hr />
<h2>1. <strong>容器（Containers）</strong></h2>
<p>容器是用于存储数据的类模板，提供了多种数据结构。</p>
<h3>顺序容器</h3>
<ul>
<li><strong><code>std::vector</code></strong>：动态数组，支持快速随机访问。</li>
<li><strong><code>std::array</code></strong>：固定大小的数组，封装了 C 风格数组。</li>
<li><strong><code>std::deque</code></strong>：双端队列，支持快速头尾插入和删除。</li>
<li><strong><code>std::list</code></strong>：双向链表，支持高效插入和删除。</li>
<li><strong><code>std::forward_list</code></strong>：单向链表，内存占用更小。</li>
</ul>
<h3>关联容器</h3>
<ul>
<li><strong><code>std::set</code></strong>：有序集合，元素唯一。</li>
<li><strong><code>std::multiset</code></strong>：有序集合，允许重复元素。</li>
<li><strong><code>std::map</code></strong>：有序键值对，键唯一。</li>
<li><strong><code>std::multimap</code></strong>：有序键值对，允许重复键。</li>
</ul>
<h3>无序容器（C++11 引入）</h3>
<ul>
<li><strong><code>std::unordered_set</code></strong>：哈希集合，元素唯一。</li>
<li><strong><code>std::unordered_multiset</code></strong>：哈希集合，允许重复元素。</li>
<li><strong><code>std::unordered_map</code></strong>：哈希键值对，键唯一。</li>
<li><strong><code>std::unordered_multimap</code></strong>：哈希键值对，允许重复键。</li>
</ul>
<hr />
<h2>2. <strong>算法（Algorithms）</strong></h2>
<p>算法是用于操作容器中数据的函数模板，定义在 <code>&lt;algorithm&gt;</code> 头文件中。</p>
<h3>常用算法</h3>
<ul>
<li><strong><code>std::sort</code></strong>：对容器中的元素进行排序。</li>
<li><strong><code>std::find</code></strong>：查找容器中的元素。</li>
<li><strong><code>std::copy</code></strong>：复制容器中的元素。</li>
<li><strong><code>std::transform</code></strong>：对容器中的元素进行转换。</li>
<li><strong><code>std::accumulate</code></strong>：计算容器中元素的累加值。</li>
<li><strong><code>std::for_each</code></strong>：对容器中的每个元素执行操作。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;

int main() {
    std::vector&lt;int&gt; vec = {5, 3, 1, 4, 2};
    std::sort(vec.begin(), vec.end()); // 排序
    for (int x : vec) {
        std::cout &lt;&lt; x &lt;&lt; " "; // 输出：1 2 3 4 5
    }
    return 0;
}</code></pre>
<hr />
<h2>3. <strong>字符串处理（Strings）</strong></h2>
<p><code>std::string</code> 是用于处理字符串的类，定义在 <code>&lt;string&gt;</code> 头文件中。</p>
<h3>常用功能</h3>
<ul>
<li><strong><code>std::string</code></strong>：表示一个字符串。</li>
<li><strong><code>std::wstring</code></strong>：表示一个宽字符字符串。</li>
<li><strong><code>std::to_string</code></strong>：将数值转换为字符串。</li>
<li><strong><code>std::stoi</code>、<code>std::stol</code>、<code>std::stoll</code></strong>：将字符串转换为整数。</li>
<li><strong><code>std::stof</code>、<code>std::stod</code>、<code>std::stold</code></strong>：将字符串转换为浮点数。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;

int main() {
    std::string str = "Hello, World!";
    std::cout &lt;&lt; str.substr(0, 5) &lt;&lt; std::endl; // 输出：Hello
    return 0;
}</code></pre>
<hr />
<h2>4. <strong>输入输出（Input/Output）</strong></h2>
<p>C++ 标准库提供了强大的输入输出功能，定义在 <code>&lt;iostream&gt;</code> 头文件中。</p>
<h3>常用类</h3>
<ul>
<li><strong><code>std::cin</code></strong>：标准输入流。</li>
<li><strong><code>std::cout</code></strong>：标准输出流。</li>
<li><strong><code>std::cerr</code></strong>：标准错误流。</li>
<li><strong><code>std::ifstream</code></strong>：文件输入流。</li>
<li><strong><code>std::ofstream</code></strong>：文件输出流。</li>
<li><strong><code>std::stringstream</code></strong>：字符串流。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

int main() {
    std::ofstream file("test.txt");
    file &lt;&lt; "Hello, File!" &lt;&lt; std::endl;
    file.close();

    std::ifstream inFile("test.txt");
    std::string line;
    std::getline(inFile, line);
    std::cout &lt;&lt; line &lt;&lt; std::endl; // 输出：Hello, File!
    return 0;
}</code></pre>
<hr />
<h2>5. <strong>智能指针（Smart Pointers）</strong></h2>
<p>智能指针用于自动管理动态内存，定义在 <code>&lt;memory&gt;</code> 头文件中。</p>
<h3>常用智能指针</h3>
<ul>
<li><strong><code>std::unique_ptr</code></strong>：独占所有权的智能指针。</li>
<li><strong><code>std::shared_ptr</code></strong>：共享所有权的智能指针。</li>
<li><strong><code>std::weak_ptr</code></strong>：弱引用智能指针，用于解决循环引用问题。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;memory&gt;
#include &lt;iostream&gt;

int main() {
    std::unique_ptr&lt;int&gt; ptr = std::make_unique&lt;int&gt;(42);
    std::cout &lt;&lt; *ptr &lt;&lt; std::endl; // 输出：42
    return 0;
}</code></pre>
<hr />
<h2>6. <strong>多线程支持（Multithreading）</strong></h2>
<p>C++11 引入了多线程支持，定义在 <code>&lt;thread&gt;</code> 头文件中。</p>
<h3>常用类</h3>
<ul>
<li><strong><code>std::thread</code></strong>：表示一个线程。</li>
<li><strong><code>std::mutex</code></strong>：互斥锁，用于线程同步。</li>
<li><strong><code>std::lock_guard</code></strong>：RAII 风格的互斥锁管理。</li>
<li><strong><code>std::condition_variable</code></strong>：条件变量，用于线程间通信。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;thread&gt;
#include &lt;iostream&gt;

void task() {
    std::cout &lt;&lt; "Hello from thread!" &lt;&lt; std::endl;
}

int main() {
    std::thread t(task);
    t.join(); // 等待线程结束
    return 0;
}</code></pre>
<hr />
<h2>7. <strong>时间处理（Chrono）</strong></h2>
<p><code>std::chrono</code> 是用于时间处理的库，定义在 <code>&lt;chrono&gt;</code> 头文件中。</p>
<h3>常用功能</h3>
<ul>
<li><strong><code>std::chrono::system_clock</code></strong>：系统时钟。</li>
<li><strong><code>std::chrono::steady_clock</code></strong>：稳定时钟。</li>
<li><strong><code>std::chrono::duration</code></strong>：表示时间间隔。</li>
<li><strong><code>std::chrono::time_point</code></strong>：表示时间点。</li>
</ul>
<h3>示例</h3>
<pre><code class="language-cpp">#include &lt;chrono&gt;
#include &lt;thread&gt;
#include &lt;iostream&gt;

int main() {
    auto start = std::chrono::steady_clock::now();
    std::this_thread::sleep_for(std::chrono::seconds(1));
    auto end = std::chrono::steady_clock::now();
    std::cout &lt;&lt; "Elapsed time: " &lt;&lt; std::chrono::duration_cast&lt;std::chrono::milliseconds&gt;(end - start).count() &lt;&lt; " ms" &lt;&lt; std::endl;
    return 0;
}</code></pre>
<hr />
<h2>8. <strong>其他功能</strong></h2>
<ul>
<li><strong><code>std::function</code></strong>：用于存储可调用对象（函数、Lambda 表达式等）。</li>
<li><strong><code>std::tuple</code></strong>：用于存储多个不同类型的值。</li>
<li><strong><code>std::optional</code></strong>（C++17）：表示一个可能不存在的值。</li>
<li><strong><code>std::variant</code></strong>（C++17）：表示一个可以存储多种类型的值。</li>
</ul>
<hr />
<h2>总结</h2>
<p>C++ 标准库（<code>std</code> 库）提供了丰富的功能，涵盖了容器、算法、字符串处理、输入输出、智能指针、多线程、时间处理等方面。它是 C++ 开发中不可或缺的工具，能够显著提高开发效率和代码质量。</p>
<p>如果你对某个部分特别感兴趣，可以告诉我，我会提供更详细的解释和示例！ 😊</p>]]></description>
    <pubDate>Tue, 04 Feb 2025 11:31:22 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/161.html</guid>
</item>
<item>
    <title>985工程大学有哪些</title>
    <link>http://blog.neacn.com/other/160.html</link>
    <description><![CDATA[<table>
<thead>
<tr>
<th>所在地(共39所)</th>
<th>985大学名称</th>
</tr>
</thead>
<tbody>
<tr>
<td>北京（8所）</td>
<td>清华大学</td>
</tr>
<tr>
<td></td>
<td>北京大学</td>
</tr>
<tr>
<td></td>
<td>中国人民大学</td>
</tr>
<tr>
<td></td>
<td>北京航空航天大学</td>
</tr>
<tr>
<td></td>
<td>北京理工大学</td>
</tr>
<tr>
<td></td>
<td>北京师范大学</td>
</tr>
<tr>
<td></td>
<td>中国农业大学</td>
</tr>
<tr>
<td></td>
<td>中央民族大学</td>
</tr>
<tr>
<td>上海（4所）</td>
<td>复旦大学</td>
</tr>
<tr>
<td></td>
<td>上海交通大学</td>
</tr>
<tr>
<td></td>
<td>同济大学</td>
</tr>
<tr>
<td></td>
<td>华东师范大学</td>
</tr>
<tr>
<td>湖南（3所）</td>
<td>国防科技大学</td>
</tr>
<tr>
<td></td>
<td>湖南大学</td>
</tr>
<tr>
<td></td>
<td>中南大学</td>
</tr>
<tr>
<td>陕西（3所）</td>
<td>西安交通大学</td>
</tr>
<tr>
<td></td>
<td>西北工业大学</td>
</tr>
<tr>
<td></td>
<td>西北农林科技大学</td>
</tr>
<tr>
<td>广东(2所)</td>
<td>华南理工大学</td>
</tr>
<tr>
<td></td>
<td>中山大学</td>
</tr>
<tr>
<td>湖北(2所)</td>
<td>华中科技大学</td>
</tr>
<tr>
<td></td>
<td>武汉大学</td>
</tr>
<tr>
<td>江苏(2所)</td>
<td>东南大学</td>
</tr>
<tr>
<td></td>
<td>南京大学</td>
</tr>
<tr>
<td>辽宁(2所)</td>
<td>大连理工大学</td>
</tr>
<tr>
<td></td>
<td>东北大学</td>
</tr>
<tr>
<td>山东(2所)</td>
<td>山东大学</td>
</tr>
<tr>
<td></td>
<td>中国海洋大学</td>
</tr>
<tr>
<td>四川(2所)</td>
<td>四川大学</td>
</tr>
<tr>
<td></td>
<td>电子科技大学</td>
</tr>
<tr>
<td>天津(2所)</td>
<td>南开大学</td>
</tr>
<tr>
<td></td>
<td>天津大学</td>
</tr>
<tr>
<td>浙江</td>
<td>浙江大学</td>
</tr>
<tr>
<td>重庆</td>
<td>重庆大学</td>
</tr>
<tr>
<td>安徽</td>
<td>中国科学技术大学</td>
</tr>
<tr>
<td>福建</td>
<td>厦门大学</td>
</tr>
<tr>
<td>甘肃</td>
<td>兰州大学</td>
</tr>
<tr>
<td>吉林</td>
<td>吉林大学</td>
</tr>
<tr>
<td>黑龙江</td>
<td>哈尔滨工业大学</td>
</tr>
</tbody>
</table>
<p>这些985工程大学在不同领域均有着卓越的贡献和影响力，是我国高等教育体系中的重要组成部分。</p>]]></description>
    <pubDate>Fri, 31 Jan 2025 17:55:20 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/other/160.html</guid>
</item>
<item>
    <title>LOGFONT</title>
    <link>http://blog.neacn.com/C/159.html</link>
    <description><![CDATA[<pre><code class="language-cpp">LOGFONT lf;
ZeroMemory(&amp;lf, sizeof(LOGFONT));
lf.lfHeight = 20; // 字体大小
lf.lfWidth = 0;
lf.lfEscapement = 0;
lf.lfOrientation = 0;
lf.lfWeight = FW_NORMAL; // 字体粗细
lf.lfItalic = FALSE; // 是否斜体
lf.lfUnderline = FALSE; // 是否下划线
lf.lfStrikeOut = FALSE; // 是否删除线
lf.lfCharSet = DEFAULT_CHARSET; // 字符集
lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
lf.lfQuality = DEFAULT_QUALITY;
lf.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
lstrcpy(lf.lfFaceName, _T("Arial")); // 字体名称</code></pre>
<p>‌fClipPrecision‌是LOGFONT结构中的一个字段，用于指定剪辑精度。它定义了当字符的一部分超过剪辑区域时对字符的剪辑方式。在Windows字体设置中，fClipPrecision的值决定了字符的剪辑方式，确保字符的显示不会超出指定的区域‌<br />
具体来说，fClipPrecision字段有以下几种可能的值：</p>
<table>
<thead>
<tr>
<th>常量</th>
<th>说明</th>
</tr>
</thead>
<tbody>
<tr>
<td>CLIP_DEFAULT‌</td>
<td>使用系统的默认剪辑方式。</td>
</tr>
<tr>
<td>‌CLIP_CHARACTER_OUTLINE‌</td>
<td>剪辑字符的轮廓，确保字符不会超出剪辑区域。</td>
</tr>
<tr>
<td>‌CLIP_STROKE‌</td>
<td>剪辑字符的轮廓和边缘，适用于需要更精确控制字符显示的情况。</td>
</tr>
<tr>
<td>‌CLIP_EMBEDDED‌</td>
<td>将字符嵌入到剪辑区域中，确保字符完全在区域内显示。</td>
</tr>
<tr>
<td>‌CLIP_LH_ANGLES‌</td>
<td>根据字符的基线角度进行剪辑，适用于特定方向的文本显示需求。</td>
</tr>
</tbody>
</table>]]></description>
    <pubDate>Sat, 25 Jan 2025 17:48:14 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/159.html</guid>
</item>
<item>
    <title>ImmGetConversionStatus 函数(imm.h)</title>
    <link>http://blog.neacn.com/C/158.html</link>
    <description><![CDATA[<p>检索当前转换状态。</p>
<pre><code class="language-cpp">BOOL ImmGetConversionStatus(
                  HIMC    unnamedParam1,
  [out, optional] LPDWORD lpfdwConversion,
  [out, optional] LPDWORD lpfdwSentence
);</code></pre>
<p>参数</p>
<pre><code class="language-cpp">unnamedParam1

[out, optional] lpfdwConversion

指向变量的指针，函数在该变量中检索转换模式值的组合。 有关详细信息，请参阅 输入法转换模式值。

[out, optional] lpfdwSentence

指向函数检索句子模式值的变量的指针。 有关详细信息，请参阅 输入法句子模式值。</code></pre>
<p>返回值<br />
如果成功，则返回非零值，否则返回 0。</p>
<p>注解<br />
仅当 IME 支持这些模式时，才会设置转换和句子模式值。</p>
<p><a href="https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immgetconversionstatus">https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immgetconversionstatus</a></p>]]></description>
    <pubDate>Sat, 25 Jan 2025 09:38:55 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/158.html</guid>
</item>
<item>
    <title>ImmSetConversionStatus 函数 (imm.h)</title>
    <link>http://blog.neacn.com/C/157.html</link>
    <description><![CDATA[<h1>设置当前转换状态。</h1>
<pre><code class="language-cpp">BOOL ImmSetConversionStatus(
  [in] HIMC  unnamedParam1,
  [in] DWORD unnamedParam2,
  [in] DWORD unnamedParam3
);</code></pre>
<h1>参数</h1>
<pre><code class="language-cpp">[in] unnamedParam1

输入上下文的句柄。

[in] unnamedParam2

转换模式值。 有关详细信息，请参阅 IME 转换模式值。

[in] unnamedParam3

句子模式值。 有关详细信息，请参阅 IME 句子模式值。</code></pre>
<h1>返回值</h1>
<p>如果成功，则返回非零值，否则返回 0。</p>
<p><a href="https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immsetconversionstatus">https://learn.microsoft.com/zh-cn/windows/win32/api/imm/nf-imm-immsetconversionstatus</a></p>]]></description>
    <pubDate>Sat, 25 Jan 2025 09:16:16 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/157.html</guid>
</item>
<item>
    <title>输入法句子模式值</title>
    <link>http://blog.neacn.com/C/156.html</link>
    <description><![CDATA[<p>这些值与 ImmGetConversionStatus 和 ImmSetConversionStatus 函数一起使用。</p>
<table>
<thead>
<tr>
<th>常数</th>
<th>定义</th>
</tr>
</thead>
<tbody>
<tr>
<td>IME_SMODE_AUTOMATIC</td>
<td>IME 在自动模式下执行转换处理。</td>
</tr>
<tr>
<td>IME_SMODE_NONE</td>
<td>没有句子信息。</td>
</tr>
<tr>
<td>IME_SMODE_PHRASEPREDICT</td>
<td>IME 使用短语信息来预测下一个字符。</td>
</tr>
<tr>
<td>IME_SMODE_PLURALCLAUSE IME</td>
<td>使用复数子句信息来执行转换处理。</td>
</tr>
<tr>
<td>IME_SMODE_SINGLECONVERT</td>
<td>IME 在单字符模式下执行转换处理。</td>
</tr>
<tr>
<td>IME_SMODE_CONVERSATION</td>
<td>输入法使用对话模式。 这对于聊天应用程序很有用。</td>
</tr>
</tbody>
</table>
<p>16 到 31 位保留供输入法使用。</p>]]></description>
    <pubDate>Sat, 25 Jan 2025 09:12:45 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/156.html</guid>
</item>
<item>
    <title>IME 转换模式值</title>
    <link>http://blog.neacn.com/C/155.html</link>
    <description><![CDATA[<p>这些值与 ImmGetConversionStatus 和 ImmSetConversionStatus 函数一起使用。</p>
<table>
<thead>
<tr>
<th>bit</th>
<th>含义</th>
</tr>
</thead>
<tbody>
<tr>
<td>IME_CMODE_ALPHANUMERIC</td>
<td>字母数字输入模式。 这是默认设置，定义为 0x0000。</td>
</tr>
<tr>
<td>IME_CMODE_CHARCODE</td>
<td>如果字符代码输入模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_EUDC</td>
<td>如果 EUDC 转换模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_FIXED</td>
<td>Windows Me/98、Windows 2000、Windows XP： 如果固定转换模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_FULLSHAPE</td>
<td>如果全形状模式，则设置为 1;如果半形状模式，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_HANJACONVERT</td>
<td>如果 HANJA 转换模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_KATAKANA</td>
<td>如果片假名模式，则设置为 1;如果平假名模式，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_NATIVE</td>
<td>如果 NATIVE 模式，则设置为 1;如果 ALPHANUMERIC 模式，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_NOCONVERSION</td>
<td>设置为 1 可阻止 IME 处理转换;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_ROMAN</td>
<td>如果 ROMAN 输入模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_SOFTKBD</td>
<td>如果软键盘模式，则设置为 1;如果不是，则为 0。</td>
</tr>
<tr>
<td>IME_CMODE_SYMBOL</td>
<td>如果 SYMBOL 转换模式，则设置为 1;如果不是，则为 0。</td>
</tr>
</tbody>
</table>
<p>所有其他位是保留的。</p>]]></description>
    <pubDate>Sat, 25 Jan 2025 08:52:06 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/C/155.html</guid>
</item>
<item>
    <title>emlog pro 未注冊 无法发贴 怎么办</title>
    <link>http://blog.neacn.com/PHP/154.html</link>
    <description><![CDATA[<p>方法一、付费注册</p>
<p>付费注册之后应该就不会跳转了。</p>
<p>方法二、修改代码</p>
<p>文件：admin\article.php 中查找如下代码。</p>
<pre><code class="language-php">    $fields = [];

    if (!Register::isRegLocal() &amp;&amp; $sta_cache['lognum'] &gt; 50) {
        emDirect("auth.php?error_article=1");
    }

    include View::getAdmView(User::haveEditPermission() ? 'header' : 'uc_header');
</code></pre>
<p>将这几行代码注释或删除就可以了，以后发贴时就不会跳转了</p>
<pre><code class="language-php">    $fields = [];
/*
    if (!Register::isRegLocal() &amp;&amp; $sta_cache['lognum'] &gt; 50) {
        emDirect("auth.php?error_article=1");
    }
*/
    include View::getAdmView(User::haveEditPermission() ? 'header' : 'uc_header');
</code></pre>
<p>emlog pro 如果是免费开源程序，大家可以修改免费来用，<br />
如果是付费程序，想用的话就去花钱够买吧！</p>
<p>转载请注明出处</p>]]></description>
    <pubDate>Thu, 23 Jan 2025 15:15:52 +0800</pubDate>
    <dc:creator>江湖</dc:creator>
    <guid>http://blog.neacn.com/PHP/154.html</guid>
</item></channel>
</rss>