请问一下的一个PHAB程序,用做界面得工具Builder从主窗口Window菜单弹出的对话框Dialog,默认不能最小化,可以最大化,主窗口都可以。我看了修改了可能的选项,Flags:Render,Flags:Managed,Flags:Notify 还是不行,谁知道指点一下,谢谢.
首先,我想你需要仔细阅读一下PtWindow的文档.注意两样东西,Window Manager和subwindows.
我相信是父窗口对子窗口的flags做了一些改动(暗地里)或它屏闭了某些给子窗口的event.
所以你不能最小化子窗口.(当子窗口由ApCreateModule()创建或使用PhAB’s link callbacks)
一个简单的方法是,创建一个新的窗口,让它们之间没有继承关系.如
int PtButton_new( PtWidget_t *widget, ApInfo_t *apinfo, PtCallbackInfo_t *cbinfo )
{
PhWindowEvent_t WE;
PtWidget_t *gwidget;
// PtCreateWidget and Pt_NO_PARENT!!!
gwidget = PtCreateWidget( PtWindow, Pt_NO_PARENT, 0, NULL );
PtRealizeWidget( gwidget );
// 最小化窗口
if( !gwidget || !PtWidgetIsClassMember( gwidget, PtWindow ))
{
return -1;
}
memset( &WE, 0, sizeof (WE));
WE.event_f = Ph_WM_HIDE;
WE.rid = PtWidgetRid( gwidget );
WE.event_state = Ph_WM_EVSTATE_HIDE;
//WE.event_state = Ph_WM_EVSTATE_UNHIDE;
return PtForwardWindowEvent( &WE );
/* eliminate ‘unreferenced’ warnings */
widget = widget, apinfo = apinfo, cbinfo = cbinfo;
return( Pt_CONTINUE );
}
如果这不是你想要的.
1.也许你可以参考一下PtReparentWidget().
2.你要保留它们之间的继承关系,但想做一些改动.也许可以重新设置一下窗口的flag属性.
我没有做过,剩下的你自己试一下吧.如果有时间.
简单来说,我的思路是.要不让它们没有关系.要不改变它们之间的关系.
另Button 点下去的效果,可以设置Flags里的Pt_SET.
呵呵,谢谢,Pt_SET 找到了。
Dialog左上角有个收起和放下按钮,这个功能也不错,哈
我是用Builder 做的界面,不是自己直接用语句写的,创建Dialog是用菜单里的 create dialog 实现的,然后在界面工具里面把菜单和这个Dialog关联的,这个dialog的Flags:Render,Flags:Managed,Flags:Notify 我都试着改成跟主窗口Window一样,因为主窗口可以最小化,结果还是没解决。