//按钮ADD,压下按钮ADD增加一个按钮
CButton m_button[5];
for(int i=0;i<5;i++)
m_button[i].create("按牛",WS_VISIBLE|....|BS_FLAT,
CRrect(0+i*10,0+i*10,50+i*10,50+i*10),this,1000+i);
在运行的时候,第一次没有问题,第二次就出错了;而且按下创建的按钮也显示出错
为什么会这样?
(2)如何实现按钮在对话框上的拖放功能,就好像在VC环境下创建的按钮可以在对话框上拖来拖去的功能?是不是应用drag &drop。。。。。。。
10 个解决方案
#1
这写按钮的创建是在对话框上的某个按钮响应里面做的??
也就是说会重复调用
CButton m_button[5];
for(int i=0;i<5;i++)
m_button[i].create("按牛",WS_VISIBLE|....|BS_FLAT,
CRrect(0+i*10,0+i*10,50+i*10,50+i*10),this,1000+i);
这些东西??
那id重复了啊
也就是说会重复调用
CButton m_button[5];
for(int i=0;i<5;i++)
m_button[i].create("按牛",WS_VISIBLE|....|BS_FLAT,
CRrect(0+i*10,0+i*10,50+i*10,50+i*10),this,1000+i);
这些东西??
那id重复了啊
#2
为什么一个按纽要创建2次?
你可以创建后,根据情况隐藏和显示啊。或者在第二次创建前,先删除,再创建。
你可以创建后,根据情况隐藏和显示啊。或者在第二次创建前,先删除,再创建。
#3
(1)为什么我动态创建的按钮在第二次创建时老是出错?
---------------------------------------------------
因为你创建地过了,第二次创建的时候窗口句柄已存在,所以会出错。或者此控件的相同ID已存在。
(2)如何实现按钮在对话框上的拖放功能,就好像在VC环境下创建的按钮可以在对话框上拖来拖去的功能?是不是应用drag &drop。。。。。。。
---------------------------------------------------
基本上使用画图功能实现
---------------------------------------------------
因为你创建地过了,第二次创建的时候窗口句柄已存在,所以会出错。或者此控件的相同ID已存在。
(2)如何实现按钮在对话框上的拖放功能,就好像在VC环境下创建的按钮可以在对话框上拖来拖去的功能?是不是应用drag &drop。。。。。。。
---------------------------------------------------
基本上使用画图功能实现
#4
同一个窗口中除了静态控件ID可以重复外其他控件ID不可有重复
#5
1.检查一下ID是否相同。
2如何实现按钮在对话框上的拖放功能,有这个功能吗?系统没有提供啊。
2如何实现按钮在对话框上的拖放功能,有这个功能吗?系统没有提供啊。
#6
第一个问题我已经解决了,它问题出现在按钮已经创建,因为当时我按钮创建时候,按健的窗体大小没有设置好,所以没有显示出来所有的按钮,其实是已经创建了。这样在在已经创建按钮后再创建的话,因为窗体已经创建,id号重复,所以出现错误。
那第二个问题,在编程中式怎么实现的?
是用OnMouseMove()事件中编程吗,那是不是要不断的调用Indivate()?那样画面会不会有闪烁现象
还想问一下:怎么获取控件在客户区的位置
我使用GetWindowRect()获取对话框窗口位置和控件位置,然后相减取得的,但是这里面有点小问题,那么因为对话框窗口的位置包含标题栏 工具栏高度,而控件的位置只是客户区的位置,这多余部分怎么取得?
那第二个问题,在编程中式怎么实现的?
是用OnMouseMove()事件中编程吗,那是不是要不断的调用Indivate()?那样画面会不会有闪烁现象
还想问一下:怎么获取控件在客户区的位置
我使用GetWindowRect()获取对话框窗口位置和控件位置,然后相减取得的,但是这里面有点小问题,那么因为对话框窗口的位置包含标题栏 工具栏高度,而控件的位置只是客户区的位置,这多余部分怎么取得?
#7
要实现这样的功能,你可以像vc++开发环境那样,把按钮当成一个CStatic对象创建出来,然后在鼠标消息响应函数里,移动CStatic对象的位置
#8
自己响应鼠标消息来移动按钮应该可以。
#9
在鼠标消息里用MOVEWINDOW来移动BUTTON吧。
#10
问题出现在按钮已经创建,在已经创建按钮后再创建的话,因为窗体已经创建,id号重复,所以出现错误。
#1
这写按钮的创建是在对话框上的某个按钮响应里面做的??
也就是说会重复调用
CButton m_button[5];
for(int i=0;i<5;i++)
m_button[i].create("按牛",WS_VISIBLE|....|BS_FLAT,
CRrect(0+i*10,0+i*10,50+i*10,50+i*10),this,1000+i);
这些东西??
那id重复了啊
也就是说会重复调用
CButton m_button[5];
for(int i=0;i<5;i++)
m_button[i].create("按牛",WS_VISIBLE|....|BS_FLAT,
CRrect(0+i*10,0+i*10,50+i*10,50+i*10),this,1000+i);
这些东西??
那id重复了啊
#2
为什么一个按纽要创建2次?
你可以创建后,根据情况隐藏和显示啊。或者在第二次创建前,先删除,再创建。
你可以创建后,根据情况隐藏和显示啊。或者在第二次创建前,先删除,再创建。
#3
(1)为什么我动态创建的按钮在第二次创建时老是出错?
---------------------------------------------------
因为你创建地过了,第二次创建的时候窗口句柄已存在,所以会出错。或者此控件的相同ID已存在。
(2)如何实现按钮在对话框上的拖放功能,就好像在VC环境下创建的按钮可以在对话框上拖来拖去的功能?是不是应用drag &drop。。。。。。。
---------------------------------------------------
基本上使用画图功能实现
---------------------------------------------------
因为你创建地过了,第二次创建的时候窗口句柄已存在,所以会出错。或者此控件的相同ID已存在。
(2)如何实现按钮在对话框上的拖放功能,就好像在VC环境下创建的按钮可以在对话框上拖来拖去的功能?是不是应用drag &drop。。。。。。。
---------------------------------------------------
基本上使用画图功能实现
#4
同一个窗口中除了静态控件ID可以重复外其他控件ID不可有重复
#5
1.检查一下ID是否相同。
2如何实现按钮在对话框上的拖放功能,有这个功能吗?系统没有提供啊。
2如何实现按钮在对话框上的拖放功能,有这个功能吗?系统没有提供啊。
#6
第一个问题我已经解决了,它问题出现在按钮已经创建,因为当时我按钮创建时候,按健的窗体大小没有设置好,所以没有显示出来所有的按钮,其实是已经创建了。这样在在已经创建按钮后再创建的话,因为窗体已经创建,id号重复,所以出现错误。
那第二个问题,在编程中式怎么实现的?
是用OnMouseMove()事件中编程吗,那是不是要不断的调用Indivate()?那样画面会不会有闪烁现象
还想问一下:怎么获取控件在客户区的位置
我使用GetWindowRect()获取对话框窗口位置和控件位置,然后相减取得的,但是这里面有点小问题,那么因为对话框窗口的位置包含标题栏 工具栏高度,而控件的位置只是客户区的位置,这多余部分怎么取得?
那第二个问题,在编程中式怎么实现的?
是用OnMouseMove()事件中编程吗,那是不是要不断的调用Indivate()?那样画面会不会有闪烁现象
还想问一下:怎么获取控件在客户区的位置
我使用GetWindowRect()获取对话框窗口位置和控件位置,然后相减取得的,但是这里面有点小问题,那么因为对话框窗口的位置包含标题栏 工具栏高度,而控件的位置只是客户区的位置,这多余部分怎么取得?
#7
要实现这样的功能,你可以像vc++开发环境那样,把按钮当成一个CStatic对象创建出来,然后在鼠标消息响应函数里,移动CStatic对象的位置
#8
自己响应鼠标消息来移动按钮应该可以。
#9
在鼠标消息里用MOVEWINDOW来移动BUTTON吧。
#10
问题出现在按钮已经创建,在已经创建按钮后再创建的话,因为窗体已经创建,id号重复,所以出现错误。