在MFC单文档程序编程过程中怎么获取View类窗口的大小?
框架窗口大小又如何获取?
急求教育!
谢谢热心人了!
在线等!
QQ:490959278
框架窗口大小又如何获取?
急求教育!
谢谢热心人了!
在线等!
QQ:490959278
解决方案 »
- GetProp( hWnd,_T("MirroUI_Prop") )//第二个参数不是很理解,是什么作用呢???
- _ConnectionPtr pConn;出现__vfptr CXX0030: 错误: 无法计算表达式的值
- 在VS2008下 防止头文件被重用的问题
- 怎么实现QQ2010版本的界面效果……
- 关于消息发送?
- 哪位高手可以提供一个利用ilg库把bmp文件压缩成jpeg文件的例子
- Win32 dll简单问题
- SDK初学者问题!(在线等候)
- 如何屏蔽CListCtrl控件的右键选上记录的功能?
- 为什么报告形式的listctrl不能选取column0以外的item吗
- 有关静态成员函数调用的问题
- 我create了个windows窗口,然后create了按钮,无论窗口大小怎么变化,怎么才能使这个按钮一直处在窗口中间啊?
GetCurronWindowRect(&rect);btXiaoditu.Create("小地图",WS_CHILD|BS_DEFPUSHBUTTON,
CRect(rect.right-100,rect.bottom-100,rect.right,rect.bottom),this,1);
btXiaoditu.ShowWindow(SW_SHOWNORMAL);*/
我想通过上面代码让一个按钮控件始终停靠在窗口右下角,执行结果是按钮居无定所
=======\
有这个API吗?
CRect(rect.right-100,rect.bottom-100,rect.right,rect.bottom),this,1);
btXiaoditu.ShowWindow(SW_SHOWNORMAL);是我不小心拷贝错了。应该是GetWindowRect(&rect)。
=======
一个可能是你得到是相对于屏幕的尺寸,所以可以试试ScreenToClient将它先转过来再用。
CRect(rect.right-100,rect.bottom-100,rect.right,rect.bottom),this,1);
btXiaoditu.ShowWindow(SW_SHOWNORMAL);
========================
你这段代码加在什么地方的啊,另外按钮最后创建的位置在什么地方啊?
我试了用GetWindowRect(&rect)获取屏幕大小之后直接用ScreenToClient(&rect)重复运行结果和还是一样button没固定位置。
int CZF1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1; RECT rect;
//ScreenToClient(&rect);
GetWindowRect(&rect);
btTouxiang.Create("头像",WS_CHILD|BS_DEFPUSHBUTTON,
CRect(rect.right-100,rect.bottom-100,rect.right,rect.bottom),this,1);
btTouxiang.ShowWindow(SW_SHOWNORMAL); return 0;
}void CZF1View::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
a=point.x;
b=point.y;
str.Format("x:%d,y:%d",a,b);
/*((CMainFrame*)GetParent())->*/btTouxiang.SetWindowText(str);
CView::OnMouseMove(nFlags, point);
}
#define WM_MY WM_USER+100 //自定义消息
IMPLEMENT_DYNCREATE(CZF1View, CView)BEGIN_MESSAGE_MAP(CZF1View, CView)
// 标准打印命令
ON_COMMAND(ID_FILE_PRINT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, &CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CView::OnFilePrintPreview)
ON_WM_CREATE()
ON_MESSAGE(WM_MY,OnMyMessage)//加自定义消息的映射
END_MESSAGE_MAP()int CZF1View::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
PostMessage(WM_MY);//在OnCreate中向自己发送WM_MY消息
return 0;
}LRESULT CZF1View::OnMyMessage(WPARAM, LPARAM)
{ RECT rect;
GetWindowRect(&rect);
ScreenToClient(&rect);
m_Button.Create(_T("kkkk"),WS_CHILD|BS_DEFPUSHBUTTON,CRect(rect.right-100,rect.bottom-100,rect.right,rect.bottom),this,1);
m_Button.ShowWindow(SW_SHOWNORMAL);
return 0;
}
//上面是自定义消息的处理,在里面创建,ScreenToClient还是要的。public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg LRESULT OnMyMessage(WPARAM,LPARAM);
//这个加在视图类的头文件中,主要是下面红色的那个
=========
你怎么改的啊?
我上面贴的代码应该没有问题,我试过的。
谢谢你了!
不过你的方法设置的bottom位置是固定在窗口初始大小的当前屏幕的右下角的,通过拖动边框改变窗口大小之后bottom的位置没跟着边框移动。
怎样弄一个不可调边框的窗口?
怎样弄一个不可调边框的窗口?
=========
不可调边框窗口你要改属性。
建议你处理一下WM_SIZE消息,在WM_SIZE消息中用MoveWindow移动按钮,让按钮始终放在你想要的那个位置。