让对话框按照sin曲线在窗口上移动//咋整? !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SetTimer消息,OnTimer里调用InvalidateRect/Invalidate();OnPaint函数中绘制图形 别打酱油行不,发sinx函数咋用的代码看看 #define MAX_COUNT (1000)#define PI (3.14)POINT pt[2 * MAX_COUNT] = {0};int g_nStep = 0;const int STEP = 10;// CXXXXXDlg message handlersBOOL CXXXXXDlg::OnInitDialog(){ CDialog::OnInitDialog(); // .... CRect rect; GetClientRect(&rect); for(int i = 0; i < 2 * MAX_COUNT; i++) { pt[i].x = (int)(i * rect.Width() / MAX_COUNT); pt[i].y = (int) (rect.Height() * (1 - sin(2 * PI * i / MAX_COUNT)) / 2); } SetTimer(1, 500, NULL); return TRUE; // return TRUE unless you set the focus to a control}void CXXXXXDlg::OnTimer(UINT_PTR nIDEvent){ // TODO: Add your message handler code here and/or call default g_nStep= (g_nStep + STEP) % MAX_COUNT; InvalidateRect(NULL, TRUE); CDialog::OnTimer(nIDEvent);}void CXXXXXDlg::OnPaint(){ CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); SetViewportOrgEx(dc.GetSafeHdc(), -g_nStep * rect.Width() / MAX_COUNT, 0, NULL); dc.MoveTo(-g_nStep * rect.Width() / MAX_COUNT, rect.Height() / 2); dc.LineTo(rect.Width() + g_nStep * rect.Width() / MAX_COUNT, rect.Height() / 2); dc.Polyline(pt + g_nStep, MAX_COUNT) ;} CDialog::OnPaint里面绘制图标的代码,去掉了也没什么影响啊 MFC对话框的问题 关于GDI+连续显示图片问题 路径转换问题 <求助> MFC中EDIT控件的数值范围问题 请问:ADSL拨号连接,怎样在断线时马上知道? 新人,请问一个初级问题,不要见笑 谁有windows 2000编程源码,不是核心编程那本,百分相送 如何改变窗口的“类名”? 微软奇怪的设定——为什么丢失焦点的选择项要取消突出显示 createnamedpipe创建的管道如何删除 THAR数组怎么用若干个编辑框显示出来?
#define PI (3.14)
POINT pt[2 * MAX_COUNT] = {0};int g_nStep = 0;
const int STEP = 10;
// CXXXXXDlg message handlersBOOL CXXXXXDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// ....
CRect rect;
GetClientRect(&rect); for(int i = 0; i < 2 * MAX_COUNT; i++)
{
pt[i].x = (int)(i * rect.Width() / MAX_COUNT);
pt[i].y = (int) (rect.Height() * (1 - sin(2 * PI * i / MAX_COUNT)) / 2);
}
SetTimer(1, 500, NULL);
return TRUE; // return TRUE unless you set the focus to a control
}
void CXXXXXDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: Add your message handler code here and/or call default g_nStep= (g_nStep + STEP) % MAX_COUNT;
InvalidateRect(NULL, TRUE); CDialog::OnTimer(nIDEvent);
}
void CXXXXXDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting CRect rect;
GetClientRect(&rect); SetViewportOrgEx(dc.GetSafeHdc(), -g_nStep * rect.Width() / MAX_COUNT, 0, NULL);
dc.MoveTo(-g_nStep * rect.Width() / MAX_COUNT, rect.Height() / 2);
dc.LineTo(rect.Width() + g_nStep * rect.Width() / MAX_COUNT, rect.Height() / 2);
dc.Polyline(pt + g_nStep, MAX_COUNT) ;
}