走进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 ...
随机推荐
- VC6 编译和使用 STLPort
1.下载 STLport: http://www.stlport.org/ http://downloads.sourceforge.net/project/stlport/STLport/S ...
- 一个关于 UIPickerView 的 bug
首先,我下描写叙述一下bug的发生情况: 在使用UIPickerView实现选择城市的时候.出现这样一个Bug 1.在iOS 6的系统上 2.Picker的数据上省份一栏选择了"香港&quo ...
- oracle经常使用函数(2)
1.TRIM([ { { LEADING | TRAILING | BOTH }[ trim_character ]| trim_character} FROM ]trim_source) 函数 參数 ...
- 2016.03.02,英语,《Vocabulary Builder》Unit 03
ambi/amphi: 指on both sides或者around的意思,ambi-来自拉丁语,amphi-来自希腊语.ambidextrous:[ˌæmbi'dekstrəs] adj. 两手俱利 ...
- 0x21 剪枝
这一章真是心态崩,剪枝太玄学啦,特别是那个搜索顺序我靠真的... poj1011 枚举答案,搜索记录当前到第几根木棒. 剪枝:1.从大到小排序 2.排除等效,这个感觉还行,就是木棒按大小顺序进去,去除 ...
- 在centos上面开机自启动某个程序
Systemd 是 Linux 系统工具,用来启动守护进程,已成为大多数发行版的标准配置.可以通过 systemctl --version 命令来查看使用的版本 常用命令 # 立即启动一个服务 $ s ...
- Repeater 中 OnItemCommand 用法
<table> <asp:Repeater ID="rptList" runat="server"OnItemCommand="rp ...
- http接口服务方结合策略模式实现总结
在项目中,我们经常会使用到http+xml的接口,而且不仅仅的是一个,可能会有多个http的接口需要实时的交互.但是http接口的接收消息的公共部分是一样的,只有每个接口的报文解析和返回报文是不同的, ...
- Hacking PHP
0X01 SQL注入 这里主要是PHP的防范注入的几个配置,注入手法不再赘述 magic_quotes_gpc 对 $_GET $_POST $_COOKIE 变量中的 ' " \ 空字符( ...
- NSPort与NSRunloop的关系是流与消息调度的关系
NSPort与NSRunloop的关系是流与消息调度的关系. NSPort 将流插入到消息调度队列: 相当于 Socket将流插入到应用一样 - (void)launchThread { NSPort ...