windows编程:第一个windows程序

 1 #define WIN32_LEAN_AND_MEAN
 2 #include <windows.h>
 3 #include <windowsx.h>
 4 #include <math.h>
 5 #define WINDOW_CLASS_NAME L"WINCLASS1"
 6 //窗口处理函数
 7 LRESULT CALLBACK WindowProc(HWND hwnd,
 8     UINT msg,
 9     WPARAM wParam,
10     LPARAM lPram)
11 {
12     PAINTSTRUCT ps;
13     HDC hdc;
14     switch (msg)
15     {
16     case WM_CREATE:
17     {
18                       return 0;
19     }break;
20     case WM_PAINT:
21     {
22                      hdc = BeginPaint(hwnd, &ps);
23                      EndPaint(hwnd, &ps);
24                      return 0;
25     }break;
26     default:break;
27     }
28     return DefWindowProc(hwnd, msg, wParam, lPram);
29 }
30 void GameMain()
31 {
32     return;
33 }
34 int WINAPI WinMain(HINSTANCE hInstance,
35     HINSTANCE hPrevInstance,
36     LPSTR lpCmdLine,
37     int nCmdShow)
38 {
39     //定义窗口类
40     WNDCLASSEX winClass;
41     HWND hWnd;
42     MSG msg;
43     //填充窗口类的个成员
44     winClass.cbSize = sizeof(WNDCLASSEX);
45     winClass.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
46     winClass.lpfnWndProc = WindowProc;    //窗口消息处理函数
47     winClass.cbClsExtra = 0;
48     winClass.cbWndExtra = 0;
49     winClass.hInstance = hInstance;
50     winClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
51     winClass.hCursor = LoadCursor(NULL, IDC_ARROW);
52     winClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
53     winClass.lpszMenuName = NULL;
54     winClass.lpszClassName = WINDOW_CLASS_NAME;        //窗口类名
55     winClass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
56
57     //注册窗口类
58     if (!RegisterClassEx(&winClass))
59     {
60         return 0;
61     }
62
63     //创建窗口类的一个成员
64     if (!(hWnd = CreateWindowEx(NULL,
65         WINDOW_CLASS_NAME,
66         L"hello world",
67         WS_OVERLAPPEDWINDOW | WS_VISIBLE,
68         0, 0,
69         640, 480,
70         NULL,
71         NULL,
72         hInstance,
73         NULL)))
74     {
75         return 0;
76     }
77
78     //消息循环
79     while (true)
80     {
81         if (PeekMessage(&msg, hWnd, 0, 0, PM_REMOVE))
82         {
83             if (msg.message == WM_QUIT)
84             {
85                 break;
86             }
87             TranslateMessage(&msg);
88             DispatchMessage(&msg);
89         }
90         GameMain();
91     }
92     return msg.wParam;
93 }
时间: 2024-10-10 07:05:18

windows编程:第一个windows程序的相关文章

Windows编程 - 开启/关闭/遍历程序的类 代码(C++)

开启/关闭/遍历程序的类 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 类包含4个函数, 启动程序, 遍历所有进程, 关闭程序, 遍历进程依赖的动态链接库. 示例: Image.exe是预先生成的可执行程序(exe), 启动程序, 间隔5秒, 关闭程序. 使用方法参加测试程序. 代码: /* * process.h * * Created on: 2014.06.08 * Author: Spike */ /*vs 2012*/ #ifnde

走进windows编程的世界-----windows进程

Windows进程  1 Windows进程    进程是一个容器,包含了一个应用程序实例的各种资源.Windows多任务的操作系统,因此可以同时执行多个进程.      2 Windows进程的一些特点    2.1 进程中包含了执行代码等资源.    2.2 进程都具有私有的地址空间.    2.3 每个进程都有一个ID,标识进程.    2.4 每个进程都有自己的安全属性    2.5 至少要包含一个可以执行的线程.    二 进程的环境 1 环境信息的获取    获取:    LPVOI

Java编程-第一个Java程序

Java编程用到的IDE是Eclipse. 关于第一个Java程序实现的简单流程: (1)    下载eclipse (2)    File-New-Java Project 命名工程名字:Hello 右击工程下的src文件,new-class 命名package.Name (3)    准备工作完成 (4)    编写代码如下: package Hello; public class Hello { public static void main(String[] args){ System.

走进windows编程的世界-----windows线程

一 线程局部存储 Thread Local Storage 1 由于多个线程使用同一个变量,各个线程    都对变量进行操作,那么变量的值会被不同    线程操作覆盖.               通常   变量A   <-- 线程A                     <-- 线程B                       TLS    变量A   <-- 线程A             变量A   <-- 线程B                2 TLS的使用    

有一定基础的 C++ 学习者该怎样学习 Windows 编程?

人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门不久的人来回答要好.就譬如最高票的那个回答,是一个非常精通 Windows 编程的高人回答的,但这种答案能给刚開始学习的人带来多少帮助,我这里想先打一个问号. 前段时间刚辅导了一个学生学会了 Win32 GUI 编程,刚好看到这个问题,顺手就邀请他回答了.并不是是给他布置总结作业,不过希望能从他这里

有一定基础的 C++ 学习者该如何学习 Windows 编程?

人的心理有个奇妙的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解很快就会忘得干干净净,似乎一切都是自然而然,本来就该这样的.因此,关于「如何入门」这类问题,找顶尖高手来回答,未必能比一个刚入门不久的人来回答要好.就譬如最高票的那个回答,是一个非常精通 Windows 编程的高人回答的,但这样的答案能给初学者带来多少帮助,我这里想先打一个问号. 前段时间刚辅导了一个学生学会了 Win32 GUI 编程,刚好看到这个问题,顺手就邀请他回答了.并非是给他布置总结作业,仅仅是希望能从他这里得到第

Delphi 之 第九课 Windows编程

Delphi 利用Object Pascal 和可视控件库(VCL)对底层的Windows API 进行了完美的封装,所以很少需要使用基础Pascal 语言来建立Windows应用程序,也无需直接调用Windows API 函数.尽管如此,如果遇到特殊情况,VCL 又不支持,Delphi程序员还得直接面对Windows编程.不过只有在极其特殊的情况下,例如:基于不寻常API 调用的Delphi新控件开发, 你才需要这样做,这里我不想讨论这方面内容,我只想让大家看一下与操作系统交互的几个Delph

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP

【windows核心编程】一个API拦截的例子

API拦截 修改PE文件导入段中的导入函数地址 为 新的函数地址 这涉及PE文件格式中的导入表和IAT,PE文件中每个隐式链接的DLL对应一个IMAGE_IMPORT_DESCRIPTOR描述符结构,而每个IMAGE_IMPORT_DESCRIPTOR结构中的FirstThunk指向一个IMAGE_THUNK_DATA结构数组的首地址. 在这个IAMGE_THUNK_DATA数组中,每一项对应一个该DLL模块的导入函数(对使用该DLL模块的PE文件来说是 导入).  结构大致如下 拦截某DLL模

Windows 编程,程序编译使用的命令行工具。

Windows 编程,程序编译使用的命令行工具. 1.cl.exe文件是Visual C\C++的编译器,它将程序源代码文件编译为obj文件. 2.rc.exe文件是资源编译器.工程项目中的.rc文件中包含了对程序中所使用资源(菜单.图标等)的描述.rc.exe将.rc格式的文件编译为.res文件,供链接器链接到可执行文件中. 3.link.exe是Windows平台的链接器,它将cl.exe编译生成的obj文件,资源编译器生成的.res文件,以及lib目录下的lib文件等链接成可执行的exe文