0
바탕 화면에 항상있는 것과 같은 작은 창을 갖고 싶습니다. 바탕 화면 가젯이 Windows에서 단종되었으므로 (바탕 화면에 항상있는 두 개의 버튼이 있습니다) 다른 하드 코드 대안은 그렇게 할 수 있습니까?Windows에서 바탕 화면 가젯 대안
바탕 화면에 항상있는 것과 같은 작은 창을 갖고 싶습니다. 바탕 화면 가젯이 Windows에서 단종되었으므로 (바탕 화면에 항상있는 두 개의 버튼이 있습니다) 다른 하드 코드 대안은 그렇게 할 수 있습니까?Windows에서 바탕 화면 가젯 대안
네, 가능하지만 약간의 작업이 필요합니다. 프로세스 개요 :
ShowInTaskbar
속성을 false로 설정하면 작업 표시 줄에 나타나지 않습니다.BorderStyle
속성을 없음으로 설정하십시오. 캡션 표시 줄, 최소화/최대화 단추 등을 편리하게 제거 할 수도 있습니다.WM_WINDOWPOSCHANGING
메시지를 처리하므로 Z 축의 맨 아래에 창을 유지할 수 있습니다. 주문.WM_NCHITTEST
메시지를 처리하십시오. HTCAPTION
을 반환하면 마우스와 같은 시스템 동작이 양식의 캡션 표시 줄에 나타납니다.간단한 데모로, false로 설정 ShowInTaskbar
속성, 양식을 작성하고, 없음 BorderStyle
세트. 그런 다음 다음 코드를 추가하십시오.
static readonly IntPtr HWND_BOTTOM = new IntPtr(1);
private const int WM_NCHITTEST = 0x0084;
private const int WM_WINDOWPOSCHANGING = 0x0046;
private const int HTCAPTION = 2;
private const int HTCLIENT = 1;
private struct WINDOWPOS
{
public IntPtr hwnd;
public IntPtr hwndInsertAfter;
public int x;
public int y;
public int cx;
public int cy;
public uint flags;
}
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCHITTEST)
{
m.Result = new IntPtr(HTCAPTION);
return;
}
else if (m.Msg == WM_WINDOWPOSCHANGING)
{
WINDOWPOS posInfo = Marshal.PtrToStructure<WINDOWPOS>(m.LParam);
posInfo.hwndInsertAfter = HWND_BOTTOM;
Marshal.StructureToPtr(posInfo, m.LParam, true);
}
base.WndProc(ref m);
}