- 浏览: 701785 次
- 性别:
- 来自: 西安
-
文章分类
- 全部博客 (440)
- c++学习笔记 (89)
- 如何适应变化 (1)
- VC常见问题 (7)
- Brew开发12月9日至12月26日 (1)
- 软件架构 (3)
- 自己动手写C语言编译器之文档翻译工作 (1)
- 自己动手写C语言编译器 (6)
- 网站资源 (1)
- 郝彬英文教程 (1)
- 45度斜角地图 (0)
- 35.264等角视图 (0)
- 30等角视图 (1)
- 如何搞opengl (1)
- 卷积。 (1)
- Android解析日记 (5)
- Linux基础教学 (9)
- Android游戏框架 (9)
- Android游戏开发之OpenGL之坐标矩阵 (2)
- Android异常处理 (1)
- 资源网站 (1)
- ARM汇编学习 (1)
- game (0)
- 自己动手实现OpenGL(准备开始!后面有空补充) (3)
- 云计算 (1)
- Android面试题目 (17)
- 深度学习 (1)
- OpenGL实践 (1)
- 神经网络学习-翻译 (4)
最新评论
-
3482561:
Android 面试题目之 线程池 -
daojin:
直接布局。
安卓高手之路之图形系统(6)requestLayout的流程 -
hety163:
没明白楼主所说的最后两段。如果一个相对布局中有多个子view, ...
安卓高手之路之图形系统(6)requestLayout的流程 -
jackuhan:
100篇!!!膜拜
安卓高手之路之 图形系统之 图形框架(1) -
ritterliu:
不错,按照流程把关键代码都贴出来了。谢谢分享
Android输入输出系统之TouchEvent流程
//Map.cpp #include <StdAfx.h>terrain.cpp:
// terrain.cpp : Defines the entry point for the application. // #include "StdAfx.h" #include "Map.h" #include "Console.h" #include "IO.H" #include <sstream> #include <iostream> #include <stdio.h> static bool IsInit=true; std::wstring reader; using std::wstring; using std::wcout; using std::cout; using std::endl; HWND hWnd=NULL; // 保存 Windows 分配给程序的窗口句柄 HWND hWnd2=NULL; // 保存 Windows 分配给程序的窗口句柄 HWND hConsole; int Width=800; LRESULT WINAPI ght(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ); int Height=600; //声明消息处理函数 //创建对话框,显示系统消息: LPCTSTR title="游戏初始化中,请稍等"; void InitMessagePrint(LPCWSTR text); LRESULT WINAPI MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ); LRESULT WINAPI lpDialogFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ); //声明消息循环函数。 void GameLoop(); DWORD WINAPI ThreadFunc( LPVOID lpParam ) { int Width=200; int Height=200; bool fullScreen =TRUE; DWORD dwExStyle; // Window 扩展风格 DWORD dwStyle; // Window 窗口风格 RECT windowRect; // 窗口尺寸 int nX=0,nY=0; int wid=GetSystemMetrics(SM_CXSCREEN); // 获取当前屏幕宽 int hei=GetSystemMetrics(SM_CYSCREEN); // 获取当前屏幕高 nX=0;nY=0; // 计算窗口居中用 dwExStyle=WS_EX_WINDOWEDGE; // 使窗口具有3D外观 dwStyle=WS_BORDER|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX; //创建一个带边框和标题的窗口。 AdjustWindowRectEx(&windowRect,dwStyle,FALSE,dwExStyle); char cc1[]="terrainmessage"; //窗口类 WNDCLASSEX wc1 = { sizeof(WNDCLASSEX), //所有的窗口共用一个设备。 CS_CLASSDC, //消息循环函数 ght, //窗口类额外的存储空间 0L, //窗口实例额外的存储空间。 0L, //获得创建窗口的进程单元句柄(.EXE文件的文件句柄) GetModuleHandle(NULL), // NULL, NULL, NULL, NULL, cc1, NULL }; //注册窗口类 RegisterClassEx( &wc1 ); hWnd2 = CreateWindowEx(NULL,cc1,"我的第一个3D地形程序", dwStyle|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, nX, nY,Width, Height, NULL,NULL,NULL,NULL); // 创建窗口 // PostQuitMessage(0); //显示窗口 ShowWindow( hWnd2, SW_SHOWDEFAULT ); // 显示窗口 //更新窗口 UpdateWindow( hWnd2 ); //消息循环 //消息循环 //窗口2的消息循环。 GameLoop(); //UnregisterClass(cc1, // hInstance //); return 0; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { RedirectIOToConsole(); //得到控制台窗口的窗口句柄。 //hConsole=GetConsoleWindow(void); hConsole=FindWindow("ConsoleWindowClass",NULL); //HRGN hRgn=CreateRectRgn(0,0,500,500); //SetWindowRgn(h,hRgn,false); /*********************线程创建**********************/ DWORD dwThreadId, dwThrdParam = 1; HANDLE hThread; //创建线程ID,参数为dwThrdParam; hThread = CreateThread( NULL, // default security attributes 0, // use default stack size ThreadFunc, // thread function &dwThrdParam, // argument to thread function 0, // use default creation flags &dwThreadId); // returns the thread identifier if (hThread == NULL) { printf( "CreateThread failed (%d)\n", GetLastError() ); } else { CloseHandle( hThread ); } //检测窗口是否初始化完毕。 while(IsInit){ Sleep(1); } /************************我们的线程就在这里*********************************/ //The AdjustWindowRectEx function //calculates the required size of the window rectangle, //based on the desired size of the client rectangle. //The window rectangle can then be passed to the CreateWindowEx //function to create a window //whose client area is the desired size. //根据所要求的客户区大小,来创建窗口。 //是否全屏模式。 bool fullScreen =TRUE; DWORD dwExStyle; // Window 扩展风格 DWORD dwStyle; // Window 窗口风格 RECT windowRect; // 窗口尺寸 int nX=0,nY=0; int wid=GetSystemMetrics(SM_CXSCREEN); // 获取当前屏幕宽 int hei=GetSystemMetrics(SM_CYSCREEN); // 获取当前屏幕高 nX=(wid-Width)/2;nY=(hei-Height)/2; // 计算窗口居中用 dwExStyle=WS_EX_APPWINDOW|WS_EX_WINDOWEDGE; // 使窗口具有3D外观 dwStyle=WS_BORDER|WS_CAPTION|WS_SYSMENU|WS_MAXIMIZE|WS_MINIMIZEBOX|WS_MAXIMIZEBOX; //创建一个带边框和标题的窗口。 AdjustWindowRectEx(&windowRect,dwStyle,FALSE,dwExStyle); /* typedef struct { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; } WNDCLASSEX, *PWNDCLASSEX; */ //窗口类名 char cc[]="terrain"; //窗口类 InitMessagePrint(L"注册窗口类"); WNDCLASSEX wc = { sizeof(WNDCLASSEX), //所有的窗口共用一个设备。 CS_CLASSDC, //消息循环函数 MsgProc, //窗口类额外的存储空间 0L, //窗口实例额外的存储空间。 0L, //获得创建窗口的进程单元句柄(.EXE文件的文件句柄) GetModuleHandle(NULL), // NULL, NULL, NULL, NULL, cc, NULL }; RegisterClassEx( &wc ); /*****************************hWnd2用来显示初始消息**************************************/ InitMessagePrint(L"正在创建窗口"); /************************************************************/ hWnd = CreateWindowEx(NULL,cc,"我的第一个3D地形程序", dwStyle|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, nX, nY,Width, Height, NULL,NULL,hInstance,NULL); // 创建窗口 //显示窗口发送 ShowWindow( hWnd, SW_SHOWDEFAULT ); // 显示窗口 //更新窗口 PostThreadMessage(dwThreadId,WM_QUIT,0,0); UpdateWindow( hWnd ); InitMessagePrint(L"正在处理小数点"); //这个时候的消息循环再次发送至第一个窗口类的窗口函数,为什么。 GameLoop(); return; } void GameLoop() { static int i=0; //cout<<i++<<endl; MSG msg; BOOL fMessage; PeekMessage(&msg, NULL, 0U, 0U, PM_NOREMOVE); while(msg.message != WM_QUIT) // 消息循环 { fMessage = PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE); if(fMessage) //有消息 { TranslateMessage(&msg); //对DispatchMessage的深刻理解 //DispatchMessage将不同的消息发往不同的HWND标识的窗口处理函数。 //如果消息的HWND为NULL,那么将发送至所有的属于当前线程的函数。 DispatchMessage(&msg); } } //cout<<"消息循环结束!"<<endl; } LRESULT WINAPI MsgProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ){ RECT rect; static bool IsInit=true; switch(message) { case WM_PAINT: PAINTSTRUCT ps; HDC hdc= BeginPaint(hWnd,&ps); GetClientRect(hWnd,&rect); Rectangle(hdc,rect.left-1,rect.top-1,rect.right+1,rect.bottom+1); EndPaint(hWnd,&ps); break; } //cout<<"我的事情我做主!"<<endl; // wstring ws=wstring(L"ggggggggggg"); //MyWrite(ws); // InitMessagePrint(L"正在创建窗口"); int state; switch(state){ case START_STATE: break; case WORKING_STATE: break; case END_STATE: break; } if(IsInit==true) { //设置窗口前置。 IsInit=false; SetForegroundWindow( hWnd); } return (DefWindowProc(hWnd, message, wParam, lParam)); } LRESULT WINAPI lpDialogFunc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam ){ switch(message) { case WM_CLOSE: // 关闭窗口 //m_OpenGL->CleanUp(); // 结束处理 PostQuitMessage(0); return 0; } } void InitMessagePrint(LPCWSTR text) { wstring ws=wstring(text); MyWrite(ws); RECT rect; GetClientRect(hWnd2,&rect); InvalidateRect(hWnd2,&rect,true); //这四个参数分别对应MSG结构体中的4个参数。 //也对应于消息处理函数中的四个参数。 } //消息窗口 LRESULT WINAPI ght(HWND hWnd2,UINT message,WPARAM wParam,LPARAM lParam ){ //cout<<"是系统消息么"<<endl; HDC hdc; HBRUSH hBr; RECT rect; switch(message){ case WM_CLOSE: DestroyWindow(hWnd2); // 关闭窗口 //m_OpenGL->CleanUp(); // 结束处理 PostQuitMessage(0); return 0; case WM_PAINT: // ReleaseDC(hWnd2, hdc); // LPSTR k[10]="123456789"; /* char wsz[5] = "aadf"; char the[5]; //char thechar[10]=(char *)wsz; io.write(wsz,5); io.read(the,5); for(int i=0;i<5;i++) { cout<<"daaaaaaaaa"<<the[i]<<"ddddddd"<<endl; } //把单字节转化为多字节: //wchar_t the23[5] =L"1231"; TextOutA(hdc,0,0,(const char *)the,100); */ //ostream& MyWrite(string s); // Paint into this DC //得到客户区坐标 hdc = GetDCEx(hWnd2, (HRGN)1, DCX_INTERSECTRGN); GetClientRect(hWnd2,&rect); Rectangle(hdc,rect.left-1,rect.top-1,rect.right+1,rect.bottom+1); const wchar_t *pchar; // wcout<<L"reader"<<endl; while(MyRead(reader)){ //wcout<<reader; pchar=reader.c_str(); TextOutW(hdc,0,0,pchar,reader.length()); } ReleaseDC(hWnd2,hdc); if(IsInit==true)IsInit=false; break; } return DefWindowProc(hWnd2, message, wParam, lParam); } /* // 注册窗口类 bool fullScreen =TRUE; DWORD dwExStyle; // Window 扩展风格 DWORD dwStyle; // Window 窗口风格 RECT windowRect; // 窗口尺寸 int nX=0,nY=0; dwExStyle=WS_EX_APPWINDOW|WS_EX_WINDOWEDGE; // 使窗口具有3D外观 dwStyle=WS_OVERLAPPEDWINDOW; // 使用标准窗口 //WS_OVERLAPPEDWINDOW是有标题栏,窗口菜单,最大、小化按钮和可调整尺寸的窗口 int wid=GetSystemMetrics(SM_CXSCREEN); // 获取当前屏幕宽 int hei=GetSystemMetrics(SM_CYSCREEN); // 获取当前屏幕高 nX=(wid-Width)/2;nY=(hei-Height)/2; // 计算窗口居中用 //------------------------------------------------------------------- AdjustWindowRectEx(&windowRect,dwStyle,FALSE,dwExStyle); //根据窗口风格来调整窗口尺寸达到要求的大小 char cc[]="tml"; WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L, GetModuleHandle(NULL), NULL, NULL, NULL, NULL, cc, NULL }; RegisterClassEx( &wc ); m_OpenGL=new OpenGL();// hWnd = CreateWindowEx(NULL,cc,"我的第一个3D地形器", dwStyle|WS_CLIPCHILDREN|WS_CLIPSIBLINGS, nX, nY,Width, Height, NULL,NULL,hInst,NULL); // 创建窗口 ShowWindow( hWnd, SW_SHOWDEFAULT ); // 显示窗口 UpdateWindow( hWnd ); // 刷新窗口 GameLoop(); // 进入消息循环 return 0; */
Console.cpp:
//说明:此函数用来在MFC或者WindowsAPP中进行标准输入。 #include < process.h> #include "stdafx.h" #include <errno.h> #include <stdio.h> #include <fcntl.h> #include <io.h> #include <iostream.h> #include <fstream.h> #include "Console.h" #define MAX_CONSOLE_LINES 10; HANDLE g_hConsoleOut; // Handle to debug console // This function dynamically creates a //"Console" window and points stdout and stderr to it. // It also hooks stdin to the window // You must free it later with FreeConsole void RedirectIOToConsole() { int hConHandle; long lStdHandle; CONSOLE_SCREEN_BUFFER_INFO coninfo; FILE *fp; // allocate a console for this app AllocConsole(); // set the screen buffer to be big enough to let us scroll text GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo); coninfo.dwSize.Y = MAX_CONSOLE_LINES; // How many lines do you want to have in the console buffer SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE),coninfo.dwSize); // redirect unbuffered STDOUT to the console g_hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen( hConHandle, "w" ); *stdout = *fp; setvbuf( stdout, NULL, _IONBF, 0 ); // redirect unbuffered STDIN to the console lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE); hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); fp = _fdopen( hConHandle, "r" ); *stdin = *fp; setvbuf( stdin, NULL, _IONBF, 0 ); // redirect unbuffered STDERR to the console lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE); //把系统的文件句柄转化为c运行库的文件指针 hConHandle = _open_osfhandle(lStdHandle, _O_TEXT); //用write 方法打开文件流 fp = _fdopen( hConHandle, "w" ); //将stderr指向这个文件流。 *stderr = *fp; //第二个参数为NULL,表明没有缓冲区和流相关联。 setvbuf( stderr, NULL, _IONBF, 0 ); SetConsoleTitle("The Console Titlebar Text"); // make cout, wcout, cin, wcin, wcerr, cerr, wclog and clog // point to console as well Uncomment the next line if you are using c++ cio or comment if you don't ios::sync_with_stdio(); }
IO.cpp:
#include "StdAfx.h" #include "IO.H" #include <locale> using std::wstringstream; wstringstream *pBuffer=new wstringstream(); bool MyWrite(std::wstring s) { static bool InitLocal=true; if(InitLocal){ std::locale loc("chs"); pBuffer->imbue(loc); InitLocal=false; } pBuffer->clear(); if((*pBuffer)<<s) { pBuffer->put(L'\n'); return true; } return false; } bool MyRead(std::wstring& s) { if(NULL!=pBuffer) { wchar_t name[256]; pBuffer->clear(); pBuffer->getline(name,256); s=std::wstring(name); // pBuffer->ignore(); if(s.length()>0) { return true; } } return false; }
// stdafx.cpp : source file that includes just the standard includes // terrain.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information #include "stdafx.h" // TODO: reference any additional headers you need in STDAFX.H // and not in this file
Map.h
//常量表示程序的各种状态 //要想使用const必须把头文件包含进去。 //定义全局的cons会造成意想不到的错误。因为重复定义!! const int START_STATE=0; const int END_STATE=1; const int WORKING_STATE=2;
Console.h
#include <stdio.h> #include <fcntl.h> #include <io.h> void RedirectIOToConsole();
//IO.H #ifndef IO_H #define IO_H #include <string> #include <sstream> extern bool MyWrite(std::wstring s); extern bool MyRead(std::wstring& s); #endif
//Map.H //常量表示程序的各种状态 //要想使用const必须把头文件包含进去。 //定义全局的cons会造成意想不到的错误。因为重复定义!! const int START_STATE=0; const int END_STATE=1; const int WORKING_STATE=2;
// stdafx.h : include file for standard system include files, // or project specific include files that are used frequently, but // are changed infrequently // #if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_) #define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers #include <windows.h> // TODO: reference additional headers your program requires here //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
相关推荐
"一个特殊的UI,多子框架窗口"这个标题暗示了我们需要讨论的是一个具有复杂结构或者独特功能的用户界面,它可能包含多个嵌套的窗口或框架,以提供更丰富、更分层的操作环境。 UI设计的目标是创造直观、美观且高效的...
最成熟的Vue ssr框架,一个命令就能启动和部署。零侵入开发,跟开发vue纯客户端一模一样。
【标题解析】:“安卓游戏—翻窗口源码”这一标题表明了我们讨论的主题是关于一个Android平台的游戏应用程序,而且特别提到了“翻窗口”可能是游戏的核心玩法或特色功能。源码意味着我们将研究的是游戏的编程代码,...
本资源提供的是一个已经搭建好的Activity框架,它包含了完整的SSM配置,业务逻辑代码也已抽离,可以直接运行并进行二次开发。 首先,我们来详细了解一下SSM框架的组成部分: 1. Spring:这是一个全面的Java应用...
基于LabVIEW搭配 NI Vision...7、最最最重要的:每个相机视觉流程不需要编程、不需要编程、不需要编程,直接根据封装好的工具进行拖拉配置即可完成一个视觉 ………………功能更多多 不在这一一列举 你们想要的功能都有
这是我学习中搭好的框架,有两种:一个是用的SSH,一个是用的JPA+Struts2+Spring,扩展性强,有基础接口,封装了CRUD,下载引入工程即可使用,能用,已经测试了,如果谁有更好的方案,希望可以学习一下!!
3. **MyBatis框架**:MyBatis是一个持久层框架,它允许开发者编写SQL语句并与Java代码直接交互。MyBatis与Spring结合使用时,可以实现DAO层的事务管理,提高数据访问的灵活性。在MyBatis的配置文件中,我们需要配置...
【Jfina 自搭框架】是一个基于Java的轻量级开发框架,它的设计目标是简化开发流程,提高开发效率。Jfinal 是一个MVC(Model-View-Controller)架构的实现,它借鉴了Ruby on Rails的许多设计理念,使得Java开发者也能...
SSH框架是Java开发中常用的三大框架,分别是Struts、Spring和Hibernate。它们分别负责Web层、业务层和服务层的管理,极大地提高了开发效率和...实践中不断调试和优化,将有助于你更好地掌握SSH框架的使用和背后的原理。
接着,我们需要在PB应用中创建一个新的主窗口(w_main),并在窗口中添加OLE控制按钮。在插入对象对话框中选择“Insert Control”,在控制类型列表中找到“Window Show Control”,然后点击“OK”。这样,OLE控件就...
- MDI(Multi-Document Interface)允许在一个主窗口内打开多个子窗口,通常用于编辑器或IDE等应用,但并不符合QQ的窗口独立需求。 - SDI(Single-Document Interface)每个窗口代表一个单独的任务或文档,更符合...
搭建这样一个框架可以帮助开发者更好地理解和掌握这些技术,同时提高开发效率。下面将详细阐述这三个框架的主要功能和集成方式。 **Struts2.1.6** Struts2 是一款基于MVC(Model-View-Controller)设计模式的开源...
在IT行业中,窗口句柄(Window Handle)是一个重要的概念,特别是在Windows编程中。窗口句柄是Windows操作系统为每个窗口分配的一个唯一标识符,用于区分不同的窗口。开发者可以通过这个句柄来操作特定的窗口,例如...
在这个最新的“最新版本ssh搭好的框架模板”中,我们将会探讨Spring 3、Hibernate 4和Struts2的核心功能和它们如何协同工作。 **Spring框架** Spring是一个全方位的轻量级应用框架,它提供了依赖注入(DI)和面向切...
包含SSM的环境配置和里面的增删查改功能,还有JFreeChart的柱状图,饼状图和折线图的实现。JFreeChart已经改成SSM的形式,实现了controller,service的分层,还把复杂的字体设置代码提取到了utils里面,使得...
在本项目中,"易语言仿QQ窗口"是指利用易语言编写的一个应用程序,该程序模仿了腾讯QQ的用户界面和某些功能。下面将详细讨论相关知识点。 1. **易语言**:易语言是一种具有图形化编程界面的编程工具,它使用汉字...
标题中的“口袋妖怪RMXP用窗口皮肤”表明这是一个关于使用角色扮演游戏制作大师(RPG Maker XP,简称RMXP)制作的口袋妖怪同人游戏的资源分享。RMXP是一款流行的、专为非专业开发者设计的游戏开发工具,允许用户通过...
望愿意开发框架的爱好都能加入群:41229007 零配置Struts框架 action拦截器 自定义ModelAndView 框架开发 提供了参考手册,LMVCDemo project.上手非常快 http://download.csdn.net/source/1373612 源程序
"MatchingGame"数字搭配游戏通常涉及到匹配两个或多个相同元素的目标,这需要我们构建一个游戏逻辑系统。在C#中,我们可以创建类来代表游戏中的元素,如数字卡片,包含其值和状态(是否被选中)。通过事件驱动编程,...
Struts是一个开源的MVC框架,负责处理用户请求并展示视图。它通过Action类来控制业务流程,使用ActionForm对象传递请求参数,同时提供了一套强大的标签库简化JSP页面的编写。在SSH集成中,Struts主要作为前端控制器...