资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言窗口函数软件 c语言窗口函数软件有哪些

如何用C语言做一个windows应用程序窗口界面

可以使用CreateWindow函数。

创新互联于2013年创立,先为索县等服务建站,索县等地企业,进行企业商务咨询服务。为索县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

CreateWindow,Windows API宏, 在WinUser.h中根据是否已定义Unicode被分别定义为CreateWindowW和CreateWindowA,后两者又被分别定义为对CreateWindowExW和CreateWindowExA函数的调用。

函数原型:

HWND CreateWindow(

LPCTSTR lpClassName,

LPCTSTR lpWindowName,

DWORD dwStyle,

int x,

int y,

int nWidth,

int nHeight,

HWND hWndParent,

HMENU hMenu,

HANDLE hlnstance,

LPVOID lpParam);

参数:

详情

lpClassName

指向一个空结束的字符串或整型数atom。如果该参数是一个整型量,它是由此前调用theGlobalAddAtom函数产生的全局量。这个小于0xC000的16位数必须是lpClassName参数字的低16位,该参数的高位必须是0。

如果lpClassName是一个字符串,它指定了窗口的类名。这个类名可以是任何用函数RegisterClass注册的类名,或是任何预定义的控制类名。请看说明部分的列表。

LPWindowName

指向一个指定窗口名的空结束的字符串指针。

如果窗口风格指定了标题条,由lpWindowName指向的窗口标题将显示在标题条上。当使用Createwindow函数来创建控制例如按钮,选择框和静态控制时,可使用lpWindowName来指定控制文本。

dwStyle

指定创建窗口的风格。该参数可以是下列窗口风格的组合再加上说明部分的控制风格。风格意义:

WS_BORDER:创建一个带边框的窗口。

WS_CAPTION:创建一个有标题框的窗口(包括WS_BORDER风格)。

WS_CHILD:创建一个子窗口。这个风格不能与WS_POPUP风格合用。

WS_CHILDWINDOW:与WS_CHILD相同。

WS_CLIPCHILDREN:当在父窗口内绘图时,排除子窗口区域。在创建父窗口时使用这个风格。

WS_CLIPSIBLINGS:排除子窗口之间的相对区域,也就是,当一个特定的窗口接收到WM_PAINT消息时,WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外,只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格,并且子窗口是层叠的,则在重绘子窗口的客户区时,就会重绘邻近的子窗口。

WS_DISABLED:创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输入信息。

WS_DLGFRAME:创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。

WS_GROUP:指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成,自第二个控制开始每个控制,具有WS_GROUP风格,每个组的第一个控制带有WS_TABSTOP风格,从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。

WS_HSCROLL:创建一个有水平滚动条的窗口。

WS_ICONIC:创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。

WS_MAXIMIZE:创建一个初始状态为最大化状态的窗口。

WS_MAXIMIZEBOX:创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现,同时必须指定WS_SYSMENU风格。

WS_OVERLAPPED:产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。

WS_OVERLAPPEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口,与WS_TILEDWINDOW风格相同。

WS_POPUP:创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。

WS_POPUPWINDOW:创建一个具有WS_BORDER,WS_POPUP,WS_SYSMENU风格的窗口,WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。

WS_SIZEBOX:创建一个可调边框的窗口,与WS_THICKFRAME风格相同。

WS_SYSMENU:创建一个在标题条上带有窗口菜单的窗口,必须同时设定WS_CAPTION风格。

WS_TABSTOP:创建一个控制,这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。

WS_THICKFRAME:创建一个具有可调边框的窗口,与WS_SIZEBOX风格相同。

WS_TILED:产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。

WS_TILEDWINDOW:创建一个具有WS_OVERLAPPED,WS_CAPTION,WS_SYSMENU, WS_THICKFRAME,WS_MINIMIZEBOX,WS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。

WS_VISIBLE:创建一个初始状态为可见的窗口。

WS_VSCROLL:创建一个有垂直滚动条的窗口。

X

指定窗口的初始水平位置。对一个层叠或弹出式窗口,X参数是屏幕坐标系的窗口的左上角的初始X坐标。对于子窗口,x是子窗口左上角相对父窗口客户区左上角的初始X坐标。如果该参数被设为CW_USEDEFAULT则系统为窗口选择缺省的左上角坐标并忽略Y参数。CW_USEDEFAULT只对层叠窗口有效,如果为弹出式窗口或子窗口设定,则X和y参数被设为零。

Y

