📄 wdehints.c
字号:
, { { 1, 5 }, NULL, WDE_HINT_ALIGNMENU }
, { { 1, 6 }, NULL, WDE_HINT_SIZEMENU }
, { { 1, 15 }, NULL, WDE_HINT_EDITSYMMENU }
, { { 2, -1 }, NULL, WDE_HINT_DIALOGMENU }
, { { 3, -1 }, NULL, WDE_HINT_CONTROLMENU }
, { { 4, -1 }, NULL, WDE_HINT_WINDOWMENU }
, { { 5, -1 }, NULL, WDE_HINT_HELPMENU }
};
void WdeHandleMenuSelect ( WPARAM wParam, LPARAM lParam )
{
HMENU menu;
HMENU popup;
WORD flags;
menu = WdeGetMenuHandle();
flags = GET_WM_MENUSELECT_FLAGS(wParam,lParam);
if( ( flags == (WORD)-1 ) &&
( GET_WM_MENUSELECT_HMENU(wParam,lParam) == (HMENU)NULL ) ) {
WdeSetStatusText ( NULL, "", TRUE );
} else if ( flags & (MF_SYSMENU | MF_SEPARATOR) ) {
WdeSetStatusText ( NULL, "", TRUE );
} else if ( flags & MF_POPUP ) {
popup = (HMENU) GET_WM_MENUSELECT_ITEM(wParam,lParam);
#ifdef __NT__
popup = GetSubMenu( (HMENU)lParam, (int)popup );
#endif
WdeHandlePopupHint ( menu, popup );
} else {
WdeDisplayHint ( (int) GET_WM_MENUSELECT_ITEM(wParam,lParam) );
}
}
void WdeDisplayHint ( int id )
{
char *buf;
char *mditext;
WdeHintItem *hint;
if( id < WDE_MDI_FIRST ) {
hint = WdeGetHintItem ( id );
if( hint ) {
WdeSetStatusByID( -1, hint->hint );
}
} else {
mditext = WdeAllocRCString( WDE_HINT_MDIMSG );
if( mditext ) {
buf = WdeMemAlloc( strlen(mditext) + 20 + 1 );
if( buf ) {
sprintf( buf, mditext, WDE_MDI_FIRST + 1 - id );
WdeSetStatusText( NULL, buf, TRUE );
WdeMemFree( buf );
}
WdeFreeRCString( mditext );
}
}
return;
}
WdeHintItem *WdeGetHintItem ( int id )
{
int i;
for ( i = 0; WdeHints[i].id != -1; i++ ) {
if ( WdeHints[i].id == id ) {
return ( &(WdeHints[i]) );
}
}
return ( NULL );
}
WdePopupListItem *WdeFindPopupListItem ( HMENU menu )
{
LIST *plist;
WdePopupListItem *p;
for ( plist = WdePopupList; plist; plist = ListNext ( plist ) ) {
p = (WdePopupListItem *) ListElement ( plist );
if ( p->menu == menu ) {
return ( p );
}
}
return ( NULL );
}
DWORD WdeGetPopupHint( WdePopupListItem *p, HMENU popup )
{
int i;
for( i = 0; i < p->num; i++ ) {
if( p->hint_items[i].popup == popup ) {
return( p->hint_items[i].hint );
}
}
return( -1 );
}
void WdeHandlePopupHint( HMENU menu, HMENU popup )
{
WdePopupListItem *p;
DWORD hint;
hint = -1;
p = WdeFindPopupListItem( menu );
if( p ) {
hint = WdeGetPopupHint( p, popup );
if( hint != -1 ) {
WdeSetStatusByID( -1, hint );
}
}
if( hint == -1 ) {
WdeSetStatusText( NULL, "", TRUE );
}
}
Bool WdeInitHints ( void )
{
Bool ret;
ret = TRUE;
if( !WdeIsDDE() ) {
ret = WdeCreateWdePopupListItem( 4, WdeGetInitialMenuHandle(),
WdeInitialPopupHints );
}
if( ret ) {
if( WdeIsDDE() ) {
ret = WdeCreateWdePopupListItem( 10, WdeGetResMenuHandle(),
WdeDDEPopupHints );
} else {
ret = WdeCreateWdePopupListItem( 10, WdeGetResMenuHandle(),
WdeResPopupHints );
}
}
return ( ret );
}
void WdeFiniHints ( void )
{
LIST *plist;
WdePopupListItem *p;
for ( plist = WdePopupList; plist; plist = ListConsume ( plist ) ) {
p = (WdePopupListItem *) ListElement ( plist );
WdeMemFree ( p );
}
}
Bool WdeCreateWdePopupListItem ( int num, HMENU menu,
WdePopupHintItem *hint_items )
{
WdePopupListItem *p;
p = (WdePopupListItem *) WdeMemAlloc ( sizeof(WdePopupListItem) );
if ( p ) {
p->num = num;
p->menu = menu;
p->hint_items = hint_items;
if ( WdeInitHintItems ( num, menu, hint_items ) ) {
ListAddElt ( &WdePopupList, p );
} else {
WdeMemFree ( p );
return ( FALSE );
}
} else {
return ( FALSE );
}
return ( TRUE );
}
Bool WdeInitHintItems ( int num, HMENU menu, WdePopupHintItem *hint_items )
{
int i;
int j;
HMENU popup;
for ( i = 0; i < num; i++ ) {
popup = menu;
for ( j = 0;
(j < MAX_NESTED_POPUPS) && (hint_items[i].loc[j] != -1);
j++ ) {
popup = GetSubMenu ( popup, hint_items[i].loc[j] );
}
hint_items[i].popup = popup;
}
return ( TRUE );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -