注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

刘邓

每天收获一点点-目标:富足

 
 
 

日志

 
 

Win32编程开端  

2012-03-04 23:26:42|  分类: 技术类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天算是对Win32编程开了个头。以下为今日收获:
1.MFC是Win32API的再封装,我们用Windows可以实现的诸多功能不是理所当然的,后台都需要有很多的初始化,还有信息的传递啥的,非常复杂。
2.句柄的概念
3.Windows事件,消息传递,初始化,错误处理。
下面是Win32开发程序框架的面向对象封装主要有2个类,一个主函数
其中cWindow为窗口类,cApplication为具体应用类,WinMain为主函数(由于即将熄灯,具体功能和备注明天上)

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd )
{
cAppliaction *pApp;
g_hInstance = hInstance;
try
{
pApp = CreatApplication();
pApp->ParseCmdLine(lpCmdLine);
pApp->Init();
pApp->SceneInit();
pApp->Run();
}
catch (cGameError& err)
{
if (Graphics())
{
Graphics()->DestroyAcceleratorTable();
}
MessageBox(
NULL,
err.GetText(),
"Error!",
MB_OK|MB_ICONEXCLAMATION
);
//clean everything up
delete pApp;
return 0;

}
delete pApp;
return 0;
}


class cWindow
{
protected:

int m_width,m_height;
HWND m_hWnd;
std::string m_name;
bool m_bActive;
static cWindow *m_pGlobalWindow;
public:

cWindow(int width,int height,const char *name = "Default Window name");
~cWindow();

virtual LRESULT WNDPROC(HWND hWnd,UINT uMsg,WPARAM wparm,LPARAM lParam);
virtual void RegisterClass(WNDCLASSA *pWc = NULL);
virtual void InitInstance();

HWND GetHWnd();
bool isActive();
bool HasMessages();
eResult Punm();

static cWindow *GetMainWindow();

};
inline cWindow *MainWinwow();

class cAppliaction
{
protected:

string m_title;
int m_width;
int m_height;

bool m_bActive;
static cAppliaction *m_pGlobalApp;

virtual void InitPrimaryWindow();
virtual void InitGraphics();
virtual void InitInput();
virtual void InitSound();
virtual void InitExtraSubsystems();

public:

cAppliaction();
virtual ~cAppliaction();
virtual void Init();
virtual void Run();
virtual void DoFrame(float timeDelta);
virtual void DoIdleFrame(float timeDelta);
virtual void ParseCmdLine(char *cmdLine);

virtual void SceneInit();
virtual void SceneEnd();

void Pause();
void UnPause();

static cAppliaction *GetApplication();
static void KillApplication();

};
inline cAppliaction *Application();
HINSTANCE AppInstance();
cAppliaction *CreatApplication();


  评论这张
 
阅读(78)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017