最近在学习Windows编程,看windows程序设计,但那个hellowin程序出来的窗口是可以拉伸的,怎样固定下来,让窗口不可以拉伸,应该是一个窗口样式或者风格,但老是查不出来,求助!
WS_SIZEBOX
WS_THICKFRAM
http://blog.csdn.net/diaolingle/article/details/17284711
WS_BORDER 0X00800000L 创建一个有边框的窗口
WS_CAPTION 0X00C00000L 创建一个带有标题栏的窗口(不能与WS_DLGFRAME风格一起使用,等价于 WS_BORDER | WS_DLGFRAME)
WS_CHILD 0X40000000L 创建一个子窗口,不能与WS_POPUP风格一起使用
WS_CHILDWINDOW 0X4000000L 等价于WS_CHILD
WS_CLIPCHILDREN 0X02000000L 排除当你在父窗口内绘制时子窗口所占用的面积,当你创建父窗口时使用
WS_CLIPSIBLINGS 0X04000000L 子窗口间相互裁剪,也就是说当两个窗口相互重叠时, 设置了WS_CLIPSIBLINGS样式的子窗口重绘时不能绘制被重叠的部分,反之没有设置WS_CLIPSIBLINGS样式的子窗口重绘时是不考虑重叠不重叠,统统重绘,只能和WS_CHILD风格一起使用
WS_DISABLED 0X08000000L 创建一个初始禁用的窗口
WS_DLGFRAME 0X00400000L 创建一个具有双边框,但没有标题的窗口
WS_GROUP 0X00020000L 拥有此风格的窗口是一组控件(控制)中的首个控件,该控件组合是由这个首控件和在它之后定义的所有控件组成,直到到达下一个拥有WS_GROUP风格的窗口为止。每个控件组合的首控件通常也拥有WS_TABSTOP风格,这样的话,用户可以在控件组之间进行移动。用户可以通过使用方向键,在一个控件组中,将键盘焦点从一个控件移动到该组的下一个控件。您可以靠打开/关闭这个风格来改变对话框的导航方式。要在一个窗口创建之后改变这个风格的话,可以使用SetWindowLong函数。
WS_HSCROLL 0X00100000L 创建一个带有水平滚动条的窗口
WS_ICONIC 0X20000000L 创建一个初始最小化的窗口,等同于WS_MINIMIZE
WS_MAXIMIZE 0X01000000L 创建一个最大化的窗口
WS_MAXIMIZEBOX 0X00010000L 创建一个具有最大化按钮的窗口
WS_MINIMIZE 0X20000000L 创建一个初始最小化的窗口,只用于WS_OVERLAPPED风格
WS_MINIMIZEBOX 0X00020000L 创建一个具有最小化按钮的窗口
WS_OVERLAPPED 0X00000000L 创建一个重叠窗口,重叠窗口通常具有标题栏和边框
WS_OVERLAPPEDWINDOW =WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX |WS_MAXMIZEBOX
WS_POPUP 0X80000000L 创建一个弹出式窗口,不能用于WS_CHILD风格
WS_POPUPWINDOW = WS_POPUP | WS_BORDER | WS_SYSMENU WS_CAPTION风格必须与WS_POPUPWINDOW相结合使控制菜单可用
WS_SIZEBOX 0X00040000L 创建一个带有缩放边框的窗口
WS_SYSMENU 0X00080000L 创建一个标题栏具有控制菜单框的窗口,仅适用于具有标题栏的窗口
WS_TABSTOP 0X00010000L 指定任意控件中的一个,通过它,用户可以通过使用Tab键移动,TAB键移动到下一个有WS_TABSTOP标志的控件
WS_THICKFRAME 0X00040000L 创建一个具有粗框的窗口可以用来调整窗口的大小
WS_TILED 0X00000000L 等同于WS_OVERLAPPED
WS_TILEDWINDOW = WS_OVERLAPPEDWINDOW
WS_VISIBLE 0X10000000L 创建一个初始可见的窗口
WS_VSCROLL 0X00200000L 创建一个带有垂直滚动条的窗口
Extended Window Styles:
WS_EX_ACCEPTFILES 0X00000010L 指定以此风格创建的窗口接受拖动和拖放文件
WS_EX_APPWINDOW 0X00040000L 强制顶层窗口到任务栏当该窗口是可见时
WS_EX_CLIENTEDGE 0X00000200L 指定一个窗口具有3D外观,也就是说,边界带下沉式边缘
WS_EX_CONTEXTHELP 0X00000400L 包含在窗口标题栏的问号,当用户单击问号,光标变为一个问号的指针,如果用户随后再点击一个子窗口,该子窗口收到WM_HELP消息
WS_EX_CONTROLPARENT 0X00010000L 允许用户通过使用TAB键在窗口的子窗口之间浏览
WS_EX_DLGMODALFRAME 0X00000001L 指定创建一个可能带有标题栏的带有双边框的窗口当你在dwStyle参数中指定WS_CAPTION的时候
WS_EX_LEFT 0X00000000L 给窗口通用的左对齐属性,这是默认的
WS_EX_LEFTSCROLLBAR 0X00004000L 放置一个垂直滚动条到客户区的左边
WS_EX_LTRREADING 0X00000000L 显示使用从左到右的阅读顺序属性的窗口文本,这是默认的
WS_EX_MDICHILD 0X00000040L 创建一个MDI子窗口
WS_EX_NOPARENTNOTIFY 0X00000004L 指定以此样式创建的子窗口不会发送WM_PARENTNOTIFY消息到它的父窗口当子窗口创建或销毁的时候
WS_EX_OVERLAPPEDWINDOW = WS_EX_WINDOWEDGE |WS_EX_CLIENTEDGE
WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE |WS_EX_TOOLWINDOW | WS_EX_TOPMOST
WS_EX_RIGHT 0X00001000L 给出了一个窗口通用的右对齐属性,这依赖于窗口
WS_EX_RIGHTSCROLLBAR 0X00000000L 放置一个垂直滚动条到客户区域的右侧,这是默认的
WS_EX_RTLREADING 0X00002000L 显示窗口文本使用从右到左的阅读顺序的属性
WS_EX_STATICEDGE 0X00020000L 创建一个具有立体边框样式的窗口用于那些不接受用户输入的项
WS_EX_TOOLWINDOW 0X00000080L 创建一个工具窗口,作为浮动工具栏的窗口,工具窗口上有一个比正常标题栏端的标题栏,窗口标题采用更小的字体,工具窗口不会显示在任务栏或窗口,当用户同时按下ALT+TAB键的时候它才会出现
WS_EX_TOPMOST 0X00000008L 指定以此风格创建的窗口应置于高于一切nontopmost的窗口之上即使窗口不在活动状态,应用程序可以使用SetWindowPos成员函数添加或删除此属性
WS_EX_TRANSPARENT 0X00000020L 指定以此样式创建的窗口时透明的,也就是说,在该窗口下方的所有窗口不会被该窗口遮盖,这种风格创建的窗口只有在它下面的所有兄弟窗口已经更新后才接受WM_PAINT消息
WS_EX_WINDOWEDGE 0X00000100L 指定一个具有凸起边缘的边框的窗口
这里贴一个代码 符合你的要求
/*------------------------------------------------------------
HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
(c) Charles Petzold, 1998
------------------------------------------------------------*/
#include
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("HelloWin") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox (NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
// RegisterClass (&wndclass);
hwnd = CreateWindow (szAppName, // window class name
TEXT ("The Hello Program"), // window caption
WS_OVERLAPPEDWINDOW, // window style
CW_USEDEFAULT, // initial x position
CW_USEDEFAULT, // initial y position
CW_USEDEFAULT, // initial x size
CW_USEDEFAULT, // initial y size
NULL, // parent window handle
NULL, // window menu handle
hInstance, // program instance handle
NULL) ; // creation parameters
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
PAINTSTRUCT ps ;
RECT rect ;
switch (message)
{
case WM_CREATE:
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
DrawText (hdc, TEXT ("字体居中"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_DESTROY:
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}
可以在初始化代码中添加以下语句:
this.FormBorderStyle = FormBorderStyle.FixedDialog;
在建立窗口时,设置窗口属性也可以:
只要WS_OVERLAPPEDWINDOW & ~WS_SIZEBOX就行了