求助:关于对话框显示定位问题

quanlai2 2008-02-13 02:41:45
现在想实现这样一个功能,在一个对话框的应用程序中,设置一个按钮,单击这个按钮时要求显示另外一个对话框,要求这个对话框必须显示在原对话框的指定位置,比如一个静态文本框中。如何实现呢?并且被按钮调出的对话框能够缩小到刚好适合静态文本框的大小而不是截取为静态文本框大小。大家帮帮忙吧,我用movewindow函数来定位但是当被调出的对话框勾选child属性时它的位置总有一定的偏差啊。谢谢了
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2008-02-13
  • 打赏
  • 举报
回复
这个问题已经有好多人问了,一般的方法都是在sizeing和size两个函数中执行控件的大小变化,原理上一般都是在窗体启动时enum所有的控件,并记住其位置,当sizing和size的时候,进行运算,并重新进行定位,网上有好多,手头没有代码,回家找找看,也不见得就适用。
quanlai2 2008-02-13
  • 打赏
  • 举报
回复
我刚用你写的代码试了一下,对话框定位是没有问题了,但是如果设定的对话框的尺寸太小的话原来的对话框就被截断了,比如需要被调出的对话框资源太大的话就没办法全部显示上面的内容,怎么样才能实现对对话框资源按比例缩小呢?谢谢了!
quanlai2 2008-02-13
  • 打赏
  • 举报
回复
谢谢了,我先消化一下你给的代码。
用户 昵称 2008-02-13
  • 打赏
  • 举报
回复
此方法只对新窗口为非模态方式有效。
用户 昵称 2008-02-13
  • 打赏
  • 举报
回复
新窗口上
.h

BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct);


.cpp




BEGIN_MESSAGE_MAP(CAAA, CDialog)
//{{AFX_MSG_MAP(CAAA)
// NOTE: the ClassWizard will add message map macros here
ON_WM_COPYDATA()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAAA message handlers
BOOL CAAA::OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
{
//AfxMessageBox( "fdsafdsa" );
int *p;
p = ( int * )pCopyDataStruct->lpData;

int l, t, w, h;
l = *p;
t = *( p + 1 );
w = *( p + 2 );
h = *( p + 3 );

::SetWindowPos( this->GetSafeHwnd(), 0, l, t, w, h, 0 );
return TRUE;
}


只要预先算好了新窗口的位置就可以了,另外在新窗口的OnClose中要消毁自己。
delete this;等等。
用户 昵称 2008-02-13
  • 打赏
  • 举报
回复
窗口1中


void CTest2Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
//CAAA a;
//a.DoModal();
CAAA *a = new CAAA();
a->Create( IDD_DIALOG1, NULL );
COPYDATASTRUCT b;
int c[ 20 ];
c[ 0 ] = 0; //新窗口左上角
c[ 1 ] = 0; //新窗口左上角
c[ 2 ] = 200; //新窗口宽
c[ 3 ] = 50; //新窗口高

b.dwData = 0;
b.cbData = sizeof( c );
b.lpData = c;

::SendMessage( a->GetSafeHwnd(), WM_COPYDATA, (WPARAM)(HWND)a->GetSafeHwnd(), (LPARAM)(PCOPYDATASTRUCT)&b );
a->ShowWindow( SW_SHOW );
}

my_girlf 2008-02-13
  • 打赏
  • 举报
回复
贴点代码吧。
用户 昵称 2008-02-13
  • 打赏
  • 举报
回复
sendmessage wm_copydata

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