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 ...
随机推荐
- 【原文】前端程序员必须知道的高性能Javascript知识
原文:前端程序员必须知道的高性能Javascript知识 想必大家都知道,JavaScrip是全栈开发语言,浏览器,手机,服务器端都可以看到JS的身影. 本文会分享一些高效的JavaScript的最佳 ...
- linux留下后门的技巧
在团队内部的wiki上已经写出 http://drops.wooyun.org/tips/1951 http://www.freebuf.com/sectool/10474.html 还有一种方法是写 ...
- [SAP ABAP开发技术总结]ALV
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- FLASH CC 2015 CANVAS 实际应用过程中遇到的【粉色】问题(不定期更新)
1,导入音乐导致发布卡死 一开始以为是不支持,FQ搜索了一些帖子,也有说不能再时间轴加音乐,需要用代码加入,想想不太可能啊,如果真的不能为什么IDE不禁用呢? 而实际问题是: 我使用的其中一条音效有问 ...
- 关于linux 卸载问题
网上找了一套引擎 非用protocbuff 2.4.1 结果机器上已经装好了2.6.1 网上找了好多办法都行不通 最后终于在一个群里问到 mark一下 例如 我想卸载当前得protoc 那么 第一步 ...
- MVC加载下拉列表
public ActionResult GetList() { string strSql = "select staff_id,nick_name from tbl_ac_info whe ...
- Scrum Meeting---Nine(2015-11-4)
今日已完成任务和明日要做的任务 姓名 今日已完成任务 今日时间 明日计划完成任务 估计用时 董元财 首页设计 3h 首页设计 3h 胡亚坤 好友聊天 2h 分类顶栏设计 2h 刘猛 好友搜索 2h 个 ...
- SAP接口编程 之 JCo3.0系列(05) : Exception Handling
JCO3.0的Exception,常用的Exception如下: JCoException 继承自java.lang.Exception,是JCo3中Exception的基类. JCoRuntimeE ...
- JavaScript 点击图片放大功能
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...
- JavaWeb学习总结(六)—HttpServletResponse
Response概述: response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse.在客户端发出每个请求时,服务 ...