在写win32程序时,若每次都从头开始写代码,真的太累了,用MFC框架比较容易,可它是怎么实现的却不知道,有些书中有介绍,看起来好复杂,如果能有自己的框架就好了,就像java,那样的话就能少记些API了,还是比较像java那样把所有代码都写到类里,最近在学游戏编程,如果每天写点这样的代码,说不定就出来个小型的游戏引擎呢
#ifndef _APPLICATION_ #define _APPLICATION_ #include "windows.h" class CApplication { protected: HWND hwnd;//窗口句柄 WNDCLASS wnd;//窗口类 DWORD style;//窗口风格 HICON hIcon;//窗口图标 HMENU hMenu;//窗口菜单 HCURSOR hCursor;//窗口光标 int m_fullScreen;//是否是全屏 int width;//窗口宽 int height; int locX;//窗口位置X int locY; BOOL bActive;//窗口激活状态 char* title; DWORD backGroundColor;//背景颜色 public: CApplication(); void SetTitle(char* t); HWND CreateWin(HINSTANCE hInstance,char* winName,WNDPROC winProc);//创建窗口 void SetStyle(DWORD s); void SetIcon(HICON hicon);//未实现 void SetCursor(HCURSOR hcursor); void SetMenu(HMENU hmenu); void SetFullScreen(BOOL b); void SetBound(int x,int y,int width,int height); void SetSize(int width,int height);//设置窗口大小 void SetBackGroudColor(DWORD bgc);//设置前景颜色 void ShowWindow();//显示窗口 int RunDefault();//主窗口消息循环 virtual ~CApplication(); }; #endif
实现:
#include "Application.h" CApplication::CApplication() { title="程序"; backGroundColor=BLACK_BRUSH; hCursor=::LoadCursor(0,IDC_ARROW); hIcon=::LoadIcon(0,IDI_APPLICATION); style=WS_OVERLAPPEDWINDOW; locX=0; locY=0; width=800; height=600; } CApplication::~CApplication(){} HWND CApplication::CreateWin(HINSTANCE hInstance,char* winName,WNDPROC winProc) { wnd.lpszClassName=winName; wnd.hInstance=hInstance; wnd.cbClsExtra=0; wnd.cbWndExtra=0; wnd.hbrBackground=(HBRUSH)GetStockObject(backGroundColor); wnd.hCursor=hCursor; wnd.hIcon=hIcon; wnd.lpfnWndProc=winProc; wnd.lpszMenuName=0; wnd.style=CS_VREDRAW|CS_HREDRAW; if(!::RegisterClass(&wnd)){ MessageBox(0,"注册窗口出错!","error",0); return 0; } hwnd=::CreateWindow( winName, title, style, locX, locY, width, height, 0, 0, hInstance, 0); return hwnd; } void CApplication:: SetStyle(DWORD s) { } void CApplication:: SetIcon(HICON hicon) {} void CApplication:: SetCursor(HCURSOR hcursor) {} void CApplication:: SetMenu(HMENU hmenu) {} void CApplication:: SetFullScreen(BOOL b) {} void CApplication:: SetBound(int x,int y,int width,int height) {} void CApplication:: SetSize(int width,int height) {} void CApplication::SetTitle(char* t) { title=t; } void CApplication:: SetBackGroudColor(DWORD bgc) { backGroundColor=bgc; } void CApplication::ShowWindow() { if(!hwnd) { MessageBox(0,"没有窗口要显示!","error",0); return; } ::ShowWindow(hwnd,SW_SHOW); } int CApplication::RunDefault() { MSG msg; while(::GetMessage(&msg,0,0,0)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } return (int)msg.wParam; }
用例:
#include "windows.h" #include "Application.h" //回调函数,处理消息 LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ) { switch(uMsg) { case WM_DESTROY: ::PostQuitMessage(0); break; default: return ::DefWindowProc(hwnd,uMsg,wParam,lParam); } return 0; } int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command line int nCmdShow // show state ) { CApplication a; a.CreateWin(hInstance,"sdfsdf",WindowProc);//创建窗口 a.ShowWindow();//显示 a.RunDefault();//消息循环 return 0; }
发表评论
-
游戏工作资料
2014-02-17 10:34 0c -
游戏 压力测试工具
2014-02-14 18:16 0公司让我为游戏做个 压力测试工具 ... -
java游戏 地图编辑器
2014-01-08 15:52 0无聊之余,做了个地图编辑器,根据一张地图图片,生成它的 ... -
java游戏小框架学习笔记
2014-01-08 10:45 01.AVGScript类中怎么触发 ... -
游戏编程中的寻路算法
2013-12-26 17:40 0在游戏关卡中常常会放置一些怪物(即NPC),这些怪物通常在一 ... -
UDK自定义角色(二)
2013-03-11 15:31 0对比UTFamilyInfo_Liandri_Male.u ... -
在udk中整合动画组的两种方式
2013-03-11 12:35 01.使用udk原始psk文件格式 前提,udk的坐标轴要 ... -
在udk中测试动画
2013-03-11 10:42 0在内容浏览器中选中animSet 在地图 ... -
udk开发工具
2013-01-29 11:13 0notepad++插件 UnrealScript.xml ... -
第14节 udk学习之坦克前进声音与背景音乐
2013-01-15 15:50 0在udk中建立cue资源,导入wav声音,再到代码中修改 ... -
java俄罗斯方块
2013-01-02 11:50 861做个俄罗斯方块游戏 packag ... -
udk学习之武器准心
2012-12-05 12:16 0给武器瞄准点加上准心,如图 准心资源 ... -
udk相关软件、插件下载
2012-11-26 09:32 0photoshop的dds插件:http://dl.ite ... -
第13节 UDK载具之炮弹
2012-11-16 21:54 0继承UTProjectile类 class Tan ... -
第12节 UDK学习 载具之炮筒(2)
2012-11-13 18:05 0这节学习炮塔随像机的转动而转动。 首先要取得像机的角度 ... -
第12节 UDK载具之炮筒
2012-11-11 11:41 0这节学习如何给车装上武器(已经提供了武器模型) 1.添加放 ... -
第11节 UDK学习之第三人称视角
2012-11-10 23:33 0这节做一个第三人称视角,鼠标左右前后移动与第一人称无差别,通 ... -
第10节 udk学习之自定义载具(2)
2012-11-10 21:23 01.骨骼风格物体与动画 ... -
第九节 UDK学习之自定义角色之 (三)
2012-10-17 16:30 0高手都盾世了吗,udk社区太不厚道了,看篇文章要钱,下个资源要 ... -
第八节 udk学习之自定义角色 二
2012-10-14 18:49 0首先墨迹一下: 要 ...
相关推荐
在学习了windows后继续MFC的学习,有必要知道win32程序是如何封装成MFC的,本程序对一个简单的win32程序实现封装,最终类似于MFC形式
用C语言做Win32程序
最近在研究win32的C++封装,MFC和WTL固然好用,但定制起来就不那么好定制了,为了自由操作,自己尝试写一些基础代码,当然,这也源于对mfc和WTL的借鉴,这是第一版,封装了普通类,以后再使用模板,慢慢完善
托盘程序大部分是用MFC 写的,本人不喜欢用哪个,所以api 结合前人的经验做了一个,希望对大家有帮助。 环境VS2005
本文实例为大家分享了python程序封装为win32服务的具体代码,供大家参考,具体内容如下 # encoding=utf-8 import os import sys import winerror import win32serviceutil import win32service import win32event ...
自己封装的一个 WIN32 SDK程序的小型应用程序框架,通过C++的封装性,继承性,多态性,将重复繁琐的SDK程序代码变得面向对象,简单,明了,清晰,SDK程序朋友的福音,也是学习C++基础只是的必备良品,觉得值得下载。...
Windows 7和Vista及XP封装差不多,Windows 7也是调用sysprep.exe,不同的是应答文件在封装前就录入,不会在系统部署的时候在读取sysprep.ini这个文件了。 一、把下载好的镜像刻录成DVD,系统安装就不说了,很简单 ...
十分方便的封装软件,很容易上手,简单设置即可,外加一些外置程序即可
MFC并没有象Delphi的VCL类库,VB的控件库一样封装得让人几乎完全不用知道还有Win32API函数及其操作原理,所以要想利用VC6的MFC编程,我认为就一定要先学习如何直接用Win32API函数来编程。对API编程中的一些关键的...
Win32 API是微软的操作系统Windows提供给开发人员的编程接口,它决定了我们开发的Windows应用程序的能力。MFC是微软为开发人员提供的类库,在某种意义上是对Win32 API的封装。本文试图从全局角度对Win32 API和MFC...
官网下载超慢的,还是**网盘,这个是用wepe32位工具正常封装的Windows 10 PE,完全没有任何病毒,也没有修改,里面壁纸是自带的,包含Max Dos,没有密码。 官方解释: 微PE工具箱生成ISO镜像后也不会产生过多的文件...
在C#程序设计中使用Win32类库
系统封装程序,使用于win 2003以下的版本
本人根据教程编写的Win32项目模板,把winproc函数分解成多个函数,使用消息映射的方法来处理消息(具体操作请模仿我的代码)。 把WM_PAINT中使用的HDC句柄封装到CHDC类中,可以用这个类来完成画线,设置半透明等...
python在wIn10下pyinstaller打包后运行正常,但是在win7 x64下运行则报错,提示 计算机丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法
编程环境: 操作系统:Windows XP SP2 开发语言:C++ 编译环境:MS Visual C++6.0...两个程序均为控制台程序。 ipv6pkt程序的命令格式为:ipv6pkt tcpdata ipv6data ipv6tcp程序的命令格式为:ipv6tcp rawdata ipv6data
它不仅是汇编程序员的手册,也对那些想要了解WINDOWS操作系统底层东西的人非常有用,因为它里面除了讲汇编的语法外,主要是讲用汇编怎样实现各功能,由于汇编是没有被封装的语言所以给我们提供了了解系统底层的机会非常...
本例演示了如何在纯Win32 SDK程序里面使用Flash控件并播放一个swf影片。代码适合初学者使用,可以自己封装成一个类以便来日的使用。
本程序是一个简单的画图程序,代码中演示了如何只利用Win32 sdk完成一个画图的程序。本程序没有太多的技术框架,纯粹是Windows编程技术的探究,有兴趣的朋友可以下载看看。