Windows 인터페이스 프로 그래 밍 여섯 번 째 애니메이션 시작 효과(애니메이션 효과 표시 및 창 숨 기기)
전재 출처,원문 주소:http://blog.csdn.net/morewindows/article/details/8656068
웨 이 보 에 오신 것 을 환영 합 니 다:http://weibo.com/MoreWindows
앞에서 이미 다섯 편의 글 이 윈도 인터페이스 프로 그래 밍 을 소 개 했 는데 디 렉 터 리 는 다음 과 같다.
1.<윈도 인터페이스 프로 그래 밍 첫 번 째 비트 맵 배경 과 비트 맵 브러시>
2.
3.<윈도 인터페이스 프로 그래 밍 제3 편 이 형 창 일반 판>
4.<윈도 인터페이스 프로 그래 밍 제4 편 이 형 창 고부 멋 판>
5.
다음은 세 편 을 더 하 겠 습 니 다.각각:
1.Windows 인터페이스 프로 그래 밍 여섯 번 째 애니메이션 시작 효과(애니메이션 효과 표시 및 창 숨 기기)
2.Windows 인터페이스 프로 그래 밍 일곱 번 째 파일 드래그(파일 드래그)
3.Windows 인터페이스 프로 그래 밍 8 편 listbox 컬러 디 스 플레이 격 행 변색
애니메이션 효과 표시 및 창 숨 기기 및 프로그램 인터페이스 크게 미화,QQ 와 같은 로그 인 창 도 애니메이션 효과 표시 및 창 숨 기기 사용.
이'윈도 인터페이스 프로 그래 밍 여섯 번 째 애니메이션 시작 효과(애니메이션 효과 표시 및 창 숨 기기)'는 숨겨 진 창 을 애니메이션 효과 로 표시 하 는 방법 을 소개 합 니 다.코드 재 활용 을 편리 하 게 하기 위해 서 저 는 창 애니메이션 효과 류 로 봉 인 했 습 니 다.먼저 이 창 애니메이션 효과 류 의 실현 을 살 펴 보 겠 습 니 다.
헤더 파일 CAnimateWindow.h
#pragma once
//Windows ( )
// http://blog.csdn.net/morewindows/article/details/8656068
//By MoreWindows-(http://blog.csdn.net/MoreWindows)
class CAnimateWindow
{
public:
CAnimateWindow(HWND hwnd = NULL);
void SetWindowHwnd(HWND hwnd);
HWND GetWindowHwnd();
BOOL AnimateWindow(DWORD dwTime = 400, BOOL bShow = TRUE, BOOL bSlide = TRUE);
private:
int GetRandomNumber();
private:
int m_nAnimateType;
HWND m_hwndWindow;
};
CPP 파일 CAnimateWindow.cpp
//Windows ( )
// http://blog.csdn.net/morewindows/article/details/8656068
//By MoreWindows-(http://blog.csdn.net/MoreWindows)
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include "CAnimateWindow.h"
CAnimateWindow::CAnimateWindow(HWND hwnd)
{
m_hwndWindow = hwnd;
m_nAnimateType = GetRandomNumber();
}
void CAnimateWindow::SetWindowHwnd(HWND hwnd)
{
m_hwndWindow = hwnd;
}
HWND CAnimateWindow::GetWindowHwnd()
{
return m_hwndWindow;
}
BOOL CAnimateWindow::AnimateWindow(DWORD dwTime, BOOL bShow, BOOL bSlide)
{
DWORD dwFlags;
dwFlags = bShow ? AW_ACTIVATE : AW_HIDE;
dwFlags |= bSlide ? AW_SLIDE : AW_BLEND;
if (m_nAnimateType == 0)
dwFlags |= AW_HOR_POSITIVE;
else if (m_nAnimateType == 1)
dwFlags |= AW_VER_POSITIVE;
else
dwFlags |= AW_CENTER;
return ::AnimateWindow(m_hwndWindow, dwTime, dwFlags);
}
int CAnimateWindow::GetRandomNumber()
{
srand((UINT)time(NULL));
return rand() % 3;
}
코드 는 매우 간단 합 니 다.주로 AnimateWindow 함 수 를 사용 합 니 다.이 함수 의 함수 원형 은 다음 과 같다.
BOOLAnimateWindow(
HWNDhwnd,
DWORDdwTime,
DWORDdwFlags
);
이 함수 도 매우 간단 합 니 다.세 개의 매개 변 수 는 하 나 는 창 핸들 을 나타 내 고 하 나 는 애니메이션 지속 시간(밀리초)을 나타 내 며 마지막 매개 변 수 는 애니메이션 효 과 를 나타 냅 니 다.다음 인자 가 있 을 수 있 습 니 다:
AW_SLIDE
Uses slide animation. By default, roll animation is used. This flag is ignored when used with AW_CENTER.
AW_ACTIVATE
Activates the window. Do not use this value with AW_HIDE.
AW_BLEND
Uses a fade effect. This flag can be used only if hwnd is a top-level window.
AW_HIDE
Hides the window. By default, the window is shown.
AW_CENTER
Makes the window appear to collapse inward if AW_HIDE is used or expand outward if the AW_HIDE is not used. The various direction flags have no effect.
AW_HOR_POSITIVE
Animates the window from left to right. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.
AW_HOR_NEGATIVE
Animates the window from right to left. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.
AW_VER_POSITIVE
Animates the window from top to bottom. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.
AW_VER_NEGATIVE
Animates the window from bottom to top. This flag can be used with roll or slide animation. It is ignored when used with AW_CENTER or AW_BLEND.
매개 변수 가 좀 많 지만 요약 하면 수평 방향,수직 방향,안에서 밖으로 또는 밖에서 안 으로 나 누 는 몇 가지 로 나 눌 수 있다.
다음은 이 애니메이션 디 스 플레이 창 클래스 의 사용 사례 를 보 여 줍 니 다.
코드 에 있 는 CenterWindow 는 창 을 가운데 로 표시 하 는 데 사 용 됩 니 다.이 함수 의 GetSystemMetrics(SMCXSCREEN);GetSystem Metrics(SMCYSCREEN);'VC++화면 크기 가 져 오기 첫 번 째 픽 셀 크기 GetSystem Metrics'를 참고 할 수 있 습 니 다.
//Windows ( )
// http://blog.csdn.net/morewindows/article/details/8656068
//By MoreWindows-(http://blog.csdn.net/MoreWindows)
#include "stdafx.h"
#include "resource.h"
#include "CAnimateWindow.h"
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);
//
void CenterWindow(HWND hwnd);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
return 0;
}
BOOL CALLBACK DlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
static HBRUSH s_hBrushDlgBackGround;
static CAnimateWindow s_aw;
switch (message)
{
case WM_INITDIALOG:
{
SetWindowText(hDlg, " - MoreWindows");
//
HINSTANCE hinstance = (HINSTANCE)GetWindowLong(hDlg, GWL_HINSTANCE);
HBITMAP hBitmap = LoadBitmap(hinstance, MAKEINTRESOURCE(IDB_BITMAP1));
s_hBrushDlgBackGround = CreatePatternBrush(hBitmap);
CenterWindow(hDlg);
s_aw.SetWindowHwnd(hDlg);
s_aw.AnimateWindow(600);
}
return FALSE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
case IDCANCEL:
s_aw.AnimateWindow(400, FALSE);
EndDialog(hDlg, FALSE);
return TRUE;
}
break;
case WM_CTLCOLORDLG:
return (BOOL)s_hBrushDlgBackGround;
}
return FALSE;
}
//
void CenterWindow(HWND hwnd)
{
RECT rcDlg;
int nDlgWidth, nDlgHight;
int nScreenWidth, nScreenHight;
nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
nScreenHight = GetSystemMetrics(SM_CYSCREEN);
GetWindowRect(hwnd, &rcDlg);
nDlgWidth = rcDlg.right - rcDlg.left;
nDlgHight = rcDlg.bottom - rcDlg.top;
MoveWindow(hwnd, (nScreenWidth - nDlgWidth) / 2, (nScreenHight - nDlgHight) / 2, nDlgWidth, nDlgHight, FALSE);
}
실행 효 과 는 다음 과 같 습 니 다.물론 애니메이션 효 과 는 캡 처 하기 어렵 습 니 다.여러분 은http://download.csdn.net/detail/morewindows/5128647다운로드(원본 코드 가 있 고 포인트 면제)한 후 스스로 실행 하여 효 과 를 봅 니 다.
다음 두 편의《Windows 인터페이스 프로 그래 밍 일곱 번 째 파일 드래그(파일 드래그)》와
《Windows 인터페이스 프로 그래 밍 제8 편 listbox 컬러 디 스 플레이 격 행 변색》
주소
1.http://blog.csdn.net/morewindows/article/details/8634451
2.http://blog.csdn.net/morewindows/article/details/8656061
본 논문 의 부대 프로그램 다운로드 주 소 는 다음 과 같다.http://download.csdn.net/detail/morewindows/5128647
전재 출처,원문 주소:http://blog.csdn.net/morewindows/article/details/8656068
웨 이 보 에 오신 것 을 환영 합 니 다:http://weibo.com/MoreWindows
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C\#애니메이션 창(AnimateWindow)의 작은 예using System.Runtime.InteropServices; using System.Windows.Forms; namespace WinFormTitle public partial class FormTitle ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.