c语言怎么编出windows窗口

作者&投稿:战卸 (若有异议请与网页底部的电邮联系)
怎么用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 #include 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);}

1、C语言的应用很广的,比如 单片机,嵌入式,都需要C语言,而C语言也是非常合适类似开发的,这个是和硬件电路密切相关的,虽然很少用C语言开发可视化界面(目前我没有用过),但可以控制各种硬件的运行动作。此外.C语言可以开发可视化的程序界面,但这是高级的C语言编程,需要继续学习才能了解的。更重要的一点,学习C语言个人一种编程开发的思想,计算机的各种语言很多,但都有类似的地方,学过C语言在学习其他语言如java等就简单了.2、下面是一个在windows窗体上显示树形图的程序。在vc6中新建win32工程(注意不是控制台)。然后新建c++源文件,粘贴代码进去,编译运行即可。
#include #include #define AD 3.14159265*45/180//相邻树枝的旋转角度#define Gold 0.618//相邻树枝的长度比例 范围0-1#define Len 100 //树根的长度HDC hdc;struct Node{double x;//节点坐标xdouble y;//节点坐标ydouble AM;//节点的左右分支的中线方向double Length;//节点的原支长度struct Node *LeftNode;//左分支struct Node *RightNode;//右分支};LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);void DL(double x1,double y1,double x2,double y2);void DrawNode(struct Node *ThisNode);void DrawTree (void);//画一条直线void DL(double x1,double y1,double x2,double y2){MoveToEx (hdc, x1, y1, NULL) ;LineTo (hdc, x2, y2) ;}void DrawNode(struct Node *ThisNode){//左分支的地址、角度、长度、坐标ThisNode->LeftNode=(struct Node *)malloc(sizeof(struct Node));ThisNode->LeftNode->AM =ThisNode->AM +AD;ThisNode->LeftNode->Length =ThisNode->Length *Gold;ThisNode->LeftNode->x=ThisNode->x+cos(ThisNode->LeftNode->AM)*ThisNode->LeftNode->Length;ThisNode->LeftNode->y=ThisNode->y+sin(ThisNode->LeftNode->AM)*ThisNode->LeftNode->Length;//右分支的地址、角度、长度、坐标ThisNode->RightNode=(struct Node *)malloc(sizeof(struct Node));ThisNode->RightNode->AM =ThisNode->AM -AD;ThisNode->RightNode->Length =ThisNode->Length *Gold;ThisNode->RightNode->x=ThisNode->x+cos(ThisNode->RightNode->AM)*ThisNode->RightNode->Length;ThisNode->RightNode->y=ThisNode->y+sin(ThisNode->RightNode->AM)*ThisNode->RightNode->Length;//画图DL(ThisNode->x,ThisNode->y,ThisNode->LeftNode->x,ThisNode->LeftNode->y);DL(ThisNode->x,ThisNode->y,ThisNode->RightNode->x,ThisNode->RightNode->y);//递归终点if(ThisNode->Length>5 ){DrawNode(ThisNode->LeftNode);DrawNode(ThisNode->RightNode);//}}void DrawTree (void){struct Node TreeRoot;TreeRoot.x =500;//树根的横坐标TreeRoot.y =Len;TreeRoot.AM =3.14159265/2;TreeRoot.Length =Len;DrawNode(&TreeRoot);}int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow){static TCHAR szAppName[] = TEXT ("SineWave") ;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 ("Program requires Windows NT!"),szAppName, MB_ICONERROR) ;return 0 ;}hwnd = CreateWindow ( szAppName, TEXT ("Sine Wave Using Polyline"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,NULL, NULL, hInstance, NULL) ;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){PAINTSTRUCT ps ;switch (message){case WM_SIZE:return 0 ;case WM_PAINT:hdc = BeginPaint (hwnd, &ps) ;DrawTree();return 0 ;case WM_DESTROY:PostQuitMessage (0) ;return 0 ;}return DefWindowProc (hwnd, message, wParam, lParam) ;}

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

  2. 必须使用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的代码如下:

  3. #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语言只是学算法,除非你已是编程高手,否则你不可能变出什么好东西,最好直接去看《windows程序设计》,126元。最好再请个老师,选我吧

看Windows API先,也可以学MFC。
要编写Windows的程序,能输出窗口、按钮、声音等等你就得学Windows的API。而如果你要开发Android应用就看Android API。

MFC 。入门很难
C语言基础不好,C++不会的话,还是别想太多了,扎实好基础吧,揠苗助长,只会跌得很惨

用vb或者mfc,前者要看vb的内容,后者需要看c++和mfc方面的,当然也可以使用c++ builder啦,这个也是很简单的

对,像他们说的那样看那些涉及到图形编程的书,最著名的就是windows程序设计第五版

可以看看windows编程


电脑编程用什么软件
比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。 用C语言编写的游戏:非常非常多。 资料:C语言的经典著作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C...

win10输入法怎么切换到英文
9、首先打开区域和语言设置搜索,看看是否有“显示语言替代”,如果有,恭喜你,你马上就能解决问题了Win11系统语言修改不了中文 2接下来很简单,打开控制面板搜索 点击添加语言,点击高级设置 Win11系统语言修改不。10、win11输入法进入游戏怎么一直保持中文状态的方法如下1首先按下键盘“Windows”键打开开始...

WIN CE的程序主要用什么语言编写?想弄个简单的GPS导航软件.
语言用c++。开发工具一般用evc4.0+sp4或者vs2003,vs2005,vs2008均可。

如何将Win10系统电脑的语言切换为中文语言
win10系统是我们常用的一款计算机操作系统,系统性能优秀,十分实用高效,有的朋友想知道怎么将Win10系统电脑的语言切换为中文语言,小编为大家介绍方法。一、设置中文语言显示 1. 首先,请打开电脑,然后点击左下方的【开始】,接着选择【设置】。2. 第二步,我们需要选择“TimeLanguage”。3. 第三步,...

win10语言栏不见了怎么办?
如果您的Windows 10语言栏不见了,可能是因为语言栏设置被更改或禁用。以下是一些解决方法:检查语言栏是否已启用:单击任务栏右侧的通知区域箭头,然后查看是否已启用语言栏。如果没有启用,请右键单击任务栏,选择“任务栏设置”,然后确保“在任务栏中显示语言栏”选项已打开。检查语言栏是否已启用:如果...

易语言编译出来的程序 支持win10系统吗
一般情况下易语言编译出来的软件是win32位程序,支持32位和64位的系统,支持xp,7,8.1,10等系统

win10系统下如何搭建C语言开发环境|win10系统搭建C语言开发环境教程
因为工作需求,有位朋友想在最新的windows10系统中搭建C语言开发环境,可是安装后发现电脑会出现无法运行的错误。这该怎么办呢?下面,就随小编看看windows10系统搭建C语言开发环境的具体方法。下载\/安装1、在此提供devC++的最新版原生安装包。(链接)2、打开安装包,选择安装语言,直接【OK】(不用担心...

适合win10系统的c语言编译器
桌面操作系统 对于当前主流桌面操作系统而言,可使用 Visual C++、GCC 以及 LLVM Clang 这三大编译器。Visual C++(简称 MSVC)只能用于 Windows 操作系统;GCC 和 LLVM Clang 除了可用于Windows操作系统之外,主要用于 Unix\/Linux 操作系统。像现在很多版本的 Linux 都默认使用 GCC 作为C语言编译器,而像...

win10系统怎么安装c语言?
解决方法如下:操作设备:戴尔笔记本电脑 操作系统:win10 操作程序:DEV-C++v2.01 1、首先我们打开DEV-C++,点击菜单栏中的“工具”,点击“编译选项”这个选项,打开编译选项对话框。2、然后我们选中“编译时加入以下命令”和“在连接器命令行加入以下命令”这两个复选框。3、在“编译时加入以下命令...

win7下c语言编程软件推荐哪个版本?
新手推荐带有编译器的Mingw版本,或者带有wxWidgets库的,安装只需双击运行,简单快捷。最后,这里分享的不仅仅是一份编译器清单,更是对C语言编程世界的探索指南。无论你是初出茅庐还是经验丰富的开发者,这些工具都能助你顺利踏上编程之旅。希望这个列表能为你的Win7 C语言编程之路提供有力支持。

商南县15531567507: c语言怎么做windows窗口程序 -
白山福里: 用这些,很简单:1、语言:C++2、类库 MFC3、工具 VC 然后自己深入研究,就可以顺着微软路线go on ... 了

商南县15531567507: 【】用c语言编一个windows窗体应用程序【】 -
白山福里: 用GetDlgItemText函数把textbox1的内容送到字符串里 利用atof函数转换成double型,然后自加,再把这个double型数字转换成字符串,用SetDlgItemText就能放到textbox2中了

商南县15531567507: 如何用C语言写出windows窗口程序,而不再是控制台 -
白山福里: 可以写MFC、WIN32 API的窗口程序,或QT ,SDL,等窗口程序 ~ ~ ~ ~

商南县15531567507: 在C语言中,如何将输出窗口变成Windows窗口? -
白山福里: 用c写的话要用Windows的api以及各种关于窗口及句柄的结构,《Windows程序设计》(这本书网上可以下载到)第三章有简单的介绍,看一下你就知道怎么回事了,当然只是简单介绍..另外写窗体程序的话建议mfc(c++),或者.net.

商南县15531567507: 如何用C语言创建windows窗体程序 -
白山福里: API应用程序编程接口

商南县15531567507: 求用c语言编写windows窗口的代码程序.谢谢! -
白山福里: 以下程序在C++BUILDER中测试通过.//---------------------------------------------------------------------------#include #include LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); WINAPI WinMain(HINSTANCE hInstance, HINSTANCE ...

商南县15531567507: C语怎么写窗口 -
白山福里: C语言在windows当然可以写窗口的,早期的窗口很多是用C而非C++写的只是现在很少有人这样做了(因为有MFC,VCL,QT)以下是一个EX:#include/*Thisiswherealltheinputtothewindowgoesto*/LRESULTCALLBACKWndProc(HWNDhwnd,...

商南县15531567507: c语言编写windows带有菜单的窗口 -
白山福里: 可以用VC6.0也可以用VS.net.都行 用了,messagebox就是.api函数主要看msdn 给你win32写的窗口:里面用到一个playsound函数播放一个wav格式的生音#include LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; int ...

商南县15531567507: 用C语言编写设计一个Windows应用程序窗口界面. -
白山福里: 您好! 小弟建议您用 Visual C# 2008 软件 这不是问题,这是标准模块 属于秒杀问题 根本不需要任何演算法(内建)!

商南县15531567507: C语言如何做成Windows界面滴exe!
白山福里: 在windows下一般是c语言+api,也就是win32编程,光c语言是不够的,当然也可以用c++和MFC来写windows界面.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网