﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Thinkfeng的C++</title><link>http://www.cppblog.com/Thinkfeng/</link><description>Thinkfeng的C++</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 08:56:52 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 08:56:52 GMT</pubDate><ttl>60</ttl><item><title>CreateWindow</title><link>http://www.cppblog.com/Thinkfeng/archive/2008/12/15/69508.html</link><dc:creator>Thinkfeng</dc:creator><author>Thinkfeng</author><pubDate>Mon, 15 Dec 2008 09:20:00 GMT</pubDate><guid>http://www.cppblog.com/Thinkfeng/archive/2008/12/15/69508.html</guid><wfw:comment>http://www.cppblog.com/Thinkfeng/comments/69508.html</wfw:comment><comments>http://www.cppblog.com/Thinkfeng/archive/2008/12/15/69508.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Thinkfeng/comments/commentRss/69508.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Thinkfeng/services/trackbacks/69508.html</trackback:ping><description><![CDATA[
<div>CreateWindow</div><div>&#160;&#160; &#160;函数功能：该函数创建一个重叠式窗口、弹出式窗口或子窗口。它指定窗口类，窗口标题，窗口</div><div><br></div><div>风格，以及窗口的初始位置及大小（可选的）。该函数也指定该窗口的父窗口或所属窗口（如果存在</div><div><br></div><div>的话），及窗口的菜单。若要使用除CreateWindow函数支持的风格外的扩展风格，则使用</div><div><br></div><div>CreateWindowEx函数代替CreateWindow函数。</div><div>&#160;&#160; &#160;函数原型：HWND CreateWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName,DWORD</div><div><br></div><div>dwStyle,int x,int y,int nWidth，int nHeight，HWND hWndParent,HMENU hMenu，HANDLE</div><div><br></div><div>hlnstance，LPVOID lpParam）；</div><div><br></div><div>&#160;&#160; &#160;参数：</div><div>&#160;&#160; &#160;lpClassName：指向一个空结束的字符串或整型数atom。如果该参数是一个整型量，它是由此前调</div><div><br></div><div>用theGlobalAddAtom函数产生的全局量。这个小于0xC000的16位数必须是lpClassName参数字的低16位</div><div><br></div><div>，该参数的高位必须是0。如果lpClassName是一个字符串，它指定了窗口的类名。这个类名可以是任</div><div><br></div><div>何用函数RegisterClassEx注册的类名，或是任何预定义的控制类名。请看说明部分的列表。</div><div>&#160;&#160; &#160;lpWindowName：指向一个指定窗口名的空结束的字符串指针。</div><div>&#160;&#160; &#160;如果窗口风格指定了标题条，由lpWindowName指向的窗口标题将显示在标题条上。当使用</div><div><br></div><div>Createwindow函数来创建控制例如按钮，选择框和静态控制时，可使用lpWindowName来指定控制文本</div><div><br></div><div>。</div><div>&#160;&#160; &#160;dwStyle：指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。</div><div><br></div><div>风格意义：</div><div>&#160;&#160; &#160;WS_BORDER：创建一个单边框的窗口。</div><div>&#160;&#160; &#160;WS_CAPTION：创建一个有标题框的窗口（包括WS_BORDER风格）。</div><div>&#160;&#160; &#160;WS_CHILD：创建一个子窗口。这个风格不能与WS_POPUP风格合用。</div><div>&#160;&#160; &#160;WS_CHILDWINDOW：与WS_CHILD相同。</div><div>&#160;&#160; &#160;WS_CLIPCHILDREN：当在父窗口内绘图时，排除子窗口区域。在创建父窗口时使用这个风格。</div><div>&#160;&#160; &#160;WS_CLIPSIBLINGS：排除子窗口之间的相对区域，也就是，当一个特定的窗口接收到WM_PAINT消息</div><div><br></div><div>时，WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外，只重绘指定的子窗口。如果未指定</div><div><br></div><div>WS_CLIPSIBLINGS风格，并且子窗口是层叠的，则在重绘子窗口的客户区时，就会重绘邻近的子窗口。</div><div>&#160;&#160; &#160;WS_DISABLED：创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输人</div><div><br></div><div>信息。</div><div>&#160;&#160; &#160;WS_DLGFRAME：创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。</div><div>&#160;&#160; &#160;WS_GROUP：指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成，自第</div><div><br></div><div>二个控制开始每个控制，具有WS_GROUP风格，每个组的第一个控制带有WS_TABSTOP风格，从而使用户</div><div><br></div><div>可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。</div><div>&#160;&#160; &#160;WS_HSCROLL：创建一个有水平滚动条的窗口。</div><div>&#160;&#160; &#160;WS_ICONIC：创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。</div><div>&#160;&#160; &#160;WS_MAXIMIZE：创建一个初始状态为最大化状态的窗口。</div><div>&#160;&#160; &#160;WS_MAXIMIZEBOX：创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出</div><div><br></div><div>现，同时必须指定WS_SYSMENU风格。</div><div>&#160;&#160; &#160;WS_MINIMIZE：创建一个初始状态为最小化状态的窗口。与WS_ICONIC风格相同。</div><div>&#160;&#160; &#160;WS_MINIMIZEBOX：创建一个具有最小化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出</div><div><br></div><div>现，同时必须指定WS_SYSMENU风格。</div><div>&#160;&#160; &#160;WS_OVERLAPPED：产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风</div><div><br></div><div>格相同。</div><div>&#160;&#160; &#160;WS_OVERLAPPEDWINDOW：创建一个具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU，WS_THICKFRAME</div><div><br></div><div>，WS_MINIMIZEBOX，WS_MAXMIZEBOX风格的层叠窗口，与WS_TILEDWINDOW风格相同。</div><div>&#160;&#160; &#160;WS_POPUP：创建一个弹出式窗口。该风格不能与WS_CHLD风格同时使用。</div><div>&#160;&#160; &#160;WS_POPUWINDOW：创建一个具有WS_BORDER，WS_POPUP,WS_SYSMENU风格的窗口，WS_CAPTION和</div><div><br></div><div>WS_POPUPWINDOW必须同时设定才能使窗口某单可见。</div><div>&#160;&#160; &#160;WS_SIZEBOX：创建一个可调边框的窗口，与WS_THICKFRAME风格相同。</div><div>&#160;&#160; &#160;WS_SYSMENU：创建一个在标题条上带有窗口菜单的窗口，必须同时设定WS_CAPTION风格。</div><div>&#160;&#160; &#160;WS_TABSTOP：创建一个控制，这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键</div><div><br></div><div>盘焦点转移到下一具有WS_TABSTOP风格的控制。</div><div>&#160;&#160; &#160;WS_THICKFRAME：创建一个具有可调边框的窗口，与WS_SIZEBOX风格相同。</div><div>&#160;&#160; &#160;WS_TILED：产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格</div><div><br></div><div>相同。</div><div>&#160;&#160; &#160;WS_TILEDWINDOW：创建一个具有WS_OVERLAPPED，WS_CAPTION，WS_SYSMENU MS_THICKFRAME．</div><div>&#160;&#160; &#160;WS_MINIMIZEBOX，WS_MAXMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。</div><div>&#160;&#160; &#160;WS_VISIBLE：创建一个初始状态为可见的窗口。</div><div>&#160;&#160; &#160;WS_VSCROLL：创建一个有垂直滚动条的窗口。</div><div><br></div><div>&#160;&#160; &#160;X：指定窗口的初始水平位置。对一个层叠或弹出式窗口，X参数是屏幕坐标系的窗口的左上角的</div><div><br></div><div>初始X坐标。对于子富口，x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为</div><div><br></div><div>CW_USEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效，</div><div><br></div><div>如果为弹出式窗口或子窗口设定，则X和y参数被设为零。</div><div>&#160;&#160; &#160;Y：指定窗口的初始垂直位置。对一个层叠或弹出式窗日，y参数是屏幕坐标系的窗口的左上角的</div><div><br></div><div>初始y坐标。对于子窗口，y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框，y是</div><div><br></div><div>列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创</div><div><br></div><div>建的并且X参数被设为CW_USEDEFAULT，则系统将忽略y参数。</div><div>&#160;&#160; &#160;nWidth：以设备单元指明窗口的宽度。对于层叠窗口，nWidth或是屏幕坐标的窗口宽度或是</div><div><br></div><div>CW_USEDEFAULT。若nWidth是CW_USEDEFAULT，则系统为窗口选择一个缺省的高度和宽度：缺省宽度为</div><div><br></div><div>从初始X坐标开始到屏幕的右边界，缺省高度为从初始X坐标开始到目标区域的顶部。CW_USEDEFAULT只</div><div><br></div><div>参层叠窗口有效；如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。</div><div>&#160;&#160; &#160;nHeight：以设备单元指明窗口的高度。对于层叠窗口，nHeight是屏幕坐标的窗口宽度。若</div><div><br></div><div>nWidth被设为CW_USEDEFAULT，则系统忽略nHeight参数。</div><div>&#160;&#160; &#160;hWndParent：指向被创建窗口的父窗口或所有者窗口的旬柄。若要创建一个子窗口或一个被属窗</div><div><br></div><div>口，需提供一个有效的窗口句柄。这个参数对弹出式窗日是可选的。Windows NT 5.0；创建一个消息</div><div><br></div><div>窗口，可以提供HWND_MESSAGE或提供一个己存在的消息窗口的句柄。</div><div>&#160;&#160; &#160;hMenu：菜单句柄，或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口，hMenu指定窗</div><div><br></div><div>口使用的菜单：如果使用了菜单类，则hMenu可以为NULL。对于子窗口，hMenu指定了该子窗口标识（</div><div><br></div><div>一个整型量），一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识，这个值对于</div><div><br></div><div>相同父窗口的所有子窗口必须是唯一的。</div><div>&#160;&#160; &#160;hInstance：与窗口相关联的模块事例的句柄。</div><div>&#160;&#160; &#160;lpParam：指向一个值的指针，该值传递给窗口 WM_CREATE消息。该值通过在lParam参数中的</div><div><br></div><div>CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口，则lpParam必须指向</div><div><br></div><div>一个CLIENTCREATESTRUCT结构。</div><div>&#160;&#160; &#160;返回值：如果函数成功，返回值为新窗口的句柄：如果函数失败，返回值为NULL。若想获得更多</div><div><br></div><div>错误信息，请调用GetLastError函数。</div><div>&#160;&#160; &#160;备注：在返回前，CreateWindow给窗口过程发送一个WM_CREATE消息。对于层叠，弹出式和子窗口</div><div><br></div><div>，CreateWindow给窗口发送WM_CREATE，WM_GETMINMAXINFO和WM_NCCREATE消息。消息WM_CREATE的</div><div><br></div><div>lParam参数包含一个指向CREATESTRUCT结构的指针。如果指定了WS_VISIBLE风格，CreateWindow向窗</div><div><br></div><div>口发送所有需要激活和显示窗口的消息。</div><div>&#160;&#160; &#160;获取有关任务条是否为创建的窗口显示一个按钮的控制信息，参看Taskbar按钮的Visbility。</div><div>&#160;&#160;&#160;</div><div>以下预定义的控制类可以在lpClassName参数中指定。注意在dwStyle参数中可以使用的相应的控制风</div><div><br></div><div>格。</div><div><br></div><div>&#160;&#160; &#160;BUTTON：按钮，是一个小矩形子窗口，用户可以点击来打开或关闭。按钮控制可以单独使用或包</div><div><br></div><div>含在组中使用，可以为控制写标签或不写标签。当用户点击按钮控制时按钮的外观有明显的改变。请</div><div><br></div><div>参看Button。查看dwStyle参数中指定的按钮风格表请参考Button Style。</div><div>&#160;&#160; &#160;COMBOBOX：组合框，由一个列表框和一个类似于编辑控制的选择域组成。在使用这个风格控制时</div><div><br></div><div>，应用程序或者使列表框一直显示或者是作成一个下拉列表。如果列表框可见，则在编辑域中输入字</div><div><br></div><div>符将使列表框中与字符一致的第一个域高亮。反之，在列表框中选择的项将显示在编辑域中。请参看</div><div><br></div><div>Combo Boxes。</div><div>&#160;&#160; &#160;查看dwStyle参数中指定的组合框风格表请参考Combo Boxes Style。</div><div>&#160;&#160; &#160;EDIT：编辑框，一个小的矩形子窗口，用户可以使用键盘向其中输入文本。用户可以通过点击或</div><div><br></div><div>按Tab键来选中编辑框控制并且使控制获得焦点。当编辑框中显示一个闪烁的插入记号时，用户可以输</div><div><br></div><div>入文本。使用鼠标移动光标，选择被替换的字符或设置插入字符的位置或使用回退键删除字符。请参</div><div><br></div><div>看Edit controls。</div><div>&#160;&#160; &#160;查看dwStyle参数中指定的编辑框风格的表格请参考Edit Control Style。</div><div>&#160;&#160; &#160;LISTBOX：列表框，字符串的列表。当应用程序必须显示名称的列表，例如文件名列表等，使用户</div><div><br></div><div>可以从中选择时就可指定列表框。用户可以通过单击来选择名称。选择时，被选择名高亮，同时传递</div><div><br></div><div>给父窗口一个通知消息。请参看LiSt Box Style。查看dwStyle参数中指定的列表风格表请参考List</div><div><br></div><div>BOX Control Style。</div><div>&#160;&#160; &#160;MDICLIENT：客户设计出MDI客户窗口。窗口接收控制MDI应用程序子窗口的消息。建议使用两种控</div><div><br></div><div>制风格位：WS_CLIPCHILDREN和WS_CHILD。指定了WS_HSCROLL和WS_VSCROLL风格的MDI客户窗口允许用</div><div><br></div><div>户将MDI子窗口滑动进入视窗。请参看MDI。</div><div>&#160;&#160; &#160;RichEdit：设计一个Rich Editl.0版的控制。该控制使用户可以以字符和段落格式测览和编辑文</div><div><br></div><div>本，并且可以包含嵌入的COM对象。请参看Rich Edit Controls。查看dwStyle参数中指定的RichEdit</div><div><br></div><div>风格表请参考List Box Control Style。</div><div>&#160;&#160; &#160;RICHEDIT_CLASS：设计一个Rich Edik2.0版的控制。该控制使用户可以以字符和段落格式测览和</div><div><br></div><div>编辑文本，并且可以包含嵌入的COM对象。请参看RichEditControls。查看dwStyle参数中指定的</div><div><br></div><div>RichEdit风格表请参考RichEditControIStyle。</div><div>&#160;&#160; &#160;SCROLLBAR： 滚动条，设计的一个包含着一个滚动盒和两端有方向箭头的矩形。只要用户点击了</div><div><br></div><div>控制，滚动条就给父窗口发送一个通知消息。如有必要，父窗口负责更新滚动条的位置。请参看</div><div><br></div><div>ScrollBars。查看dwStyle参数中指定的滚动条风格表请参考Scroll Bars Style。</div><div>&#160;&#160; &#160;STATIC：一个简单的静态文本域，文本盒或矩形用于给控制加标签，组合控制或将控制与其他控</div><div><br></div><div>制分开。</div><div>&#160;&#160; &#160;静态控制不提供输入和也不提供输出。请参看Static Control Styles。查看dwStyle参数中指定</div><div><br></div><div>的静态文本风格表请参考Scroll Bars Style。</div><div><br></div><div>&#160;&#160; &#160;Windows95：系统可以支持最大16,364个窗口句柄。</div><div><br></div><div>&#160;&#160; &#160;备注：如果在链接应用程序时指明是Windows 4.x版本，除非应用程序的窗口有窗口某单，否则窗</div><div><br></div><div>口控制没有标题控制。对Windows3.x版本没有这种要求。</div><div><br></div><div>&#160;&#160; &#160;Windows CE：CreateWindow是以&#8220;宏&#8221;方式完成的。它被定义为CreateWindowEX，并且dwExStyle</div><div><br></div><div>参数被置为长整数0。不支持菜单条控制，除非被声明为子窗口标志否则hMenu参数必须为NULL。不支</div><div><br></div><div>持MDICLIENT窗口类。dwStyle参数可以是对话框（Dialogue Box），窗口（Windows），控制</div><div><br></div><div>（Controls）文件中的窗口风格和控制风格的组合。</div><div>&#160;&#160; &#160;下列dwStyle标志在窗口中不支持：</div><div>&#160;&#160; &#160;WS_CHILDWINDOW；WS_ICONIC；WS_MAXIMIZE；WS_MAXIMIZEBOX；WS_MINIMIZE；WS_MINIMIZEBOX；</div><div>&#160;&#160; &#160;WS_OVERLAPPEDWINDOW；WS_POPUPWINDOW；WS_SIZEBOX；WS_THICKFRAME；WS_TILED；</div><div><br></div><div>WS_TILEDWINDOW</div><div>&#160;&#160; &#160;下列dwStyle标志在控制和对话框中不支持：</div><div>&#160;&#160; &#160;不支持的按钮风格和静态控制风格：</div><div>&#160;&#160; &#160;BS_LEFTTEXT；BS_MULTILINE；BS_TEXT；BS_USERBUTTON；</div><div>&#160;&#160; &#160;不支持的静态控制风格：SS_BLACKFRAME；SS_GRAYFRAME；SS_METAPICT； SS_SIMPLE；</div><div><br></div><div>SS_WHITERECT；SS_BLACKRECT；SS_GRAYRECT；SS_RIGHTIMAGE；SS_WHITEFRAME</div><div>&#160;&#160; &#160;不支持组合框风格。</div><div>&#160;&#160; &#160;CBS_OWNERDRAWFIXED；CBS_OWNWEDRAWVARIABLE；CBS_SIMPLE</div><div>&#160;&#160; &#160;不支持列表框控制风格。</div><div>&#160;&#160; &#160;LBS_NODATA；LBS_OWNERDRAWFIXED；LBS_OWNERDRAWVARIABLE；LBS_STANDARD</div><div>&#160;&#160; &#160;不支持的对话框风格：</div><div>&#160;&#160; &#160; DS_ABSALIGN；DS_CENTERMOUSE；DS_CONTEXTHELP；DS_FIXEDSYS；DS_NOFAILCREATE；</div><div><br></div><div>DS_NOIDLEMSG；DS_SYSMODAL；</div><div>&#160;&#160; &#160;不支持滚动条的风格</div><div>&#160;&#160; &#160;SBS_BOTTOMALIGN SBS_RIGHTALIGN；SBS_SlZEBOXBOTT0MRIHTALIGN；SBS_SIZEGRIP</div><div>&#160;&#160; &#160;可使用BS_OWNERDRAW风格来代替BS_USERBUTTON风格。</div><div>&#160;&#160; &#160;可使用SS_LEFT或SS_LEFTNOWORDWRAP风格来代替静态控制的SS_SIMPLE风格。</div><div>&#160;&#160; &#160;不支持MDICLIENT窗口类。</div><div>&#160;&#160; &#160;所有窗口都隐含WS_CLIPSIBLINGS和 WS_CLIPCHILDREN风格。</div><div>&#160;&#160; &#160;Windows CE1.0版除对话框外不支持被属窗口。如果hwndParent参数不为NULL，则窗口隐含给出</div><div><br></div><div>WS_CHILD风格。Windows CE1.0不支持菜单条。</div><div><br></div><div>&#160;&#160; &#160;速查： Windows NT：3.1以上版本；Windows：95以上版本；Windows CE：1.0以上版本；头文件</div><div><br></div><div>：winuser.h；库文件：user32.lib； Unicode：在Windows NT上实现为Unicode和ANSI两种版本。</div><div><br></div><img src ="http://www.cppblog.com/Thinkfeng/aggbug/69508.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Thinkfeng/" target="_blank">Thinkfeng</a> 2008-12-15 17:20 <a href="http://www.cppblog.com/Thinkfeng/archive/2008/12/15/69508.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对有关数据类型转换的整理</title><link>http://www.cppblog.com/Thinkfeng/archive/2008/12/05/68669.html</link><dc:creator>Thinkfeng</dc:creator><author>Thinkfeng</author><pubDate>Fri, 05 Dec 2008 11:08:00 GMT</pubDate><guid>http://www.cppblog.com/Thinkfeng/archive/2008/12/05/68669.html</guid><wfw:comment>http://www.cppblog.com/Thinkfeng/comments/68669.html</wfw:comment><comments>http://www.cppblog.com/Thinkfeng/archive/2008/12/05/68669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Thinkfeng/comments/commentRss/68669.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Thinkfeng/services/trackbacks/68669.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;1int&nbsp;i&nbsp;=&nbsp;100;&nbsp;2long&nbsp;l&nbsp;=&nbsp;2001;&nbsp;3float&nbsp;f=300.2;&nbsp;4double&nbsp;d=12345.119;&nbsp;5char&nbsp;username[]="程佩君";&nbsp;6char&nbsp;temp[200];&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/Thinkfeng/archive/2008/12/05/68669.html'>阅读全文</a><img src ="http://www.cppblog.com/Thinkfeng/aggbug/68669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Thinkfeng/" target="_blank">Thinkfeng</a> 2008-12-05 19:08 <a href="http://www.cppblog.com/Thinkfeng/archive/2008/12/05/68669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>