📄 wdefdiag.c
字号:
GlobalUnlock(dialog_template);
GlobalFree(dialog_template);
if ( hwin == NULL ) {
WdeWriteTrail("WdeDialogTest: Could not create window!");
ShowWindow ( obj->window_handle, SW_SHOW );
return ( FALSE );
}
if ( obj->num_children && !WdeSetTestControlDefaults ( hwin ) ) {
WdeWriteTrail("WdeDialogTest: WdeSetTestControlDefaults failed!");
}
ShowWindow ( hwin, SW_SHOW );
return ( TRUE );
}
Bool WdeDialogRestore ( WdeDialogObject *obj, void *p1, void *p2 )
{
/* touch unused vars to get rid of warning */
_wde_touch(p1);
_wde_touch(p2);
if( WdeIsDialogRestorable ( obj ) ) {
ShowWindow ( obj->window_handle, SW_HIDE );
if( !WdeOpenDialogFromResInfo ( obj->res_info, obj->dlg_item ) ) {
ShowWindow ( obj->window_handle, SW_SHOW );
obj->dlg_item->object = obj;
return( FALSE );
}
MakeObjectCurrent( obj->dlg_item->object );
Destroy( (OBJPTR)obj, FALSE );
} else {
return( FALSE );
}
return ( TRUE );
}
Bool WdeIsDialogRestorable ( void *_obj )
{
WdeDialogObject *obj = _obj;
return ( obj && obj->res_info && obj->dlg_item &&
obj->dlg_item->dialog_info );
}
Bool WdeDialogSaveObject ( WdeDialogObject *obj, WORD *id, void *p2 )
{
WdeDialogBoxInfo *dbi;
uint_8 ret;
WResLangType lang;
/* touch unused vars to get rid of warning */
_wde_touch(p2);
ret = FALSE;
if( WdeIsHashTableDirty( obj->res_info->hash_table ) ) {
Forward ( obj->object_handle, RESOLVE_SYMBOL, NULL, NULL );
Forward ( obj->object_handle, RESOLVE_HELPSYMBOL, NULL, NULL );
}
dbi = WdeDBIFromObject( obj );
if( !dbi ) {
return ( FALSE );
}
if( obj->dlg_item->dialog_info ) {
WdeFreeDialogBoxInfo( obj->dlg_item->dialog_info );
}
obj->dlg_item->dialog_info = dbi;
if( obj->dlg_item->lnode ) {
lang = obj->dlg_item->lnode->Info.lang;
} else {
lang.lang = DEF_LANG;
lang.sublang = DEF_SUBLANG;
}
switch( *id ) {
case IDM_DIALOG_SAVE:
ret = WdeSaveObject( obj->res_info, dbi, &(obj->file_name),
obj->name, &lang, FALSE, FALSE );
break;
case IDM_DIALOG_SAVEAS:
ret = WdeSaveObject( obj->res_info, dbi, &(obj->file_name),
obj->name, &lang, FALSE, TRUE );
break;
case IDM_DIALOG_SAVEINTO:
ret = WdeSaveObject( obj->res_info, dbi, &(obj->file_name),
obj->name, &lang, TRUE, TRUE );
break;
}
return ( ret );
}
Bool WdeDialogGetResizeInc ( WdeDialogObject *obj, POINT *p, void *p2 )
{
DialogSizeInfo d;
RECT r;
/* touch unused vars to get rid of warning */
_wde_touch(p2);
p->x = 1;
p->y = 1;
d.x = 0;
d.y = 0;
d.width = WdeGetOption( WdeOptReqGridX );
d.height = WdeGetOption( WdeOptReqGridY );
if( obj->window_handle != (HWND)NULL ) {
SetRect( &r, 0, 0, d.width, d.height );
MapDialogRect( obj->window_handle, &r );
p->x = r.right;
p->y = r.bottom;
} else {
if( WdeDialogToScreen( obj, &(obj->resizer), &d, &r ) ) {
p->x = r.right;
p->y = r.bottom;
}
}
return ( TRUE );
}
Bool WdeDialogGetScrollRect ( WdeDialogObject *obj, RECT *r, void *p2 )
{
return ( Forward ( obj->parent, GET_SCROLL_RECT, r, p2 ) );
}
Bool WdeDialogGetResizer ( WdeDialogObject *obj, WdeResizeRatio *resizer,
OBJPTR *o )
{
*resizer = obj->resizer;
if ( o ) {
*o = obj;
}
return ( TRUE );
}
Bool WdeDialogGetFont ( WdeDialogObject *obj, HFONT *font, void *p2 )
{
/* touch unused vars to get rid of warning */
_wde_touch(p2);
*font = obj->font;
return ( TRUE );
}
Bool WdeDialogIdentify ( WdeDialogObject *obj, OBJ_ID *id, void *p2 )
{
/* touch unused vars to get rid of warning */
_wde_touch(p2);
*id = obj->object_id;
return ( TRUE );
}
Bool WdeDialogDefine( WdeDialogObject *obj, POINT *pnt, void *p2 )
{
WdeDefineObjectInfo o_info;
Bool redraw;
Bool quick;
Bool destroy_children;
/* touch unused vars to get rid of warning */
_wde_touch(pnt);
_wde_touch(p2);
if( obj->mode != WdeSelect ) {
return( TRUE );
}
o_info.obj = obj;
o_info.obj_id = obj->object_id;
o_info.win = obj->window_handle;
o_info.symbol = obj->symbol;
o_info.helpsymbol = obj->helpsymbol;
o_info.hook_func = WdeWinStylesHook;
o_info.set_func = NULL;
o_info.get_func = NULL;
o_info.res_info = obj->res_info;
o_info.info.d.name = obj->name;
o_info.info.d.header = obj->dialog_info;
o_info.mask = WS_POPUP | WS_CHILD |
WS_CLIPSIBLINGS | WS_CLIPCHILDREN |
WS_VISIBLE | WS_DISABLED |
WS_BORDER | WS_DLGFRAME |
WS_VSCROLL | WS_HSCROLL |
WS_SYSMENU | WS_THICKFRAME |
WS_MINIMIZEBOX | WS_MAXIMIZEBOX ;
if ( !WdeGetOption ( WdeOptUseDefDlg ) ) {
redraw = WdeGenericDefine ( &o_info );
} else {
WdeSetStatusText( NULL, "", FALSE );
WdeSetStatusByID( WDE_DEFININGDIALOG, -1 );
redraw = JDialogBoxParam( WdeAppInst, "WdeDefineDIALOG",
obj->window_handle,
(DLGPROC) WdeDialogDefineProcInst,
(LPARAM) &o_info );
if ( redraw ) {
quick = TRUE;
destroy_children = TRUE;
HideSelectBoxes ( );
if ( !WdeDialogDestroyWindow ( obj, &quick, &destroy_children ) ) {
WdeWriteTrail("WdeDialogDefine: WdeDialogDestroyWindow failed!");
return ( FALSE );
}
if ( !WdeDialogCreateWindow ( obj, NULL, NULL ) ) {
WdeWriteTrail("WdeDialogDefine: CREATE_WINDOW failed!");
return ( FALSE );
}
ShowSelectBoxes ( );
UpdateScroll ();
}
}
if ( redraw ) {
obj->symbol = o_info.symbol;
obj->helpsymbol = o_info.helpsymbol;
obj->name = o_info.info.d.name;
WdeWriteDialogToInfo ( obj );
WdeDialogModified ( obj );
}
WdeSetStatusReadyText( );
return ( TRUE );
}
BOOL WdeDialogIsMarkValid ( WdeDialogObject *obj, BOOL *flag, void *p2 )
{
/* touch unused vars to get rid of warning */
_wde_touch(p2);
if ( obj->mode == WdeSelect ) {
*flag = ( ( obj->window_handle != NULL ) &&
IsWindowVisible ( obj->window_handle ) );
} else {
*flag = FALSE;
}
return ( TRUE );
}
Bool WdeDialogDestroy( WdeDialogObject *obj, Bool *flag, Bool *hide )
{
LIST *clist;
OBJPTR sub_obj;
OBJPTR parent;
RECT rect;
Bool quick, b;
Bool destroy_children;
/* touch unused vars to get rid of warning */
_wde_touch(flag);
parent = obj->parent;
if( obj->mode != WdeSelect ) {
WdeDialogSetOrderMode( obj, &obj->mode, NULL );
}
if( hide && *hide ) {
WdePreserveDialogWithDBI( obj );
if( obj->res_info ) {
sub_obj = WdeGetNextObject( FALSE, obj, parent );
if( !sub_obj ) {
sub_obj = parent;
}
obj->res_info->next_current = sub_obj;
}
} else {
WdeRemoveObject( obj->res_info, obj );
}
Location( obj->object_handle, &rect );
if( parent ) {
if( !RemoveObject(parent, obj->object_handle) ) {
WdeWriteTrail("WdeDialogDestroy: RemoveObject failed!");
}
}
quick = TRUE;
destroy_children = TRUE;
if( !WdeDialogDestroyWindow( obj, &quick, &destroy_children ) ) {
WdeWriteTrail("WdeDialogDestroy: WdeDialogDestroyWindow failed!");
}
b = FALSE;
// we do this BEFORE we destroy the children as a child if this
// dialog may be the current object
ObjectDestroyed( obj->object_handle );
if( hide && *hide ) {
if( parent ) {
MakeObjectCurrent( parent );
}
}
/* destroy all children */
clist = WdeListCopy( obj->children );
for( ; clist; clist = ListConsume(clist) ) {
sub_obj = ListElement( clist );
if( !Forward( sub_obj, DESTROY, &b, NULL ) ) {
WdeWriteTrail("WdeDialogDestroy: Child DESTROY failed");
}
}
if( !Forward( obj->o_item, DESTROY, &b, NULL ) ) {
WdeWriteTrail("WdeDialogDestroy: Remove OITEM failed!");
return( FALSE );
}
WdeFreeOrderedList( obj->ochildren );
if( obj->res_info ) {
if( obj->res_info->next_current == obj->object_handle ) {
obj->res_info->next_current = NULL;
}
}
WdeFreeDialogObject( obj );
MarkInvalid( &rect );
WdeCheckBaseScrollbars( FALSE );
return( TRUE );
}
void WdeFreeDialogObject ( WdeDialogObject *obj )
{
if ( obj->dialog_info ) {
WdeFreeDialogBoxHeader ( &( obj->dialog_info ) );
}
if ( obj->name ) {
WResIDFree ( obj->name );
}
if ( obj->symbol ) {
WdeMemFree( obj->symbol );
}
if ( obj->file_name ) {
WdeMemFree( obj->file_name );
}
// if ( obj->helpname ) {
// WResHelpIDFree ( obj->helpname );
// }
if ( obj->helpsymbol ) {
WdeMemFree( obj->helpsymbol );
}
WdeMemFree ( obj );
}
Bool WdeDialogCreateWindow ( WdeDialogObject *obj, Bool *show, void *p2 )
{
HGLOBAL hglobal_mem;
uint_8 *locked_global_mem;
RECT rect;
LIST *olist;
OBJPTR child;
/* touch unused vars to get rid of warning */
_wde_touch(p2);
//SETHDR_STYLE(obj->dialog_info, GETHDR_STYLE(obj->dialog_info) & ~WS_VISIBLE );
if (!WdeBuildDialogTemplate(obj->dialog_info, &hglobal_mem)) {
return ( FALSE );
}
locked_global_mem = (uint_8 *) GlobalLock(hglobal_mem);
if (locked_global_mem == NULL) {
WdeWriteTrail("WdeDialogCreateWindow: Could not lock template!");
GlobalFree(hglobal_mem);
return ( FALSE );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -