Exemplo n.º 1
0
HWND tcore::init_toolbar(HINSTANCE hinst, HWND hdlgP)
{
	// Create a toolbar
	gdmgr._htb_core = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, 
		WS_CHILD | /*CCS_ADJUSTABLE |*/ TBSTYLE_TOOLTIPS | TBSTYLE_FLAT, 0, 0, 0, 0, hdlgP, 
		(HMENU)IDR_WGENMENU, gdmgr._hinst, NULL);

	//Enable multiple image lists
    SendMessage(gdmgr._htb_core, CCM_SETVERSION, (WPARAM) 5, 0); 

	// Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility
	ToolBar_ButtonStructSize(gdmgr._htb_core, sizeof(TBBUTTON));
	
	gdmgr._tbBtns_core[0].iBitmap = MAKELONG(gdmgr._iico_save, 0);
	gdmgr._tbBtns_core[0].idCommand = IDM_SAVE;	
	gdmgr._tbBtns_core[0].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_core[0].fsStyle = BTNS_BUTTON;
	gdmgr._tbBtns_core[0].dwData = 0L;
	gdmgr._tbBtns_core[0].iString = -1;

	ToolBar_AddButtons(gdmgr._htb_core, 1, &gdmgr._tbBtns_core);

	ToolBar_AutoSize(gdmgr._htb_core);
	
	ToolBar_SetExtendedStyle(gdmgr._htb_core, TBSTYLE_EX_DRAWDDARROWS);
	
	ToolBar_SetImageList(gdmgr._htb_core, gdmgr._himl_24x24, 0);
	ToolBar_SetDisabledImageList(gdmgr._htb_core, gdmgr._himl_24x24_dis);
	
	ShowWindow(gdmgr._htb_core, SW_SHOW);

	return gdmgr._htb_core;
}
Exemplo n.º 2
0
// ------------------------------------------------------------------------
HWND init_toolbar_sys(HINSTANCE hinst, HWND hdlgP)
{
	int		idx = 0;

	// Create a toolbar
	gdmgr._htb_sys = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, 
		WS_CHILD | CCS_ADJUSTABLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT | TBSTYLE_CHECK, 0, 0, 0, 0, hdlgP, 
		(HMENU)IDR_SYSMENU, gdmgr._hinst, NULL);

	// Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility
	ToolBar_ButtonStructSize(gdmgr._htb_sys, sizeof(TBBUTTON));

	ToolBar_SetButtonSize(gdmgr._htb_sys, 80, 80);

	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_sync, 0);
	// 为了工具提示作到简单,IDM_FILE_SAVE最好就是字串,它就是String Table中一个值
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_SYNC;	
	gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	idx ++;
	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_wgen, 0);
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_WGEN;
	gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	idx ++;
	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_xchg, 0);
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_CORE;
	gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	idx ++;
	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_play, 0);
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_PLAY;
	gdmgr._tbBtns_sys[idx].fsState = 0;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	idx ++;
	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_update, 0);
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_TBOX;
	gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	idx ++;
	gdmgr._tbBtns_sys[idx].iBitmap = MAKELONG(gdmgr._iico_title_about, 0);
	gdmgr._tbBtns_sys[idx].idCommand = IDM_SYS_BUILDER;
	gdmgr._tbBtns_sys[idx].fsState = TBSTATE_ENABLED;
	gdmgr._tbBtns_sys[idx].fsStyle = TBSTYLE_BUTTON;
	gdmgr._tbBtns_sys[idx].dwData = 0L;
	gdmgr._tbBtns_sys[idx].iString = 0;

	ToolBar_AddButtons(gdmgr._htb_sys, TB_BTNS_COUNT_SYS, &gdmgr._tbBtns_sys);

	ToolBar_AutoSize(gdmgr._htb_sys);
	
	ToolBar_SetExtendedStyle(gdmgr._htb_sys, TBSTYLE_EX_DRAWDDARROWS);
	
	ToolBar_SetImageList(gdmgr._htb_sys, gdmgr._himl_80x80, 0);
	ToolBar_SetDisabledImageList(gdmgr._htb_sys, gdmgr._himl_80x80_dis);
	
	ShowWindow(gdmgr._htb_sys, SW_SHOW);

	return gdmgr._htb_sys;
}
Exemplo n.º 3
0
void create_subcfg_toolbar(HWND hwndP)
{
	TBBUTTON		tbBtns[5];
	int				cxblank;
	RECT			rc;


	GetClientRect(hwndP, &rc);
	cxblank = (rc.right - rc.left) - 4 * 24 - 6;

	if (gdmgr._htb_subcfg) {
		DestroyWindow(gdmgr._htb_subcfg);
	}

	// Create a toolbar
	gdmgr._htb_subcfg = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR)NULL, 
		WS_CHILD | CCS_ADJUSTABLE | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT, 0, 0, 100, 0, hwndP, 
		(HMENU)IDR_WGENMENU, gdmgr._hinst, NULL);

	// Send the TB_BUTTONSTRUCTSIZE message, which is required for backward compatibility
	ToolBar_ButtonStructSize(gdmgr._htb_subcfg, sizeof(TBBUTTON));
	ToolBar_SetButtonSize(gdmgr._htb_subcfg, 30, 30);
	
	tbBtns[0].iBitmap = MAKELONG(gdmgr._iico_reset, 0);
	tbBtns[0].idCommand = IDM_RESET;	
	tbBtns[0].fsState = TBSTATE_ENABLED;
	tbBtns[0].fsStyle = BTNS_BUTTON;
	tbBtns[0].dwData = 0L;
	tbBtns[0].iString = -1;

	ToolBar_AddButtons(gdmgr._htb_subcfg, 1, &tbBtns);
	ToolBar_AutoSize(gdmgr._htb_subcfg);
	ToolBar_SetExtendedStyle(gdmgr._htb_subcfg, TBSTYLE_EX_DRAWDDARROWS);
	ToolBar_SetImageList(gdmgr._htb_subcfg, gdmgr._himl_24x24, 0);
	
	ShowWindow(gdmgr._htb_subcfg, SW_SHOW);

	SetParent(GetDlgItem(hwndP, IDOK), gdmgr._htb_subcfg);
	SetParent(GetDlgItem(hwndP, IDCANCEL), gdmgr._htb_subcfg);

	TOOLINFO	ti;
    RECT		rect;
	// CREATE A TOOLTIP WINDOW for OK
	if (gdmgr._tt_ok) {
		DestroyWindow(gdmgr._tt_ok);
	}
    gdmgr._tt_ok = CreateWindowEx(WS_EX_TOPMOST,
        TOOLTIPS_CLASS,
        NULL,
        WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,		
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        GetDlgItem(gdmgr._htb_subcfg, IDOK),
        NULL,
        gdmgr._hinst,
        NULL
        );
	// SetWindowPos(hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
    // GET COORDINATES OF THE MAIN CLIENT AREA
    GetClientRect(GetDlgItem(gdmgr._htb_subcfg, IDOK), &rect);
    // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE
    ti.cbSize = sizeof(TOOLINFO);
    ti.uFlags = TTF_SUBCLASS;
    ti.hwnd = GetDlgItem(gdmgr._htb_subcfg, IDOK);
    ti.hinst = gdmgr._hinst;
    ti.uId = 0;
    ti.lpszText = "Save and exit";
    // ToolTip control will cover the whole window
    ti.rect.left = rect.left;    
    ti.rect.top = rect.top;
    ti.rect.right = rect.right;
    ti.rect.bottom = rect.bottom;

    // SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW 
    SendMessage(gdmgr._tt_ok, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);

	// CREATE A TOOLTIP WINDOW for CANCEL
	if (gdmgr._tt_cancel) {
		DestroyWindow(gdmgr._tt_cancel);
	}
    gdmgr._tt_cancel = CreateWindowEx(WS_EX_TOPMOST,
        TOOLTIPS_CLASS,
        NULL,
        WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,		
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        GetDlgItem(gdmgr._htb_subcfg, IDCANCEL),
        NULL,
        gdmgr._hinst,
        NULL
        );
	// SetWindowPos(hwndTT, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
    // GET COORDINATES OF THE MAIN CLIENT AREA
    GetClientRect(GetDlgItem(gdmgr._htb_subcfg, IDCANCEL), &rect);
    // INITIALIZE MEMBERS OF THE TOOLINFO STRUCTURE
    ti.cbSize = sizeof(TOOLINFO);
    ti.uFlags = TTF_SUBCLASS;
    ti.hwnd = GetDlgItem(gdmgr._htb_subcfg, IDCANCEL);
    ti.hinst = gdmgr._hinst;
    ti.uId = 0;
    ti.lpszText = "Discard and exit";
    // ToolTip control will cover the whole window
    ti.rect.left = rect.left;    
    ti.rect.top = rect.top;
    ti.rect.right = rect.right;
    ti.rect.bottom = rect.bottom;

    // SEND AN ADDTOOL MESSAGE TO THE TOOLTIP CONTROL WINDOW 
    SendMessage(gdmgr._tt_cancel, TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);

	return;
}
Exemplo n.º 4
0
//-------------------------------------------------------------------
LRESULT CALLBACK
WndProc (HWND hwnd, UINT mMsg, WPARAM wParam, LPARAM lParam) 
     {
     switch (mMsg)
          {
          case WM_CREATE :
               {
			   pophwnd(hwnd);

               // Create toolbar (source resides in toolbar.c).
               hwndToolBar = InitToolBar (hwnd,hInst) ;

               // Create status bar (source resides in statbar.c).
               hwndStatusBar = InitStatusBar (hwnd) ;

			   if (flg_toolbar==0) ShowWindow (hwndToolBar, SW_HIDE) ;
			   if (flg_statbar==0) ShowWindow (hwndStatusBar, SW_HIDE) ;

               // Create client window (contains notify list).
               hwndClient = CreateWindowEx (WS_EX_CLIENTEDGE,
                                 "ClientWndProc", NULL,
                                 WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,
                                 hwnd, (HMENU) 4, hInst, NULL) ;

			   return 0 ;
               }

		  case WM_INITMENUPOPUP :
				return poppad_menupop( wParam,lParam );

          case WM_SETFOCUS :
               SetFocus (hwndClient) ;
               return 0 ;

          case WM_COMMAND :
               {
               // Menu item commands
               switch (LOWORD (wParam))
                    {
                     // Toggle display of toolbar
                    case IDM_VIEW_TOOLBAR :
                         {
                         RECT r ;

                         if (hwndToolBar && IsWindowVisible (hwndToolBar))
                              {
                              ShowWindow (hwndToolBar, SW_HIDE) ;
							  flg_toolbar=0;
                              }
                         else
                              {
                              ShowWindow (hwndToolBar, SW_SHOW) ;
							  flg_toolbar=1;
                              }

                         // Resize other windows.
                         GetClientRect (hwnd, &r) ;
                         PostMessage (hwnd, WM_SIZE, 0, 
                                      MAKELPARAM (r.right, r.bottom)) ;

                         break;
                         }

                    // Toggle display of status bar
                    case IDM_VIEW_STATUS :
                         {
                         RECT r;

                         if (hwndStatusBar && IsWindowVisible (hwndStatusBar))
                              {
                              ShowWindow (hwndStatusBar, SW_HIDE) ;
							  flg_statbar=0;
                              }
                         else
                              {
                              ShowWindow (hwndStatusBar, SW_SHOW) ;
							  flg_statbar=1;
                              }

                         // Resize other windows.
                         GetClientRect (hwnd, &r) ;
                         PostMessage (hwnd, WM_SIZE, 0, 
                                      MAKELPARAM (r.right, r.bottom)) ;

                         break;
                         }

					case IDM_HSCROLL:
						poppad_setsb(2);
						break;

					default:
		               return (EditProc (hwnd, mMsg, wParam, lParam)) ;

                     }

               return 0;
               }

          case WM_INITMENU :
               {
               BOOL bCheck ;
               HMENU hmenu = (HMENU) wParam ;

               // View menu items.
               bCheck = IsWindowVisible (hwndToolBar) ;
               MenuCheckMark (hmenu, IDM_VIEW_TOOLBAR, bCheck) ;
            
               bCheck = IsWindowVisible (hwndStatusBar) ;
               MenuCheckMark (hmenu, IDM_VIEW_STATUS, bCheck) ;

				bCheck=poppad_setsb(-1);
				MenuCheckMark (hmenu, IDM_HSCROLL, bCheck) ;

               return 0 ;
               }

          case WM_CLOSE :
          case WM_QUERYENDSESSION :
			   return poppad_term( mMsg );

          case WM_MENUSELECT :
               return Statusbar_MenuSelect (hwnd, wParam, lParam) ;

          case WM_DESTROY :
			   RemoveProp(hwnd, PROP_NAME);
               PostQuitMessage (0) ;
               return 0 ;

          case WM_NOTIFY :
               {
               LPNMHDR pnmh = (LPNMHDR) lParam ;
//               int idCtrl = (int) wParam ;

               // Display notification details in notify window
               //DisplayNotificationDetails (wParam, lParam) ;

               // Toolbar notifications
               if ((pnmh->code >= TBN_LAST) &&
                   (pnmh->code <= TBN_FIRST))
                    {
                    return ToolBarNotify (hwnd, wParam, lParam) ;
                    }
            
               // Fetch tooltip text
               if (pnmh->code == TTN_NEEDTEXT)
                    {
                    LPTOOLTIPTEXT lpttt = (LPTOOLTIPTEXT) lParam ;
                    CopyToolTipText (lpttt) ;
                    }

               return 0 ;
               }

          case WM_WINDOWPOSCHANGING :
               {
			   WINDOWPOS *wp;
				   wp=(WINDOWPOS *)lParam;
				   if ((wp->cy)&&(wp->cy)) {
					  posx=wp->x;posy=wp->y;
					  winx=wp->cx;winy=wp->cy;
				   }
			   }
			   break;

          case WM_SIZE :
               {
               int cx = LOWORD (lParam) ;
               int cy = HIWORD (lParam) ;
               int cyStatus ;
               int cyTB ;
               int x, y ;
               DWORD dwStyle ;
               RECT rWindow ;

               // Ignore size message to allow auto-move and auto-size
               // features to be more clearly seen.
               if (bIgnoreSize)
                    return 0 ;

               // Adjust toolbar size.
               if (IsWindowVisible (hwndToolBar))
                    {
                    dwStyle = GetWindowLong (hwndToolBar, GWL_STYLE) ;
                    if (dwStyle & CCS_NORESIZE)
                         {
                         MoveWindow (hwndToolBar, 
                                     0, 0, cx, cyToolBar, FALSE) ;
                         }
                    else
                         {
                         ToolBar_AutoSize (hwndToolBar) ;
                         }
					InvalidateRect (hwndToolBar, NULL, TRUE) ;
                    GetWindowRect (hwndToolBar, &rWindow) ;
                    ScreenToClient (hwnd, (LPPOINT) &rWindow.left) ;
                    ScreenToClient (hwnd, (LPPOINT) &rWindow.right) ;
                    cyTB = rWindow.bottom - rWindow.top ;
                    } 
               else
                    {
                    cyTB = 0 ;
                    }

               // Adjust status bar size.
               if (IsWindowVisible (hwndStatusBar))
                    {
                    GetWindowRect (hwndStatusBar, &rWindow) ;
                    cyStatus = rWindow.bottom - rWindow.top ;
                    MoveWindow (hwndStatusBar, 0, cy - cyStatus, 
                                              cx, cyStatus, TRUE) ;
                    }
               else
                    {
                    cyStatus = 0 ;
                    }

               // Adjust client window size.
               x = 0 ;
               y = cyTB ;
               cy -= cyStatus + cyTB;
               MoveWindow (hwndClient, x, y, cx, cy, TRUE) ;
               return 0;
               }

		  case WM_COPYDATA:
			  {
                  COPYDATASTRUCT *pcds = (COPYDATASTRUCT*)lParam;
				  LoadFromCommandLine((char *)pcds->lpData);
                  return 0;
			  }

          default:
               return (EditDefProc (hwnd, mMsg, wParam, lParam)) ;
          }
     return DefWindowProc (hwnd, mMsg, wParam, lParam) ;
     }