MFC学习之窗口基础
WinMain函数
1、句柄(HANDLE):{
1. 定义:资源的标识
2. 句柄的作用: 操作系统通过句柄来找到对应的资源,从而对这些资源进行管理和操作。
3句柄的分类:(按资源){
1.图标句柄(HICON) ,
2.光标句柄(HCURSOR) ,
3. 窗口句柄(HWND) ,
4.应用程序实列句柄(HINSTANCE).
}
}
2、Windows应用程序,操作系统,计算机硬件之间的相互关系
Windows程序的入口函数:

窗口应用程序入口:
Int WINAPI WinMain(
HINSTANCE hinstance ; // 应用程序实列句柄
HINSTANCE hPrevInstance ; // 基本都设置为0
LPSTR ipCmdLine ; /commandLLine LPSTRLP(long point 长指针)
int nCmdSbow ; //显示状态
)
3、 窗口的创建:
大致来说,如果要创建一个完整的窗口需要经过下面四个操作步骤:{
(1)、设计一个窗口类;
(2)、 注册窗口类 ;
(3)、创建窗口;
(4)、显示及更新窗口。
}
#include<stdio.h>
#include<string.h>
#include<windows.h> /*声明winSunProc*/
LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter);
);
int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state);
)
{
WNDCLASS wndclass;
/*声明定义什么的*/
wndclass.cbClsExtra = NULL;
wndclass.cbWndExtra = NULL;
wndclass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hIcon = LoadIcon(NULL,IDI_ERROR);
wndclass.hInstance = hInstance;
wndclass.lpfnWndProc = WinSunProc ;
wndclass.lpszClassName = "Gxjun";
wndclass.lpszMenuName =NULL;
wndclass.style= CS_HREDRAW|CS_VREDRAW ;
RegisterClass(&wndclass); //注册窗口函数
HWND hwnd;
hwnd = CreateWindow("Gxjun","龚细军的第一个窗口程序",WS_OVERLAPPEDWINDOW,,,,,NULL,NULL,hInstance,NULL); /*创建窗口*/
ShowWindow(hwnd,SW_SHOWNORMAL); /*显示窗口*/
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,,))
{
TranslateMessage(&msg); /*该函数将虚拟键消息转换为字符消息*/ DispatchMessage(&msg); /*该函数分发一个消息给窗口程序。通常消息从GetMessage函数获得。
消息被分发到回调函数(过程函数),作用是消息传递给操作系统,
然后操作系统去调用我们的回调函数,也就是说我们在窗体的过程函
数中处理消息*/
} return ;
}
LRESULT CALLBACK WinSunProc( HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter);
)
{ switch(uMsg)
{
case WM_CHAR:
char str[];
sprintf(str,"char is %d",wParam);
MessageBox(hwnd,str,"Gxjun",);
break;
case WM_LBUTTONDOWN:
MessageBox(hwnd,"mouse clicked","Gxjun",);
HDC hdc;
/*PAINTSTRUCT ps;*/
hdc=GetDC(hwnd);
TextOut(hdc,,,"我是胡萝卜头,呼叫北极站",strlen("我是胡萝卜头,呼叫北极站"));
ReleaseDC(hwnd,hdc); /*函数释放设备上下文环境(DC)供其他应用程序使用。*/
break;
case WM_PAINT:
HDC hdc_1;
PAINTSTRUCT paints;
hdc_1 = BeginPaint(hwnd,&paints);
TextOut(hdc_1,,,"我是长城好哇",strlen("我是长城好哇"));
break;
case WM_CLOSE:
if(IDYES==MessageBox(hwnd,"哇哈哈,你丫的真的打算关掉吗?","卖萌之家",MB_YESNO)) {
DestroyWindow(hwnd);
}
break;
case WM_DESTROY:
PostQuitMessage();
break;
default:
return DefWindowProc(hwnd,uMsg,wParam, lParam);
}
return ;
}
效果图:

MFC学习之窗口基础的更多相关文章
- MFC学习 修改窗口样式
1. 在PreCreateWindow中可用CREATESTRUCT cs, cs.lpszName修改窗口标题, cs.lpszClass = AfxRegisterWndClass 修改图标与样式 ...
- 学习:简单使用MFC创建对话框窗口
MFC介绍:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows ...
- MFC学习笔记1---准备工作
什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...
- MFC 学习笔记
MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...
- 大数据学习之Linux基础01
大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...
- Python学习总结之一 -- 基础篇
Python学习第一篇 一:写在前面 啊,最近我的新博客一直都没有更新学习内容了,只是最近一直都在忙着寻找实习机会(或许这只是一个借口,真实原因是我太懒惰了,改改改!).终于今天又投递了几个新的实习职 ...
- Python学习day16-模块基础
<!doctype html>day16 - 博客 figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { ...
- 这几天开始,先学习一些 java 基础吧,学的有点累
这几天开始,先学习一些 java 基础吧,学的有点累
- MFC学习笔记
获取窗口句柄 FindWindow 根据窗口名获取 GetSafehWnd 取你程序所在窗口类的句柄 GetActiveWindow ...
随机推荐
- Lambda表达式之Python
一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: """命名的foo函数&q ...
- JS实现 键盘操作
JS实现 键盘操作: 详情可以去其逛网查看其API并下载,地址:http://craig.is/killing/mice <!DOCTYPE html PUBLIC "-//W3C// ...
- C#打印条码的几种方式
标题虽然是说C#,但是以下介绍的几种方法不是只能在C#中使用,在其它的语言里面也行. 总结一下常见的条码打印方法,其实打条码的方式很多,大概有以下几种: 1.斑马打印软件制作好模板,保存为.prn格式 ...
- zoj 1648 判断线段是否相交
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=648 Circuit Board Time Limit: 2 Second ...
- ASP.NET 2.0 异步页面原理浅析 [1]
与 ASP.NET 1.0 相比,ASP.NET 2.0 的各方面改进可以说是非常巨大的.但就其实现层面来说,最大的增强莫过于提供了对异步页面的支持.通过此机制,编写良好的页面可以将数据库.WebSe ...
- Jconsole 监控tomcat
通过jconsole监控可以获取监控tomcat的相关的数据信息 如何通过代码来获取其中的线程和内存状况呢? 首先要配置好jconsole监控的相关配置,一搜基本就是那一个, 配置配不好的话接下来的工 ...
- iOS - OC NSDictionary 字典
前言 @interface NSDictionary<__covariant KeyType, __covariant ObjectType> : NSObject <NSCopyi ...
- Jquery中css()方法获取边框长度
1. JQuery中可以使用css()方法获取块元素的边框宽度,如下: $("divMode").css("border-left-width");//左边框长 ...
- 文件MD5校验
1. 以前记得是在 msdn.itellyou.cn 上下载的 MD5 校验工具,应该是 IHasher,但是现在 msdn.itellyou.cn 上搜不到这个工具了... 2.
- Python学习笔记12—类
典型的类和调用方法: #!/usr/bin/env Python # coding=utf-8 __metaclass__ = type #新式类 class Person: #创建类 def __i ...