이 광현
Hyun's
이 광현
전체 방문자
오늘
어제
  • 분류 전체보기 (30)
    • 일상생활 (0)
      • 골프 (0)
    • 언어&프레임워크 (29)
      • 파이썬 (0)
      • Go (0)
      • C++ (1)
      • C# (13)
      • Android (4)
      • SIP (3)
      • Embedded (2)
      • DirectShow (6)
    • 서드파티 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 애뮬레이터
  • 서비스팩1 파일 제거
  • C# #define 사용하기
  • 닷넷 2010
  • 다이렉트쇼
  • gitlab
  • c#
  • 버젼확인
  • 사용 포트
  • 윈도우 비스타
  • 무료 소스
  • JAVA sIP
  • 스크립트 에러
  • 윈도우버젼
  • 필터와 그래프
  • ini 파일 사용
  • Border없는 Form만들고 이동시키기
  • 커널 및 make
  • gitlab 502
  • typedef 및 #define
  • NET Compact Framework v3.5
  • 삼성전자 SDK
  • SIP
  • DVK270
  • 클래스
  • 안드로이드
  • SIP참조
  • 부트로더LED
  • 윈도우모바일
  • 비정형 윈도우창

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
이 광현

Hyun's

언어&프레임워크/C#

Border없는 Form만들고 이동시키기

2009. 4. 6. 23:55

폼을 만드는 경우 상단 FormBorderStyle을 None로 적용 하게 되는 경우가 있습니다.

 

대게 디자이너들이 원하는 경우가 많죠

 

이럴 경우 상단이든 어디든 원하는 디자인으로 만들수 있기 때문에 상당히 유용하긴 하지만...

 

역시 귀찮다는거는 어쩔수 없죠

 

디자이너에 요구사항에 맞춰주기 위해서 한번 해보겠습니다.

 

상단바가 없어졌기 때문에 저는 그부분을 pictureBox로 대체 하였습니다.

 

그리고 그 pictureBox를 이동하는대 사용하기 위해서 API를 사용하였습니다..

 

이렇게 하는대 API를 사용한 이유는 코드도 간단 하고 더 빨라 보이더라구요

 

일단 선언부에

 

using System.Runtime.InteropServices;

 

해줘야 쓰겠죠 ㅎㅎ

 

그리고 전역에는 이런걸 써줬습니다.

 

public const int WM_NCLBUTTONDOWN = 0xA1;


public const int HT_CAPTION = 0x2;

 

[DllImportAttribute("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

 

[DllImportAttribute("user32.dll")]
public static extern bool ReleaseCapture();

 

그리고 마지막으로 pictureBox에 이런 이벤트를 주었습니다.

 

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Left)
     {
         ReleaseCapture();
         SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
     }
 }

 

이렇게 해주면 pictureBox가 마치 상단바인것 처럼 폼이 이동하는걸 보실수 있겠습니다.

 

그리고는

 

// 창최소화 버튼

private void BtnMini_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized;
}

 

// 창최대화 버튼

private void BtnMini_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Maximized;
}

 

// 창 닫기 버튼

private void BtnExit_Click(object sender, EventArgs e)
{
    this.Close();
}

 

요런놈들을 만들어서 pictureBox 우측상단에 넣어주면 Border없는 Form이 완성됩니다.

[출처] Border없는 Form만들고 이동시키기|작성자 코아란

저작자표시 비영리 변경금지 (새창열림)
    '언어&프레임워크/C#' 카테고리의 다른 글
    • 윈도우 버젼 확인하는 방법(C#)
    • 비정형 윈도우 만들기
    • 주요 프로그램 포트
    • [INI_Chapter3] C#에서 INI관련 함수 사용하기 2번째
    이 광현
    이 광현
    Korea Developer

    티스토리툴바