Esempio n. 1
0
INT_PTR DlgAbout::TabInfo::dlg_proc(UINT message, WPARAM wParam, LPARAM lParam)
{
static HWND TT_URL[1];

	switch(message)
	{
	case WM_INITDIALOG:
		assert(sizeof(DlgAbout::TabInfo::URL_GITHUB) <= L_MAX_URL_LENGTH);

		LITEM item;
		item.mask = LIF_ITEMINDEX | LIF_URL;
		item.iLink = 0;

		wcscpy(item.szUrl, URL_GITHUB);
		SendDlgItemMessage(this->window, LnkAboutGithub, LM_SETITEM, NULL, reinterpret_cast<LPARAM>(&item));

		TT_URL[0] = CreateTooltip(GetDlgItem(this->window, LnkAboutGithub), DlgAbout::TabInfo::URL_GITHUB, false, this->instance);

		SetDlgItemText(this->window, StVersionFireFly, FireFly::VERSION);
		break;

	case WM_NOTIFY:
		{
		const NMHDR* nmHdr = reinterpret_cast<const NMHDR*>(lParam);
		assert(nmHdr);
		switch(nmHdr->code)
		{
			case NM_CLICK:  // mouse
			case NM_RETURN: // keyboard
			{
				const NMLINK* nmLink = reinterpret_cast<const NMLINK*>(nmHdr);
				LITEM item = nmLink->item;

				assert((nmHdr->hwndFrom == GetDlgItem(this->window, LnkAboutAS)) || (nmHdr->hwndFrom == GetDlgItem(this->window, LnkAboutSC)));
				//assert(item.iLink == 0);

				ShellExecute(NULL, L"open", item.szUrl, NULL, NULL, SW_SHOW);
				break;
			}
		}
		}
		break;

	case WM_DESTROY:
		for(int i = 0; i < _countof(TT_URL); i++)
		{
			DestroyWindow(TT_URL[i]);
		}
		break;

	default:
		return false;
	}

	return true;
}
void EmoticonsSelectionLayout::CreateEmoticonToolTip(Emoticon *e, RECT fr)
{
	Buffer<TCHAR> tt;
	if (e->description[0] != _T('\0'))
	{
		tt += _T(" ");
		tt += e->description;
		tt.translate();
		tt += _T(" ");
	}

	for(int k = 0; k < e->texts.getCount(); k++)
	{
		tt += _T(" ");
		tt += e->texts[k];
		tt += _T(" ");
	}
	tt.pack();

	e->tt = CreateTooltip(hwnd, fr, tt.str);
}
// Build the user interface
BOOL BuildUI()
{

    //-------------//
    // Main Window //
    //-------------//
    WNDCLASS wc;

    wc.style = CS_VREDRAW | CS_HREDRAW;
    wc.lpfnWndProc = ShideWin_WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hThisInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = "ShideWin";

    RegisterClass(&wc);

    hMainWin = CreateWindow(
                   "ShideWin",                     // Class Name
                   "ShideWin",                     // Title
                   WS_OVERLAPPEDWINDOW,            // Style
                   CW_USEDEFAULT, CW_USEDEFAULT,   // Position
                   300, 354,                       // Size
                   NULL,                           // Parent
                   NULL,                           // Use class menu
                   hThisInstance,                          // Instance
                   0);                             // No special parameters

    if (!hMainWin)
        return FALSE;


    //---------//
    // Listbox //
    //---------//
    hListbox = CreateWindow(
                   "LISTBOX",
                   "lstHandle",
                   WS_CHILD | LBS_HASSTRINGS | LBS_MULTIPLESEL | LBS_STANDARD |  LBS_NOINTEGRALHEIGHT,
                   0, 0,
                   150, 300,
                   hMainWin,
                   NULL,
                   hThisInstance,
                   0);

    if (!hListbox)
        return FALSE;

    wpOrigListboxProc = (WNDPROC) SetWindowLong(hListbox, GWL_WNDPROC, (LONG) Listbox_WndProc);
    /*
    	HFONT hLstFont = CreateFont(13, 0, 0, 0, 0, 0, 0, 0, DEFAULT_CHARSET,
    		OUT_DEFAULT_PRECIS,
    		CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, FF_DONTCARE, "Tahoma");
    	SendMessage(hListbox, WM_SETFONT, (UINT)hLstFont, 1);
    */

    ShowWindow(hListbox, SW_NORMAL);
    ShowWindow(hMainWin, SW_NORMAL);

    CreateTooltip();

    return TRUE;
}