指定窗口的初始垂直位置。对一个层叠或弹出式窗口,y参数是屏幕坐标系的窗口的左上角的初始y坐标。对于子窗口,y是子窗口左上角相对父窗口客户区左上角的初始y坐标。对于列表框,y是列表框客户区左上角相对父窗口客户区左上角的初始y坐标。如果层叠窗口是使用WS_VISIBLE风格位创建的并且X参数被设为CW_USEDEFAULT,则系统将忽略y参数。

nWidth

以设备单元指明窗口的宽度。对于层叠窗口,nWidth或是屏幕坐标的窗口宽度或是CW_USEDEFAULT。若nWidth是CW_USEDEFAULT,则系统为窗口选择一个缺省的高度和宽度:缺省宽度为从初始X坐标开始到屏幕的右边界,缺省高度为从初始Y坐标开始到目标区域的顶部。CW_USEDEFAULT只对层叠窗口有效;如果为弹出式窗口和子窗口设定CW_USEDEFAULT标志则nWidth和nHeight被设为零。

nHeight

以设备单元指明窗口的高度。对于层叠窗口,nHeight是屏幕坐标的窗口宽度。若nWidth被设为CW_USEDEFAULT,则系统忽略nHeight参数。

hWndParent

指向被创建窗口的父窗口或所有者窗口的句柄。若要创建一个子窗口或一个被属窗口,需提供一个有效的窗口句柄。这个参数对弹出式窗口是可选的。Windows NT 5.0;创建一个消息窗口,可以提供HWND_MESSAGE或提供一个己存在的消息窗口的句柄。

hMenu

菜单句柄,或依据窗口风格指明一个子窗口标识。对于层叠或弹出式窗口,hMenu指定窗口使用的菜单:如果使用了菜单类,则hMenu可以为NULL。对于子窗口,hMenu指定了该子窗口标识(一个整型量),一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识,这个值对于相同父窗口的所有子窗口必须是唯一的。

hlnstance

与窗口相关联的模块实例的句柄。

lpParam

指向一个值的指针,该值传递给窗口WM_CREATE消息。该值通过在IParam参数中的CREATESTRUCT结构传递。如果应用程序调用CreateWindow创建一个MDI客户窗口,则lpParam必须指向一个CLIENTCREATESTRUCT结构。

返回值:如果函数成功,返回值为新窗口的句柄:如果函数失败,返回值为NULL。若想获得更多错误信息,请调用GetLastError函数。

例程:

// Window.cpp : Defines the entry point for the application.

#include windows.h

LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance,    //应用程序的实例句柄,

HINSTANCE hPrevInstance,

LPSTR     lpCmdLine,    //命令行

int       nCmdShow)    //显示方式

{

MSG msg;

HWND hWnd;

char szTitle[]="系统信息";                                // The title bar text

char szWindowClass[]="popMsg";                                // The title bar text

WNDCLASSEX wcex={0};

wcex.cbSize = sizeof(WNDCLASSEX);        //WNDCLASSEX结构体大小

wcex.style            = CS_HREDRAW | CS_VREDRAW;    //位置改变时重绘

wcex.lpfnWndProc    = (WNDPROC)WndProc;            //消息处理函数

wcex.hInstance        = 0;            //当前实例句柄

wcex.hbrBackground    = (HBRUSH)COLOR_WINDOWFRAME;    //背景色

wcex.lpszClassName    = szWindowClass;        //参窗口类名

wcex.hIcon            =0;        //图标

wcex.hCursor        =LoadCursor(NULL, IDC_ARROW);        //光标

wcex.lpszMenuName    =0;        //菜单名称

wcex.hIconSm        =0;        //最小化图标

RegisterClassEx(wcex);            //注册窗口类

hWnd = CreateWindow(szWindowClass, szTitle, WS_SYSMENU|WS_VISIBLE,    //创建窗口

CW_USEDEFAULT,CW_USEDEFAULT, 400, 300, NULL, NULL, 0, NULL);

if (!hWnd){

return FALSE;

}

ShowWindow(hWnd, nCmdShow);

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)

{

PAINTSTRUCT ps;

HDC hdc;

RECT rect;

switch (message) 

{   

case WM_PAINT:        //重绘消息

hdc = BeginPaint(hWnd, ps);

GetClientRect(hWnd, rect);

MoveToEx(hdc,10,10,0);

SelectObject( hdc,::CreatePen(PS_SOLID,1,RGB(0xFF,0,0)));

LineTo(hdc,100,200);

//            DrawText(hdc, szHello, strlen(szHello), rt, DT_CENTER);

EndPaint(hWnd, ps);

break;

case WM_CREATE:

RegisterHotKey(hWnd ,1, 0 ,0x41 );

break;

case WM_HOTKEY:

MessageBox(0,0,0,0);

break;

case WM_TIMER:

break;

case WM_DESTROY:    //窗口销毁消息

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

哪些软件可以用来编写c语言?

C语言开发软件须分编辑和编译两种。

只要可以编辑文本的软件几乎都可以用来编写C语言代码,比如能编辑txt文档的编辑器:notepad++、windows自带的文本编辑器、VC6、VS系列、Source Insight 、slickedit等等,非常多。比较专业的有VS系列(windows系统)、source insight、slickedit(支持windows和linux系统)等。

编译软件也琳琅满目,大大小小非常多。linux下有GCC、Qt,windows下有VS、VC、Qt等等……,针对单片机、嵌入式开发的通用一点的有keil,此外还有各家芯片公司自己的编译器。

看楼主是要从事哪方面的C开发,需要针对性的选择。

怎么用C语言编写一个windows窗口?

调用window库窗口函数即可创建windows窗口。

必须使用windows的编译器,如VC,MS等等。

RegisterClassEx函数:

该函数注册在随后调用CreateWindow函数和CreateWindowEx函数中使用的窗口类。 RegisterClass函数己经由函数RegisterClassEx函数来代替,但是,如果不需要设置类的小目标则仍然可以使用RegisterClass函数。

CreateWindowEx函数:

该函数创建一个具有扩展风格的层叠式窗口、弹出式窗口或子窗口,其他与CreateWindow函数相同。关于创建窗口和其他参数的内容,请参看CreateWindow。具体仍可见微软的msdn。

消息处理函数WindowProc:

该函数是一个应用程序定义的函数。它处理发送给窗口的消息。WINDPROC类型定义了一个指向该回调函数的指针。WindowProc是用于应用程序定义函数的占位符。

函数原型:

LRESULT CALLBACK WindowProc (HWND hwnd,

UINT uMsg,

WPARAM wParam,

LPARAM lParam);

参数:

hwnd:指向窗口的句柄。

uMsg:指定消息类型。

wParam:指定其余的、消息特定的信息。该参数的内容与UMsg参数值有关。

IParam:指定其余的、消息特定的信息。该参数的内容与uMsg参数值有关。

返回值:返回值就是消息处理结果,它与发送的消息有关。

一个简单的Window的代码如下:

#include Windows.h

#include tchar.h

LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);

int WinMain( 

__in HINSTANCE hInstance, 

__in_opt HINSTANCE hPrevInstance, 

__in LPSTR lpCmdLine, 

__in int nShowCmd 

)

{

TCHAR *szName = _T("myWindow");

WNDCLASSEX wc = {0};

HWND hWnd     = NULL;

MSG Msg       = {0};

wc.cbClsExtra    = 0;

wc.cbWndExtra    = 0;

wc.cbSize        = sizeof(WNDCLASSEX);

wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);//通过函数来设置一个白色的背景,这里大家设置为NULL看看,会很有趣的

wc.hCursor       = NULL;//不设置

wc.hIcon         = NULL;//不设置

wc.hIconSm       = NULL;//不设置

wc.hInstance     = hInstance;//当前程序的句柄,hInstance是有系统给传递的

wc.lpfnWndProc   = WinProc;//窗口处理过程的回调函数。

wc.lpszClassName = szName;//窗口类的名字。

wc.lpszMenuName  = NULL; 

wc.style         = CS_HREDRAW | CS_VREDRAW; 

RegisterClassEx(wc);//在系统中注册

hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,szName,_T("我的窗口我喜欢"),WS_OVERLAPPEDWINDOW,

200,100,600,400,NULL,NULL,hInstance,NULL);//创建窗口,窗口标题为"我的窗口我喜欢"

if(hWnd == NULL)

{

MessageBox(NULL,_T("There's an Error"),_T("Error Title"),MB_ICONEXCLAMATION|MB_OK);

return 0;

}

ShowWindow(hWnd,nShowCmd);//显示窗口

UpdateWindow(hWnd);

//下面是对消息的循环处理,大家先不必管这些,下节课我会细说的

while(GetMessage(Msg,NULL,0,0))

{

TranslateMessage(Msg);//翻译消息

DispatchMessage(Msg);//分派消息

}

return Msg.message;

}

//消息处理函数

LRESULT WINAPI WinProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)

{

switch(Msg)//处理消息过程

{

case WM_DESTROY://响应鼠标单击关闭按钮事件

PostQuitMessage(0);//退出消息队列

return 0;//退出函数

}

return DefWindowProc(hWnd,Msg,wParam,lParam);

}


本文名称:c语言窗口函数软件 c语言窗口函数软件有哪些
本文来源:http://cdkjz.cn/article/doccdcj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220