WIN32,C++:是否可以在不隐藏窗口的情况下为窗口设置动画?

7 c++ winapi animation

我有一个编辑控件(文本字段),我想要动画.我想要的动画是它滑出来,为这个文本字段创建一个额外的行.我可以为我的文本字段设置动画并使其更大,但是为了显示我首先要隐藏它的滑动动画.这意味着整个文本字段滑出,好像是第一次从零开始创建,而不是仅添加新行.

这是我现在的代码:

SetWindowPos(hwnd, HWND_TOP, x, y, newWidth, newHeight, SWP_DRAWFRAME);

ShowWindow(hwnd, SW_HIDE);

AnimateWindow(hwnd, 300, AW_SLIDE | AW_VER_NEGATIVE);
Run Code Online (Sandbox Code Playgroud)

是否可以在不隐藏它的情况下显示此动画?

Ala*_*lan 6

为了扩展Nick D的答案,这里是实现你正在寻找的代码......

.H

#define ANIMATION_TIMER 1234
#define ANIMATION_LIMIT 8
#define ANIMATION_OFFSET 4

int m_nAnimationCount;
Run Code Online (Sandbox Code Playgroud)

的.cpp

void CExampleDlg::OnTimer(UINT_PTR nIDEvent)
{
    if (nIDEvent == ANIMATION_TIMER)
    {
        if (++m_nAnimationCount > ANIMATION_LIMIT)
            KillTimer(EXPAND_TIMER);
        else
        {
            CRect rcExpand;
            m_edtExpand.GetWindowRect(rcExpand);
            ScreenToClient(rcExpand);

            rcExpand.bottom += ANIMATION_OFFSET;

            m_edtExpand.MoveWindow(rcExpand);
        }   
    }

    CDialog::OnTimer(nIDEvent);
}

void CExampleDlg::OnStartAnimation()
{
    m_nAnimationCount = 0;
    SetTimer(ANIMATION_TIMER, 20, NULL);
}
Run Code Online (Sandbox Code Playgroud)

不要忘记在编辑控件上设置Multiline属性(m_edtExpand)