我是这样设计的,在Dialog中动态show出一些标准控件,如CButton,CListBox,然后鼠标点击可以选中控件,并可以进行拖动,放大缩小等标准操作。但是有些不明白:
1。创建时可以根据自定义ID范围来实现动态创建,但是在拾取的时候怎么处理呢,不大会。
2。我这样设计是否可行,是否可以利用到标准消息。
3。用VC放大缩小控件时候,在控件上出现八个点,怀疑是做好的OLE对象,哪位知道,如果自己处理的话是否可行?多谢各位关注,稍后给分,谢谢

解决方案 »

  1.   

    1。 用on_command_range
    2.可行。可利用标准消息。
    3.自己处理也行,
    可自己派生子类,重画并捕获鼠标事件。
      

  2.   

    拾取的时候可用childwindowfrompoint()
      

  3.   

    比如,在dialog中动态show出一个CButton后,点击button弹出消息框
      

  4.   

    可以用绘图的模式来欺骗一下视觉,当所有控件都定义好了后,再create
      

  5.   

    ON_COMMAND_RANGE
    ON_COMMAND_RANGE( id1, id2, memberFxn )Parametersid1Command ID at the beginning of a contiguous range of command IDs.id2Command ID at the end of a contiguous range of command IDs.memberFxnThe name of the message-handler function to which the commands are mapped.我收到你的信息了
    你可以先在对话框上加一个按扭,加上消息响应。然后手工把on_command换成on_command_range,
    id1为你的第一个按扭的create ID,如下
    BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
       //{{AFX_MSG_MAP(CMainFrame)
       // ... 
       //}}AFX_MSG_MAP
       ON_COMMAND_RANGE(ID_BT1, ID_BT100, OnBTItems)
    END_MESSAGE_MAP()void CMainFrame::OnBTItems(UINT nID)
    {
    nId,就是你的按扭id.
    }