![]() |
Некоторые проблемы с установкой нашей программы поверх всех окон
Делаю вот так:
Код:
SetWindowPos(Form1::Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE); Код:
error C2664: 'SetWindowPos' : cannot convert parameter 1 from 'System::IntPtr' to 'HWND' Ну задача вот такая: установить форму нашей программы поверх всех других окон, даже поверх "Пуска". Использую Microsoft Visual Studio 2005 (Windows Form Application). Спасибо за помощь! |
crashtuak, если проект WinForm (то есть с использованием .NET Framework) лучше использовать строчку кода Form1::TopMost = true;
А для Win32 подхода, по которому уже должна быть прописана функция SetWindowPos (кстати если окно необходимо просто на время вывести поверх всех окон, то тогда лучше использовать SetForegroundWindow), компилятор всё правильно говорит, так как HWND (дескриптор окна) и Handle (дескриптор объекта) разные вещи. Если всё же интересен и Win32 подход нужно заполучить HWND формы. Это можно сделать, ну скажем Win32 функцией FindWindow. P.S. Для VB.NET, коллеге по цеху WinForm, позволительно использовать и Handle, вместо hwnd, объекта Me, в качестве аргумента упомянутой функции SetForegroundWindow. http://forum.oszone.net/post-1092960.html#post1092960 |
Admiral, спасибо, ваши советы мне помогли. Решил получить HWND формы с помощью FindWindow, далее в ход пошла SetWindowPos, с помощью которой я заодно и задал нужные размеры и позицию окна(убил сразу трех зайцев:)).
|
crashtuak, между прочим, размер и положение формы можно так же задать и WinForm средствами
Form1::Size::set (System::Drawing::Size(720, 576)); Form1::DesktopLocation::set (System::Drawing::Point(50, 20)); Но это как будет удобнее, дело вкуса. :) |
Время: 02:30. |
Время: 02:30.
© OSzone.net 2001-