https://jeak.tistory.com/233

 

MFC MoveWindow - 컨트롤 위치 및 크기 변경

MFC MoveWindow MFC에서 사용하는 control들의 위치와 크기를 변경하는 movewindow함수에 대해 알아보겠습니다. 1 2 3     void MoveWindow(int x, int y, int nWidth, int nHeight,         ..

jeak.tistory.com

 

https://balabala.tistory.com/45?category=947457 

 

[MFC] 채팅 프로그램 - 클라이언트 (2/3)

- 설명 - 프로젝트 명 : ChatClient(대화 상자) ① CSocket 클래스 이용 : 동기식(블로킹)으로 동작 ② 서버 클라이언트 1:1 통신 ③ 해당 글은 클라이언트 채팅 프로그램 만드는 법 설명 1. MFC 애플리케이

balabala.tistory.com


[따라하다가 안되던 부분들]

2. 다이얼로그 디자인 및 ID

형식을 CString 으로 하니 에러가 나서 CEdit, CStatic으로 변경했다. 

Control을 다루는 부분도 형식에 따라서 변경했다.

그림3. 멤버변수 설정

 

7. [접속] 및 [전송] 버튼 클릭 메시지 함수 작업

위 작업대로 형식에 맞게 메세지 함수 소스 코드 수정

void CChatClientDlg::OnBnClickedButtonConnect()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	CString strIP;

	UpdateData(TRUE);
	m_socCom.Create();

	m_strIP.GetWindowText(strIP);

	// IP 주소와 포트 번호를 지정
	m_socCom.Connect(strIP, 5000);
	m_socCom.Init(this->m_hWnd);

}

void CChatClientDlg::OnBnClickedButtonSend()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	UpdateData(TRUE);
	char pTmp[256];
	CString strTmp, strText;
	CStringA strTextA;

	m_strSend.GetWindowText(strText);

	strTextA = CStringA(strText);

	// pTmp에 전송할 데이터 입력
	memset(pTmp, '\0', 256);
	memcpy(pTmp, strTextA.GetBuffer(), strTextA.GetLength());
	m_strSend.Clear();

	// 전송
	m_socCom.Send(pTmp, 256);

	// 전송한 데이터도 리스트박스에 보여준다.
	strTmp = pTmp;
	int i = m_list.GetCount();
	m_list.InsertString(i, strTmp);

	UpdateData(FALSE);
}
https://balabala.tistory.com/44?category=947457 
 

[MFC] 채팅 프로그램 - 서버 (1/3)

- 설명 - 프로젝트 명 : ChatServer(대화 상자) ① CSocket 클래스 이용 : 동기식(블로킹)으로 동작 ② 서버 클라이언트 1:1 통신 ③ 해당 글은 서버용 채팅 프로그램 만드는 법 설명 1. MFC 애플리케이션

balabala.tistory.com


[따라하다가 안되던 부분들]

2. 다이얼로그 디자인 및 ID

 

형식을 CString 으로 하니 에러가 나서 CEdit, CStatic으로 변경했다. 

Control을 다루는 부분도 형식에 따라서 변경했다.

그림3. 멤버변수 설정

10. [전송] 버튼 클릭 메시지 함수 작업

위 작업에 따라서 메세지 함수 소스 코드 변경

void CChatServerDlg::OnBnClickedButtonSend()
{
	// TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.
	UpdateData(TRUE);
	char pTmp[256];
	CString strTmp, strText;
	CStringA strTextA;

	m_strSend.GetWindowText(strText);

	strTextA = CStringA(strText);

	// pTmp에 전송할 데이터 입력
	memset(pTmp, '\0', 256);
	memcpy(pTmp, strTextA.GetBuffer(), strTextA.GetLength());
	m_strSend.Clear();

	// 전송
	m_socCom->Send(pTmp, 256);

	// 전송한 데이터도 리스트박스에 보여준다.
	strTmp = pTmp;
	int i = m_list.GetCount();
	m_list.InsertString(i, strTmp);

	UpdateData(FALSE);
}

 

 

방법 ①  ShowWindow함수 사용

//OnInitDialog() 부분에 추가하면 된다.

 

원형 : BOOLL_stdcall ShowWindow(HWND hWnd, int nCmdShow);

설명 : 지정된 윈도우의 표시 상태를 설정한다.

반환 : 성공여부를 반환한다.

매개변수 

 - HWND hWnd : 대상 윈도우 핸들

 - nCmdWhow : 지정하고자 하는 보이기 상태. 이 값에 따라 최소화, 최대화 혹은 보통 상태로 시작

 

SW_SHWO : 윈도우를 활성화하며 보인다.

SW_SHOWMAXMIZED : 윈도우를 최대화된 상태로 활성화 한다.

SW_SHOWMINMIZED : 윈도우를 최소화한 상태로 활성화 한다.

SW_HIDE : 윈도우를 숨긴다.

SW_SHOWNOACTIVATE : 최근 크기와 위치에 윈도우를 보이며 활성화 상태는 변경되지 않는다.


방법 

//OnInitDialog() 부분에 추가하면 된다.

-> 제목 표시줄 삭제

LONG style = ::GetWindowLong( m_hWnd, GWL_STYLE );

style &= ~WS_CAPTION;
style &= ~WS_SYSMENU;

::SetWindowLong( m_hWnd, GWL_STYLE, style );
int screenx = GetSystemMetrics( SM_CXSCREEN );
int screeny = GetSystemMetrics( SM_CYSCREEN );

// resize:
SetWindowPos( NULL, -4, -4, screenx+8, screeny+4, SWP_NOZORDER );

출처 : https://gdnn.tistory.com/117

출처 : https://godtory.tistory.com/27

출처 :https://pkss.tistory.com/entry/%EB%8B%A4%EC%9D%B4%EC%96%BC%EB%A1%9C%EA%B7%B8-%EC%A0%84%EC%B2%B4%ED%99%94%EB%A9%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0

+ Recent posts