public void ShowAll(bool useDummy) { /// NotifyIconクリック時は一旦dummyをアクティブ化しないと /// 非アクティブ時にShowWindow()でfusenが前に出てこない var dummy = default(Form); if (useDummy) { dummy = new Form(); dummy.ShowInTaskbar = false; dummy.StartPosition = FormStartPosition.Manual; dummy.Location = new Point(-2000, -2000); dummy.Size = new Size(); dummy.WindowState = FormWindowState.Minimized; dummy.Show(); dummy.Activate(); } foreach (var fusen in _infoToForms.Values) { //User32PI.SetForegroundWindow(fusen.Handle); User32PI.ShowWindow(fusen.Handle, WindowShowStyle.ShowNoActivate); } if (dummy != null) { dummy.Dispose(); } }
private void UpdateCaretPosition() { if (_isCaretCreated) { var pos = _positionTranslator == null? _position: _positionTranslator(_position); User32PI.SetCaretPos(pos.X, pos.Y); //User32PI.SetCaretPos(_position.X, _position.Y); } }
protected override void OnActivated(EventArgs e) { base.OnActivated(e); if (_isShown && _toolStripForm != null) { RelocateToolStripForm(); User32PI.ShowWindow(_toolStripForm.Handle, WindowShowStyle.ShowNoActivate); } }
protected override void RefreshEditor(RefreshContext context, MemoFileFigure figure, MemoFile model) { var path = model.Path; if (model.IsEmbedded) { path = Path.Combine(MemopadConsts.EmbeddedFileRoot, path); } var icon = default(Icon); var hIcon = IntPtr.Zero; if (File.Exists(path) || Directory.Exists(path)) { /// アイコン取得 var shinfo = new SHFILEINFO(); var flags = model.IsEmbedded? ShellGetFileInfoFlags.Icon: ShellGetFileInfoFlags.Icon | ShellGetFileInfoFlags.LinkOverlay; var hSuccess = Shell32PI.SHGetFileInfo( path, 0, ref shinfo, (int)Marshal.SizeOf(shinfo), flags ); if (hSuccess != IntPtr.Zero) { hIcon = shinfo.hIcon; icon = Icon.FromHandle(hIcon); } else { icon = SystemIcons.Error; } } else { icon = SystemIcons.Error; } var desc = new IconImageDescription(icon); if (hIcon != IntPtr.Zero) { User32PI.DestroyIcon(hIcon); } figure.Text = string.IsNullOrEmpty(model.Name)? model.Path: model.Name; figure.ImageDesc = desc; figure.AdjustSize(); UpdateMemoMarkHandles(model); }
private void UpdateCaretSize() { if (_isCaretCreated) { User32PI.DestroyCaret(); User32PI.CreateCaret(_control.Handle, IntPtr.Zero, _size.Width, _size.Height); if (_isCaretShown) { User32PI.ShowCaret(_control.Handle); } } }
public void OpenMemo(MemoInfo info, bool background, bool enabled) { if (_content != null && info == _content.MemoInfo) { return; } _content = CreateMemoPageContent(info); _content.SetCompact(true); var canvas = _content.EditorCanvas; MemoSerializeUtil.LoadEditor(canvas, info.MementoId); _content.Memo.AccessedDate = DateTime.Now; _content.Enabled = enabled; Controls.Add(_content); var caret = canvas.Caret; caret.Position = MemopadConsts.DefaultCaretPosition; caret.Show(); canvas.RootEditor.Content.RequestSelect(SelectKind.True, true); canvas.Select(); var app = MemopadApplication.Instance; var memo = app.Container.Find <Memo>(_MemoInfo.MemoId); var bytes = app.Container.LoadExtendedBinaryData(memo, "FusenBounds"); var bounds = Rectangle.Empty; if (bytes != null) { StartPosition = FormStartPosition.Manual; bounds = (Rectangle)BinaryFormatterUtil.FromBytes(bytes); Bounds = bounds; } Text = _content.Title; Show(); if (bytes != null) { /// なぜかShow()でHeightが+2されてしまうのでもう一度設定 Bounds = bounds; } if (background) { User32PI.SetActiveWindow(MemopadApplication.Instance.MainForm.Handle); } InitToolStripForm(!background); }
// ------------------------------ // private // ------------------------------ private void InitToolStripForm(bool show) { _toolStripForm = new ToolStripForm(); _toolStripForm.TargetForm = this; InitDropDowns(); InitMemoMarkToolStripSplitButton(); InitToolStripHandlers(); if (_toolStripForm._fontNameToolStripComboBox.Items.Count == 0) { _UILogic.InitFontNameToolStripComboBox(_toolStripForm._fontNameToolStripComboBox.ComboBox); _UILogic.InitFontSizeToolStripComboBox(_toolStripForm._fontSizeToolStripComboBox.ComboBox); } RelocateToolStripForm(); UpdateToolStrip(); if (show) { User32PI.ShowWindow(_toolStripForm.Handle, WindowShowStyle.ShowNoActivate); } }
// ======================================== // constructor // ======================================== public MarkSelectTextBox() { ReadOnly = true; var bspec = new ButtonSpecAny(); bspec.Image = Resources.chevron_expand; bspec.Click += HandleSelectButtonSpecClick; ButtonSpecs.Add(bspec); bspec = new ButtonSpecAny(); bspec.Type = PaletteButtonSpecStyle.Close; bspec.Click += HandleCloseButtonSpecClick; ButtonSpecs.Add(bspec); TextBox.MouseClick += (se, ev) => { ShowMarkSelectForm(); }; TextBox.GotFocus += (se, ev) => { User32PI.HideCaret(TextBox.Handle); }; UpdateText(); }
// ======================================== // constructor // ======================================== public PageContent(MemoInfo info) { InitializeComponent(); DoubleBuffered = true; ResizeRedraw = true; _facade = MemopadApplication.Instance; _info = info; _titleTextBox.Text = _info.Title; Memo = _facade.Container.Find <Memo>(info.MemoId); _tagSelectorToolStripItem = new TagSelectorToolStripItem(_memo); _selectTagContextMenuStrip.AutoClose = false; _dateLabelWidth = _modifiedDateLabel.Width; _isInMemoSearcherShown = false; _keyMap = new KeyMap <PageContent>(); if (!DesignMode) { DefineAdditionalKeyMap(_keyMap); } _titleTextBoxKeyMap = new KeyMap <TextBox>(); _sourceTextBoxKeyMap = new KeyMap <TextBox>(); if (!DesignMode) { _facade.KeySchema.PageContentTitleTextBoxKeyBinder.Bind(_titleTextBoxKeyMap); _facade.KeySchema.PageContentTitleTextBoxKeyBinder.Bind(_sourceTextBoxKeyMap); } _tagTextBox.GotFocus += (se, ev) => { User32PI.HideCaret(_tagTextBox.Handle); }; }
public static IEnumerable <IEditor> PasteMetafile(IEditor editor, Point location, string description) { var meta = default(Metafile); var hWnd = MemopadApplication.Instance.MainForm.Handle; if (User32PI.OpenClipboard(hWnd)) { try { if (User32PI.IsClipboardFormatAvailable(ClipboardFormat.CF_ENHMETAFILE) != 0) { var hMeta = User32PI.GetClipboardData(ClipboardFormat.CF_ENHMETAFILE); meta = new Metafile(hMeta, false); } } finally { User32PI.CloseClipboard(); } } if (meta == null) { return(EmptyEditors); } return(AddMetafile(editor, location, meta, false, false)); }
private void HideCaret() { User32PI.HideCaret(_control.Handle); _isCaretShown = false; }
private void ShowCaret() { User32PI.ShowCaret(_control.Handle); _isCaretShown = true; }
private void DestroyCaret() { User32PI.DestroyCaret(); _isCaretCreated = false; }
// ------------------------------ // private // ------------------------------ private void CreateCaret() { User32PI.CreateCaret(_control.Handle, IntPtr.Zero, _size.Width, _size.Height); _isCaretCreated = true; }
// ======================================== // method // ======================================== private ContextMenuStrip CreateNotifyIconContextMenu() { var items = new List <ToolStripItem>(16); var newMemo = new ToolStripMenuItem(); newMemo.Text = "ノートを作成(&N)"; newMemo.Click += (sender, e) => { CreateMemo(); }; items.Add(newMemo); var newFusenMemo = new ToolStripMenuItem(); newFusenMemo.Text = "付箋ノートを作成(&F)"; newFusenMemo.Click += (sender, e) => { CreateFusenMemo(); }; items.Add(newFusenMemo); var clipMemo = new ToolStripMenuItem(); clipMemo.Text = "ノートにクリップ(&C)"; clipMemo.Click += (sender, e) => { var mainForm = _app.MainForm; var hWnd = User32PI.GetWindow( mainForm.Handle, GetWindowCmd.GW_HWNDFIRST ); hWnd = User32Util.GetNextWindow( hWnd, handle => { if (User32PI.IsWindowVisible(handle) && !User32Util.IsOwnedWindow(handle)) { var cname = User32Util.GetWindowClassName(handle); return (!string.Equals(cname, "Shell_TrayWnd", StringComparison.OrdinalIgnoreCase) && !string.Equals(cname, "NotifyIconOverflowWindow", StringComparison.OrdinalIgnoreCase)); } else { return(false); } } ); var oldTopMost = mainForm.TopMost; mainForm.TopMost = false; if (hWnd != IntPtr.Zero) { User32Util.ActivateWindow(hWnd); Thread.Sleep(1000); } _app.ClipAndCreateMemo(); mainForm.TopMost = oldTopMost; }; items.Add(clipMemo); var capture = new ToolStripMenuItem(); capture.Text = "画面を取り込み(&D)"; capture.Click += (sender, e) => { Thread.Sleep(500); _app.CaptureAndCreateMemo(); }; items.Add(capture); items.Add(new ToolStripSeparator()); var searchMemo = new ToolStripMenuItem(); searchMemo.Text = "ノートを検索(&S)"; searchMemo.Click += (sender, e) => { _app.ShowMainForm(); _app.ActivateMainForm(); var form = _app.MainForm; if (form != null) { form.FocusConditionTextBox(); } }; items.Add(searchMemo); var activate = new ToolStripMenuItem(); activate.Text = "アクティブにする(&A)"; activate.Click += (sender, e) => { ShowMainForm(); }; items.Add(activate); var showAllFusens = new ToolStripMenuItem(); showAllFusens.Text = "付箋ノートを表示(&F)"; showAllFusens.Click += (sender, e) => { ShowFusenForms(false); }; items.Add(showAllFusens); items.Add(new ToolStripSeparator()); var action = new ToolStripMenuItem(); action.Text = "アイコンの動作(&A)"; items.Add(action); { var click = new ToolStripMenuItem(); click.Text = "クリック(&C)"; action.DropDown.Items.Add(click); InitClickSetting(click); } { var dclick = new ToolStripMenuItem(); dclick.Text = "ダブルクリック(&D)"; action.DropDown.Items.Add(dclick); InitDoubleClickSetting(dclick); } items.Add(new ToolStripSeparator()); var exitItem = new ToolStripMenuItem(); exitItem.Text = "終了(&X)"; exitItem.Click += (sender, e) => { _app.Exit(); }; items.Add(exitItem); var ret = new ContextMenuStrip(); ret.SuspendLayout(); ret.Items.AddRange(items.ToArray()); ret.ResumeLayout(); return(ret); }