Можете нарисовать прямоугольник, охватывающий бар Титал через форму MDI в Windows 10 развертывание
В моем проекте я должен отобразить часы над формой MDI, для которой я переопределил
WndProcспособ и далее
WM_NCPAINTЯ создаю прямоугольник, заполняющий его и отображающий текст даты над ним.
При запуске это прекрасно работает над пользователями, имеющими машины с Windows 7, но когда я развернул то же самое приложение над Windows 10, все, что они могут видеть, - это линия вместо прямоугольника.
Что я делаю не так или что-то другое нужно сделать над Windows 10.
Пожалуйста, предложите.
Что я уже пробовал:
private void Main_OnNcPaint(ref Message m) { paintTitleBar = m; IntPtr hdc = GetWindowDC(m.HWnd); Graphics g = Graphics.FromHdc(hdc); RectangleF titleBarRectF = g.VisibleClipBounds; int formWidth = (int)titleBarRectF.Width; int CaptionHeight = Bounds.Height - ClientRectangle.Height; Size CloseButtonSize = SystemInformation.CaptionButtonSize; int X = formWidth - (CloseButtonSize.Width * 4) - 200; int Y = 4; int width = 200; int height = CaptionHeight - 10; string dateText; dateText = DateTime.Now.ToString("dd MMM yyyy hh:mm:ss tt"); RectangleF timeDisplayRectF = new RectangleF(X, Y, width, height); g.FillRectangle(new SolidBrush(Color.Black), timeDisplayRectF); Font font = new Font(Font.FontFamily, Font.Size + 2, FontStyle.Bold); g.DrawString(dateText, font, new SolidBrush(Color.White), timeDisplayRectF); g.Dispose(); ReleaseDC(m.HWnd, hdc); m.Result = IntPtr.Zero; }
Gerry Schmitz
Это бессмысленный "взлом". Придерживайтесь работы с элементами управления в клиентской области.
honeyashu
Спасибо, Джерри. Я согласен, но требование заключается в том, что я должен отобразить панель часов в верхнем углу моего приложения, так что взлом.
Gerry Schmitz
Проверьте свой окончательный рост. Не ожидайте, что Win 10 "defaults" всегда будет соответствовать Win 7/8.
"int height = CaptionHeight - 10;"
honeyashu
Пытался. Но не сработало.