windows编程 程序每行注释
发布时间:2025-05-19 10:35:38 发布人:远客网络
一、windows编程 程序每行注释
1、#include<windows.h>//windows程序设计必须要包含的头文件
2、LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//回调函数的声明,将在wndclass.lpfnWndProc= WndProc;中用到
3、int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR szCmdLine, int iCmdShow)
4、static TCHAR szAppName[]= TEXT("HelloWin");//将"HelloWin"赋给szAppName[]
5、HWND hwnd;//定义一个窗口句柄,用来标识窗口
6、MSG msg;//定义一个消息结构体,该结构体包含消息的几个数据
7、WNDCLASS wndclass;//定义一个窗口类,该窗口类也是个结构体,下面的语句是修改结构体数据
8、wndclass.style= CS_HREDRAW| CS_VREDRAW;//窗口绘制模式为水平重绘和垂直重绘
9、wndclass.lpfnWndProc= WndProc;//回调函数为一开始申明的函数
10、wndclass.cbClsExtra= 0;//类的附加内存(额外的),不需要就设为0
11、wndclass.cbWndExtra= 0;//窗口的附加内存,同上
12、wndclass.hInstance= hInstance;//当前实例为系统传递过来的实例,只能是这样,其它系统帮你做好了
13、wndclass.hIcon= LoadIcon(NULL, IDI_APPLICATION);//加载ICON图标,NULL加载系统的图标,第二个参数使系统里面图标的一个标识
14、wndclass.hCursor= LoadCursor(NULL, IDC_ARROW);//同上,不过是加载光标
15、wndclass.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);//设置窗口背景为白色
16、wndclass.lpszMenuName= NULL;//因为没有菜单,所以设为空
17、wndclass.lpszClassName= szAppName;//你为你设计的这个窗口类取个名字
18、if(!RegisterClass(&wndclass))//注册你刚刚设计好的窗口
19、MessageBox( NULL, TEXT("This program requires Windows NT!"),
20、szAppName, MB_ICONERROR);//注册不成功,弹出消息框,显示引号里文字
21、hwnd= CreateWindow( szAppName,// window class name
22、TEXT("The Hello Program"),// window caption
23、WS_OVERLAPPEDWINDOW,// window style
24、CW_USEDEFAULT,// initial x position默认的窗口左上角的X、Y点
25、CW_USEDEFAULT,// initial y position
26、CW_USEDEFAULT,// initial x size默认窗口显示的宽和高
27、CW_USEDEFAULT,// initial y size
28、NULL,// parent window handle没有父窗口
29、NULL,// window menu handle没有菜单、菜单句柄为空
30、hInstance,// program instance handle程序当前实例,由系统传递
31、ShowWindow(hwnd, iCmdShow);//显示窗口
32、while(GetMessage(&msg, NULL, 0, 0))//消息循环,获取消息
33、TranslateMessage(&msg);//翻译消息,
34、DispatchMessage(&msg);//分发消息
35、return msg.wParam;//返回消息里的一个参数,只有退出程序时该值才为0
36、LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
37、case WM_CREATE://接受到的消息,窗口刚刚创建好时发送
38、PlaySound(TEXT("hellowin.wav"), NULL, SND_FILENAME| SND_ASYNC);//播放声音
39、case WM_PAINT://接受到的消息,窗口发生变化时
40、hdc= BeginPaint(hwnd,&ps);//得到设备上下文句柄
41、GetClientRect(hwnd,&rect);//得到当前客户区矩形
42、DrawText(hdc, TEXT("Hello, Windows 98!"),-1,&rect,
43、DT_SINGLELINE| DT_CENTER| DT_VCENTER);//输出引号里文字,后面参数定义它输出的方式
44、EndPaint(hwnd,&ps);//释放设备上下文句柄
45、case WM_DESTROY://窗口销毁时的到的消息
46、return DefWindowProc(hwnd, message, wParam, lParam);//对没有定义处理方法的消息,系统默认处理
二、C语言windows,OpenGL编程
查找 MSDN可以得知,MSG里面的 pt坐标是相对于窗口的左上角的;
2.至于声音控制和播放,可以使用 Windows自带的 MCI API,或者使用 DirectSound来播放,我推荐你使用 un4seen的 BASS,简单实用强大,一两个函数就可以播放音效了;
3.你要使用 alpha blend与桌面进行镂空运算,就必须首先获得桌面的窗体句柄,OpenGL的 alppha运算我不是很懂,不过 Direct3D的话就简单多了;
4.屏幕常亮,其实就是阻止系统进入休眠状态,每当系统要进入休眠状态之前,都会向系统的所有窗口发送一条消息,你拦截这条消息,进行特别的处理就可以防止系统进入休眠了,至于是什么消息,请查看 MSDN,我也好久没用过这条消息了;
5.bmp文件可以保存 alpha通道,使用 32bit色深的 bmp文件就可以了,RGB分别 8bit,alpha通道 8bit,不过说到 alpha通道,tga或者 png图片更加合适,因为他们可以进行无损压缩;
6.用GetPocAddress导出函数,只能用类型强制转换,这个是 windows的原则,我们只能去迎合它了...
7.执行 NULL指针的话,不同的系统会有不同的反应,XP是直接程序崩溃,Vista或者以上的系统,就会提示无响应
8.如果你建立的工程是 Win32窗口程序,那么就不会有 DOS窗口,如果你建立的是 Win32控制台程序,那么就会有 DOS窗口;如果你使用 OpenGL实用库来创建 OpenGL程序,那个 DOS窗口是无法消除的,它可以帮助你进行错误排查
9.不要用 Dev C++了,用 VS2010吧,这是行业规范
三、c编程初学软件哪个好
Dev-C++是一个Windows环境下的一个适合于初学者使用的轻量级C/C++集成开发环境(IDE)。它是一款自由软件,遵守GPL许可协议分发源代码。它集合了MinGW中的GCC编译器、GDB调试器和AStyle格式整理器等众多自由软件。
最经典的C语言编译器,系统体积小,简单易学,容易上手,而且很多前人或书籍的程序均基于该编译器,是学习C语言的首选。
目前主流的C/C++语言编译器,包含强大的类和内嵌WinAPI的MFC,具有可视化的编程界面。软件报错比较准确,但比较难用。是微软推出的一款编译器,是一个功能强大的可视化软件开发工具。
Code::Blocks是一个开放源码的全功能的跨平台C/C++集成开发环境。Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(2.6.2unicode)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。
C-Free是一款集成开发环境(IDE),支持多种编译器的专业化C/C++,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。它安装包很小而且调试起来比较方便适合初学者。
GNU编译器套件(GNUCompilerCollection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。