走进windows编程的世界-----入门篇
1 Windows编程基础
1.1Win32应用程序基本类型
1) 控制台程序
不须要完好的windows窗体,能够使用DOS窗体方式显示
2) Win32窗体程序
包括窗体的程序,能够通过窗体与程序进行交互
3) Win32库程序
提供已有的代码,供其它程序使用
动态库(DLL):是在运行的时候能够载入的。
静态库(LIB):是在编译链接是使用的程序。成为当前程序的一部分。
1.2头文件和库
1.2.1头文件
主要的头文件windows.h包括了windows经常使用的定义等,其它,还包括了一些其它的头文件。比方:
1、 windef.h: 定义个中数据类型
2、 winbase.h:定义了kernel的相关函数
3、 wingdi.h:定义了画图和文件
4、 winuser.h:窗体及空间
5、 winnt.h:提供了Unicode的支持
1.2.2库
1、Kernel32.lib :提供进程线程内存等等API函数定义
2、User32.lib :窗体及界面的API函数
3、Gdi32.lib :提供画图、文字等API函数支持
1.1.1实例helloworld
/*File : helloworld.cpp
*Auth : sjin
*Date : 20140519
*Mail : 413977243@qq.com
*/ #include <iostream>
#include <Windows.h> int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{ MessageBox(NULL,"hello world..","first win32 test",MB_OK);
return 0;
}
执行结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2ppbl8xMzE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
1.1编写第一个窗体程序
处理相关的流程例如以下:
1、窗体入口函数WinMain
2、窗体处理函数
3、注冊窗体类型
4、创建窗体
5、显示窗体
6、消息处理
7、程序退出
看以下的代码:
/*File : helloworld.cpp
*Auth : sjin
*Date : 20140519
*Mail : 413977243@qq.com
*/ #include <iostream>
#include <Windows.h> using namespace std; HINSTANCE g_hInst = NULL; //2窗体处理函数
/*函数功能:该函数是一个应用程序定义的函数。 它处理发送给窗体的消息
* 当窗体处理消息消息时,系统调用该函数
*參数:
*hwnd:指向窗体的句柄。 *uMsg:指定消息类型。 *wParam:指定其余的、消息特定的信息。该參数的内容与UMsg參数值有关。
*IParam:指定其余的、消息特定的信息。该參数的内容与uMsg參数值有关。 */
LRESULT CALLBACK WndProc(HWND hwnd,/**/
UINT nMsg,
WPARAM wParam,
LPARAM IParam)
{
switch( nMsg ){
case WM_DESTROY://窗体销毁的消息
//发送消息退出函数
PostQuitMessage(0);
return 0; default:
break; } //调用
return DefWindowProc(hwnd,nMsg,wParam,IParam);
} //3注冊窗体类型
/*
*
*/
BOOL MyRegister( LPSTR pszClassName)
{
WNDCLASS wc = {'\0'}; wc.style = CS_VREDRAW | CS_HREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = g_hInst;
wc.hIcon = LoadIcon(g_hInst,MAKEINTRESOURCE(100));;
wc.hCursor = NULL;
wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE);
wc.lpszMenuName = NULL;
wc.lpszClassName = pszClassName; ATOM natom = RegisterClass(&wc); if(0 == natom){
MessageBox(NULL,"Register Failed","Error!",MB_OK | MB_ICONWARNING);
}else{
//MessageBox(NULL,"Register Successed","Successed!",MB_OK);
} return TRUE;
} //4 窗体创建 HWND myCreateWindow(LPSTR pszClassName)
{
//创建窗体
HWND hwnd =CreateWindow(pszClassName,
"HelloWnd",
WS_OVERLAPPEDWINDOW,
100,
100,
300,
500,
NULL,
NULL,
g_hInst,
NULL); if(0 == hwnd){
MessageBox(NULL,"CreateWindow Failed","Error!",MB_OK | MB_ICONWARNING);
}else{
//MessageBox(NULL,"CreateWindow Successed","Successed!",MB_OK);
} return hwnd;
} //5 显示窗体
void Displaywnd(HWND hwnd)
{
//显示
ShowWindow(hwnd,SW_SHOW); //刷新
UpdateWindow(hwnd);
} //6 消息处理 void Message()
{
MSG msg = {'\0'};
//消息循环处理。获取消息
while(GetMessage(&msg,NULL,0,0)){
//派发消息
DispatchMessage(&msg);/*会运行窗体处理函数*/
} } //1、入口函数
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{ g_hInst = hInstance; //注冊窗体类型
MyRegister("my first win32");
//常见注冊类型的窗体
HWND hwnd = myCreateWindow("my first win32");
//显示窗体
Displaywnd(hwnd);
//消息处理
Message(); return 0;
}
资源文件
/*File : helloworld.rc
*Auth : sjin
*Date : 20140519
*Mail : 413977243@qq.com
*/ 100 ICON "2222.ico"
图片例如以下:
走进windows编程的世界-----入门篇的更多相关文章
- 走进windows编程的世界-----windows进程
Windows进程 1 Windows进程 进程是一个容器,包括了一个应用程序实例的各种资源.Windows多任务的操作系统,因此能够同一时候运行多个进程. 2 Windows进程的 ...
- 走进windows编程的世界-----消息处理函数(1)
Win32消息机制 过程驱动:程序是依照我们预先定义好的顺序运行.每运行一步,下一步都已经依照预定的顺序 继续运行,直至程序结束. 事件驱动:程序的运行顺序是无序的.某个时间点所运行的 ...
- 走进windows编程的世界-----消息处理函数(3)
二 定时器消息 1 定时器消息 WM_TIMER 依照定时器设置时间段,自己主动向窗体发送一个定时器消息WM_TIMER. 优先级比較低. 定时器精度比較低,毫秒级别.消息产生时间也精度比較低 ...
- 走进windows编程的世界-----画图相关
Windows画图 1 图形绘制 1.1 图形绘制的方式 获取到画图句柄-设备描写叙述表(DC),使用对应的画图的API,在设备上绘制图形. 1.2 颜色 ...
- 走进windows编程的世界-----消息处理函数(2)
一 WM_PAINT消息 1 WM_PAINT的产生 因为窗体的互相覆盖等,产生须要绘制的区域,那么会产生WM_PAINT消息. 普通情况下,不直接发送WM_PAINT消息,通过API声明须要 ...
- 走进windows编程的世界-----对话框、文本框、button
1 对话框的分类 2 对话框的基本使用方式 3 对话框资源 4 有模式对话框的使用 int DialogBox( HINSTANCE hInstance, LPCTSTR lpTemplate, ...
- 走进windows编程的世界-----窗体的注冊及创建
1 窗体注冊和创建 1.1WIN32 窗体程序创建步骤 1.WinMain入口函数的定义 2.WindowProc函数的定义 3.注冊窗体类 RegisterClass.RegisterClass ...
- [C#] 走进异步编程的世界 - 在 GUI 中执行异步操作
走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5877042.html 序 这是继<开始接 ...
- 走进异步编程的世界 - 在 GUI 中执行异步操作
转载:https://www.cnblogs.com/liqingwen/p/5877042.html 走进异步编程的世界 - 在 GUI 中执行异步操作 [博主]反骨仔 [原文地址]http://w ...
随机推荐
- 技术总结--android篇(一)--MVC模式
先介绍下MVC模式:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显 ...
- 关于ZipOupputStream添加压缩包常见问题
其实园子压缩解压缩的方法很多,ZipOupputStream这个类的说明很多,我这边也是从网上找的代码,但是我在压缩的时候遇到了常见的两个问题,第一个就是压缩的时候读取压缩包报该压缩包已经在另一个进程 ...
- Android 推断程序在手机中是否是活动状态或者正在执行状态
沈阳斌子在今天项目需求上碰到个这种问题,在Service中须要推断当前的程序是否是活动状态,换句话说也就是说后台跑的服务中有业务需求检測当前程序是否是该服务的程序 这样好让点击推送通知时跳转到不同的页 ...
- HDU 2181 DFS
Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每一个城市刚好一次后回到出发的城市. Input 前20行的第i行有3 ...
- C#创建PDF文档
说明:本实例用到了第三方组件ICSharpCode.SharpZipLib.dll.itextsharp.dll,该组件可到网上下载. 代码: using System; using System.C ...
- 解决Highcharts指针偏离的问题
Highcharts 在初始化3D柱状图 时 (注意:3D图形会发生偏移,2D显示正常) 如果加入 shared: true,属性,则可能会导致柱 状图 toolTip提示框偏移,解决方法是去掉或注释 ...
- Noip前紧急抢救
管他会不会,知道结论就好了 紧急抢救知识 斯特林数 第一类斯特林数 递推公式 \[ S[n][k]=(n-1)\times S[n-1][k]+S[n-1][k-1] \] 处理的问题是将n个数划分为 ...
- 手机、电脑、安卓、iOS、微信浏览器判断
微信浏览器判断: // true为微信浏览器function is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if ( ...
- 什么是 Dropout
为了应对神经网络很容易过拟合的问题,2014年 Hinton 提出了一个神器, **Dropout: A Simple Way to Prevent Neural Networks from Over ...
- vue 父子组件通信props/emit
props 1.父组件传递数据给子组件 父组件: <parent> <child :childMsg="msg"></child>//这里必须要 ...