如何创建设计时的控件?

现在还是人类 2008-04-18 01:20:48
就像VB或FontPage一样有插入控件的功能,并且插入控件后是设计时
的状态。这类的控件怎么创建的呢?
CreateObject创建出来的是运行时控件,是不是有什么属性是控制控
件对象为设计时状态的吗?请高手赐教。
帮顶的也有分,还请大家多多支持。
...全文
238 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccmm2922 2008-05-18
  • 打赏
  • 举报
回复
ding.
现在还是人类 2008-05-17
  • 打赏
  • 举报
回复
不会这样就没戏了吧
ORSCAR 2008-05-16
  • 打赏
  • 举报
回复
LZ可以送10分技术分给我吗?急用`谢谢啦`好心有好报!
TomyChoi 2008-05-13
  • 打赏
  • 举报
回复
你要的是否就像PictureBox一样的容器控件。

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=64261&lngWId=1
现在还是人类 2008-05-12
  • 打赏
  • 举报
回复
有没有高手知道呀?
tim_zhang 2008-05-08
  • 打赏
  • 举报
回复
顶!
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
我也想了解,谢谢LZ.
现在还是人类 2008-04-26
  • 打赏
  • 举报
回复
ly012659 2008-04-25
  • 打赏
  • 举报
回复
这个貌似比较高深,学习下...
薛峰1688 2008-04-24
  • 打赏
  • 举报
回复
UP
silencenet 2008-04-24
  • 打赏
  • 举报
回复

学习了。。
运行时设计时状态属性。。 ^^
现在还是人类 2008-04-24
  • 打赏
  • 举报
回复
看来只有一楼的兄弟靠点普,但对于VB的开发人员来说的确很难。
自己顶上去,等高手
galactic 2008-04-24
  • 打赏
  • 举报
回复
不明白 还是顶一下算了
现在还是人类 2008-04-21
  • 打赏
  • 举报
回复
谢谢楼上的兄弟,但是你的方法不是我希望的东西,我想要的是一个设计时环境。
不是一个模拟的样子。因为对于控件而言,本身就有设计时和运行时的设计区别。
如果有的控件本身作了设计时和运行时的区别操作,用你的方法是看不到应该看到
或应该运行的控件处理的。
波导终结者 2008-04-21
  • 打赏
  • 举报
回复
Call ReleaseCapture
Call SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)

用这种方法,可以模拟拖动标题栏,那么把HTCAPTION换成

'#define HTLEFT 10
'#define HTRIGHT 11
'#define HTTOP 12
'#define HTTOPLEFT 13
'#define HTTOPRIGHT 14
'#define HTBOTTOM 15
'#define HTBOTTOMLEFT 16
'#define HTBOTTOMRIGHT 17

这些的话,就能实现模拟对窗体大小的调整。

而控件只要有句柄,也是可以这样干的,我在Text,Command等都试过了,可以用。
只要在Mousemove里判断一下鼠标的位置,在控件边缘的话就变成相应的拖动,在控件中间就是移动。

只是这样干虽然简单,却没有设计时的八个小方块。当然,如果要加上方块其实也不难,花点时间就行了。
东方之珠 2008-04-21
  • 打赏
  • 举报
回复
up
现在还是人类 2008-04-21
  • 打赏
  • 举报
回复
路过的走过的帮顶顶,拜托
lyserver 2008-04-21
  • 打赏
  • 举报
回复
补充一点,以上代码只针对标准Windows子控件,VB的控件不能使用CreateWindowEx,而要使用其它办法,网上有很多,不再啰嗦。
lyserver 2008-04-21
  • 打赏
  • 举报
回复
可以模拟设计时的控件,思路如下:
第一步、使用CreateWindowEx创建控件,如:
hCtl = CreateWindowEx(0, "Edit", "我的文本框", WS_CHILD Or WS_VISIBLE, Left, Top, 100, 22, m_hWndParent, 0, App.hInstance, ByVal 0&)
If IsWindow(hCtl)
SetWindowLong hCtl,GWL_WNDPROC,newProc '截获消息泵
End If
ShowWindow hCtl, SW_SHOW Or SW_NORMAL
UpdateWindow hCtl
第二步、让创建的控件可调整大小
SetWindowLong hCtl, GetWindowLong(hCtl, GWL_STYLE) Or WS_THICKFRAME, GWL_STYLE
第三步、让创建的控件能改变位置
'在自己的消息泵里处理鼠标移动
Select Case wMsg
Case WM_LBUTTONDOWN
'先判断鼠标位置,当位于控件矩形-4时允许拖动,以免与调整动作相冲突
'鼠标位置判断代码略
ReleaseCapture()
    SendMessage( hCtl, WM_NCLBUTTONDOWN, HTCAPTION, 0 )
End Select
第四步、修改控件的文本等属性
SetWindowText hCtl, sText '修改文本
SetTextColor GetWindowDC(hCtl), vbBlack '修改前景色
SetBkColor GetWindowDC(hCtl),vbRed '修改背景色
......
第五步、销毁控件
DestroyWindow hCtl
我试了所有标准子控件,均可以创建,只不过标签控件(类名:Static)有点麻烦,不能调整大小。
楼主可在此基础上,把需要增加的控件封装一个类里,还可以增加Ambient属性,这个属性用来控件是否允许调整大小。

现在还是人类 2008-04-19
  • 打赏
  • 举报
回复
顶者有分,帮顶顶,拜托
加载更多回复(11)

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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