静态切分窗口问题_百度知道单文档静态切分窗口-c/c++-电脑编程网单文档静态切分窗口作者:佚名 和相关&&
具体实现工程,看资源重心的,CSidStaticSplit工程
在做整个工程该注意的问题:
五角星以及文本显示的两个部分的实现是通过cview类的OnDraw函数英文实现的部分是在文本视图中完成的,所以变量的添加跟初始化都在文本文档中实现,即doc文档中要通过窗口进行显示,则需要在框架结构函数来实现通过添加OnCreatClient()来实现窗体飞切分,切分部分是具体实现都在对应的类的view文件实现BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: Add your specialized code here and/or call the base class BOOL ret=m_wndSplitter.CreateStatic(this,1,2); ret|=m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(GraphView),CSize(250,250),pContext); ret|=m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CtextView),CSize(250,250),pContext); } m_wndSplitter为CSplitterWnd类型的变量以及在实现过程中头文件的引用。
相关资料:|||||||单文档静态切分窗口来源网络,如有侵权请告知,即处理!编程Tags: & GLUI窗口模板_OpenGL_多媒体_或代码
| 文章 >> 多媒体 >> OpenGL
GLUI窗口模板
{A}目录{A18}{A19}{A20}{A21}{A22}{A23}{A24}{A25}{A27}{A28}{A29}{A30}{A31}{A32}本文详细介绍了如何创建它里面的一些基本控制你的第一个GLUI窗口,并为您提供与你的OpenGL应用程序的模板。这篇文章可以在以下方面:了解如何添加GUI组件到您的OpenGL应用程序通过一个非常直接的和简单的方式:文档显示的每一个事件是如何处理用户分为过剩和GLUI事件这些事件的互动节目。
整洁和注释的代码,反映了简单的GLUI库了解创建专门用于图形操纵,在GLUI库的一些全新的控制,如旋转和平移控制。使用你的OpenGL应用程序的模板中的代码。确保你读的先决条件{A33}文章本文。一个重要的事情要注意的是,GLUI是一个C库,这意味着你的代码必须写在cpp扩展名,而不是C,否则链接器会抱怨的文件。{A34} GLUI是一个C的GUI库,完全建立在GLUT顶部,提供OpenGL应用程序的GUI控件,如按钮,复选框,单选按钮,标签,面板,文本字段和纺纱。它是独立于窗口系统,靠上的GLUT处理所有系统相关的问题,如窗口,键盘,操纵杆和鼠标管理,。 GLUI API非常简单,使我们能够创造新的GLUI窗口和内部控制一个单一的代码行添加。添加到它的简单,GLUI自动位置和大小的控制,当他们的窗口上放置。{A35}下面是一个例子GLUI {A36}的窗口,呈现出不同的控制。这个窗口是完全呈现在OpenGL。因此,它看起来对电脑,苹果电脑,韶钢松山,和其他UNIX系统一样,使用任何SGI公司的OpenGL,微软,或Mesa的实施。除了上述的控制,GLUI已经看到一些额外的控制后,其新的2.35版本发布于2006年7月。下面可以看到新的滚动条,文本区域,文件浏览器,树,树面板,并列出。{S2}{A37}当OpenGL应用程序变得越来越复杂,我们需要的东西超过一个GLUT鼠标,键盘,和/或弹出菜单与我们的OpenGL窗口绘制的对象进行交互。 GLUI给我们更多的灵活性,使我们能够与我们的OpenGL对象,如按钮,复选框,单选按钮,纺纱机,列表框,列表,树,文件浏览器,文本字段,文本区域,添加GUI组件进行交互,并特别控制:旋转和平移。为了避免写相同的代码,每次你要创建一个OpenGL GUI组件的图形应用程序,这个程序代码可以用作模板,让你直接开始。{A38}{A39}为了运行程序,三个动态链接库(DLL)要求:opengl32.dll,glu32.dll,glut32.dll。 opengl32.dll和glu32.dll已经来到您的Windows操作系统和系统文件夹中找到。运行可执行文件,你必须下载glut32.dll它复制到系统文件夹。你可以找到在Visual C:\ DLL中的所有DLL文件所附的zip文件{A40}。{A41}为了写一个C的OpenGL GLUI应用程序,在Windows平台上使用Microsoft Visual Studio中,您需要下列文件:头文件:GL.h,GLU.h,GLUT.h和GLUI.hlib文件:opengl32.lib,glu32.lib,glut32.lib和glui32.lib你可以找到所有的头文件和lib文件下的Visual C \ \ GL和Visual C \ LIB分别在所附的zip文件{A40}。{A43}一个Visual C + + 6.0环境下使用的代码,请执行以下步骤:打开Microsoft Visual C + + 6.0创建一个新的Win32控制台应用程序项目
{S3}复制的源文件到项目文件夹(在本例GLUI_Window_Template_src)GLUI_Window_Template.cpp。您可能要重命名的文件名,以适合你的程序的需求。添加源文件使用菜单选项项目的项目\添加到项目的\ Files。
{S4}确保头文件,包括文件夹,lib文件在lib文件夹和DLL系统文件夹中。
文件说明源文件夹(附后)目标文件夹GL.H,GLU.H,GLUT.H,GLUI.H头文件的Visual C /包括/ GLC:\ PROGRAM FILES \的Microsoft Visual Studio \ VC98 \ \ GLOPENGL32.LIB,GLU32.LIB,GLUT32.LIB,GLUI32.LIBlib文件的Visual C / lib目录C:\ PROGRAM FILES \的Microsoft Visual Studio \ VC98 \ LIBOPENGL32.DLL,GLU32.DLL,GLUT32.DLLDLL文件的Visual C / DLLC:\ WINDOWS \ SYSTEM32链接代码库。正确的顺序在其中添加库:GLUI过剩,GLU,OpenGL的
{五}为了避免设置在每个Visual C + + 6.0项目中创建的链接设置,您可能要包括在您的代码下面的代码段,这将基本上做上述同样的事情。
#pragma comment (lib, &glui32.lib&)
#pragma comment (lib, &glut32.lib&)
#pragma comment (lib, &glu32.lib&)
#pragma comment (lib, &opengl32.lib&)为了避免让控制台窗口中,每当你想运行你的OpenGL窗口,您可能要包括这在你的代码的指令。
{C}{A44}源代码的目的是要为你的OpenGL应用程序的模板使用。要在新的应用程序中使用它,你可以简单地命名的CPP文件,并把它添加到您的Visual Studio项目。{A45}请注意,GLUI是一个C库,从而不与C.因此,如果你取得联系的错误,而试图建立一个GLUI程序,只是检查所有文件扩展名是CPP和不是C{A46}了解GLUI是内置的GLUT顶部,它需要非常小的变化,与现有的GLUT应用程序集成GLUI组件。因此,我们将开始与{A33},并适用于它的变化,直到我们创建GLUI窗口模板。
{A48}首先,我们开始通过包括GLUI头文件,使用下面的include指令:#include &GL/glui.h&没有必要包括LT; GL / gl.,LT; GL / glu.hgt,或LT GL / glut.因为LT GL / glui.已经包含了他们。{A49}我们的GLUT窗口创建后,我们需要确保我们继续跟踪窗口的ID,因此,GLUI可以与它进行交互和发送它重新显示事件。main_window = glutCreateWindow (window_title);{A50}过剩"回调"函数注册,像往常一样,除了空闲功能。
glutDisplayFunc (display);
glutReshapeFunc
(reshape);
glutMouseFunc (mouse);
glutMotionFunc (motion);
glutPassiveMotionFunc (pmotion);
glutKeyboardFunc (keyboard);
glutSpecialFunc (special);
glutEntryFunc (entry);{A51}空闲回调函数被调用,处于闲置状态时达到。处于闲置状态,是一个没有系统事件回调处理收到的状态。该glutIdleFunc套闲置的回调函数,这是不断呼吁,只要有收到任何事件。这意味着,我们应该尽量减少在空闲功能量的计算和渲染,有更多的互动应用程序。传递NULL glutIdleFunc禁用空闲回调的一代。在正常的GLUT应用程序,闲置函数注册为如下:glutIdleFunc (idle);然而,使用时GLUI,闲置的回调函数是通过GLUI全局对象,GLUI_Master注册。这样做的原因是,GLUI广泛利用空闲事件。从逻辑上讲,它这样做,为了保持清爽GLUI控制,并听取用户与他们的互动。GLUI_Master.set_glutIdleFunc (idle);如果没有空闲的要使用的回调,传递NULL:GLUI_Master.set_glutIdleFunc (NULL);{A52}在我们的GLUT闲置的功能,我们需要明确设置当前窗口前张贴重新显示事件。否则,可能会意外地重新显示发送到GLUI窗口,而不是GLUT窗口。
void idle ( )
glutSetWindow(main_window);
glutPostRedisplay();
}这是众所周知的,GLUI花费过多的CPU时间,甚至当应用程序空闲。这样做的原因是,它里面的所有控件GLUI窗口不断被刷新。为了避免有100%的CPU使用率,当我们运行GLUI窗口,我们需要调用Windows系统功能,睡眠,这将有助于我们避免不断调用空闲功能。,即使没有空闲的功能指定,GLUI应用程序会消耗大部分的CPU时间,导致系统运行缓慢。{中六}当我们调用如下所示的睡眠功能,GLUI应用程序的CPU使用率降低到几乎为0%。{七}
#include &windows.h&
void idle ()
glutSetWindow (main_window);
glutPostRedisplay ();
Sleep (100);
}{A53} GLUI窗口创建如下:
GLUI * glui_
glui_window = GLUI_Master.create_glui (&Options&);下面是create_glui功能定义,在{A54}描述:GLUI *GLUI_Master_Object::create_glui(char *name, int flags=0, int x=-1,
int y=-1);属性
说明名称新GLUI窗口名称标志初始化标志。没有标志都定义在当前版本X,Y初始位置的窗口。请注意,没有初始大小,可以指定,因为GLUI自动调整适合所有控件的窗口请注意,旗,X和Y是可选参数。如果它们没有被指定,默认值将被使用。 GLUI提供尽可能参数的默认值。该函数返回一个指针到一个新的GLUI窗口。在创建窗口的功能除了,GLUI还支持功能启用,禁用,隐藏,显示或关闭窗口。下面是每个这些函数的原型和说明,在{A54}所示:名称原型说明get_glut_window_idINT GLUI:get_glut_window_id(无效);返回一个GLUI窗口标准的GLUT窗口的ID启用,禁用无效GLUI:启用(无效);无效GLUI:禁用(无效);启用或禁用(灰色出)GLUI窗口。没有控制处于活动状态时GLUI窗口被禁用隐藏无效GLUI:隐藏(无效);隐藏了GLUI窗口或子窗口。一个隐藏的窗口或子窗口无法接收任何用户输入显示无效GLUI:显示(无效);隐藏一个先前隐藏的GLUI窗口或子窗口关闭无效GLUI:关闭(无效);干净地销毁一个GLUI窗口或子窗口close_all
无效GLUI_Master_Object:close_all(无效);干净地销毁所有GLUI窗口和子窗口。下面的代码示例:GLUI_Master.close_all()这个函数被调用;{A56}{A57} GLUI可与大多数类型的控制现场变量关联。现场的变量是简单的C GLUI控制与用户交互时自动更新变量。如果用户直接更新,而无需使用控制方法从代码的实况变量,那么我们就需要调用sync_live()函数以同步控制与现场变量的值。例如,让我们说,我们已经与现场变量如下相关的一个复选框:int draw = 0;
glui_window-&add_checkbox ( &Draw&, &draw );当程序启动时,绘制复选框将联合国检查以来,抽奖活变量的值是0。如果借鉴价值为1,然后绘制复选框都出现了作为托运。比方说,程序加载后,用户点击复选框使其如下检查:{S8}当发生这种情况,GLUI自动更新生活的借鉴价值变量设置为1。此外,让我们假设,在代码的某个地方,程序员更新的借鉴价值回0的值。这样做会不会影响控制,从而将成为非同步的控制和现场变量。draw = 0;为了避免这种情况,我们可以调用当前窗口sync_live()方法来更新用户界面:glui_window-&sync_live(); 如果有多个窗口,我们可以使用sync_live_all()GLUI主对象的功能,在所有GLUI窗口同步直播的变量和控制:GLUI_Master.sync_live_all();否则,我们不应该适用于任何直接住变量的变化。我们能够避免直接使用控制(S)的设置方法:
{A58}除了有居住变量跟踪控制值,GLUI也可以产生回调时,控制变化的价值。首次创建控件时,用户可以选择指定的回调函数将被调用控件的值的变化时,伴随着一个整数ID来识别的呼叫控制。这意味着多个控件可以调用相同的回调函数,并仍然可以通过不同的ID传递给函数的确定。glui_window-&add_checkbox ( &Draw&, &draw, ID,
callback_func );{A59}下面是支持的控件类型,他们GLUI名称,描述,存取函数,住变量和回调} {A36复制,的列表:控制类型类名用于...设置/获取值现场VAR?回调?小组GLUI_Panel成箱的控制分组 -
关于作者:
中国我是一名编程爱好者,谢谢为我们提供一个学习和分享的平台。有什么问题。可以就本内容回复,我看到时。会尽量回复的。
评论会员:
时间:我也不管你说什么,但它仍然给出了同样的错误,如:
错误15 error LNK2019:无法解析的外部符号"公共类GLUI * __thiscall GLUI_Master_Object:create_glui(CHAR *,长,INT,INT)"函数_main的测试中引用(create_glui @ GLUI_Master_Object @ @ QAEP***GLUI @ @ PADJHH @ Z)。 obj的测试
错误16错误LNK2001:无法解析的外部符号"__declspec(dllimport)的市民:__thiscall STD无效:语言环境:面:_Register(无效)"(__imp_ _Register @,STD @ @ QAEXXZ?)glui32.lib测试{ BR} 等..
我搜索无处不在,但我可以不是问题的***,请帮助我评论会员:
时间:做什么? plz帮助评论会员:
时间:您好,
我试着去使用close()例程时,它的使用,程序崩溃。有谁有一个想法的原因,可能会发生吗?我敢失去了与它。{S9}
(出现这种情况为glui_windows,glui_subwindows)(我使用的是2.35版)
谢谢评论会员:
时间:你想达到的目的是什么情景呢?你要关闭不退出应用程序的窗口?如果你只是想退出所有运行退出(0)
- 阿里乙评论会员:
时间:我想要实现的是关闭边子窗口,共创在另一个的地方。如果我不关闭旧的,只是隐藏它,创建新的子窗口与窗口的边缘偏移。
Ronen 评论会员:
时间:有人也面临着类似的问题在这里:{A61}
当你手动关闭子窗口,当你调用close()从你的代码,或在这两种情况下会出现这种情况呢?
- 阿里B 评论会员:
时间:在最坏的情况下,考虑隐藏子窗口,创建其他子窗口,然后重新定位到正确的位置。
- 阿里乙评论会员:
时间:我的问题发生,当我调用close(的代码(我还有什么其他方式关闭子窗口?))。我的代码是内置,像这样:
glutMainLoop()之前,我创建的所有GLUI窗口和子窗口(只需进行一次阵痛的代码)每当一个窗口/子窗口是必要的,它是显示/隐藏。
这是一种错误的做法吗?这是我的倒台?
- Ronen 评论会员:
时间:我已经创建了一个新GLUI接口,并连接到我的GLUT窗口。 GLUI *w = GLUI_Master.create_glui_subwindow(main_window, GLUI_SUBWINDOW_LEFT);,但现在我有一个问题,终止我的应用程序。 紧迫的窗口关闭按钮(X)后,关闭窗口,但不会终止应用程序仍然在后台运行。
我使用Windows XP,VS 2008的评论会员:
时间: LIBCD.LIB screemed编译器...看完后在MSDN议会的一些东西,我得到了它运行:"多线程调试(/ MTD)"链接器选项{S10}
来自德国问候评论会员:
时间:快乐,它为你的作品{S11}
- 阿里B 评论会员:
时间:嗨,我无法找到VC的6个项目文件,只有C的模板文件。有一个关于OpenGL的很多,我可以了解整个项目的。
詹姆斯伦纳德评论会员:
时间:如何创建VC的6项目的全部细节描述...
- 阿里乙评论会员:
时间:您好,我觉得这篇文章是有用的!而且,我想知道,有一个菜单GLUI?如果有,如何能找到它吗? ,或没有,怎么能写一个GUI应用程序菜单GLUI?
非常感谢您! {S12} {S12}
60;再次感谢您!
#24863;#35874;#20320;#30340;#36825;#31687;#25991;#31456;!
Zh_tiwei 评论会员:
时间:喜Zh_tiwei,
GLUI不支持菜单。为了工作菜单,您可以使用GLUT弹出菜单。
最好的问候,阿里B,评论会员:
时间:您好,
ü检查所有下载后加载项目,我只是点击下载DLL的 - 831.2Kb,这是一个zip文件,这是127KB(下载后)。当我试图提取,我得到一个错误信息"压缩(zipped)文件夹是无效/损坏"。
我也试图与你提到的链接下载:"你可以找到在所附的zip文件GLUI_Window_Template_dll.zip中的所有DLL文件,在Visual C:\ DLL",我得到一个错误信息"找不到文件"。
在下载"下载演示项目 - 85.0 KB""应用程序失败,因为glut32.dll未发现重新***应用程序可能会修复此问题",我点击GLUI_Window_Template.exe,得到一个错误消息
Ranjan.D 评论会员:
时间: Ranjan,
感谢了很多提这个...
首先,你得到这个错误",应用程序并没有因为glut32.dll没有被发现。重新***应用程序可能会修复此问题。"因为你不能够下载的DLL。
我已经更新了联系,并重新上传zip文件。我会让你知道,一旦在CodeProject上的文章得到更新。
最好的问候,阿里B,评论会员:
时间: Ranjan,
现在更新的联系和不再损坏的DLL zip文件... ...现在,您可以下载它们并尝试。
最好的问候,阿里B,评论会员:
时间:嗨,
我下载创建了一个项目。真正伟大的感谢了很多... ...
Ranjan.D 评论会员:
时间:你最welome,Ranjan {S12}
最好的问候,阿里B,评论会员:
时间:s22781:"应用程序失败,因为glut32.dll未发现重新***应用程序可能会修复此问题"现在,我得到一个错误信息太多。F图片:http://www.multi9.net/glui.jpg-修改9:59星期日九月三十日止,2007阿里BaderEddin评论会员:
时间:下面的文章中提到:运行程序为了运行程序,三个动态链接库(DLL)是必需的:opengl32.dll,glu32.dll,glut32.dll。opengl32.dll和glu32.dll已经来到您的Windows操作系统和系统文件夹中找到。运行可执行文件,你必须下载glut32.dll它复制到系统文件夹。你可以找到根据的VisualC\DLL所附的ZIP文件GLUI_Window_Template_dll.zip,所有的DLL文件告诉我,如果你需要更多的帮助......最好的问候,阿里B,
&桌面&网页开发&移动开发&数据库&多媒体&编程语言&平台,框架和库&编程通用&图形/设计&开发周期&一般阅读&第三方产品&作者资源&其他
快速解答标签
价值作最多2812345678910111213141516171819202122232425262728303112345678910
随笔档案(78)
积分与排名
阅读排行榜
评论排行榜