当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·字符串转问题    »显示摘要«
    摘要: 把 <p class=msonormal style="margin: 0cm 0cm 0pt"><font size=3><span lang=en-us style="mso-bidi-font-size: 10.5pt">strutscx</spa......
    摘要: 一: main() {int m=0,n=14; for(;m<2;m++) {for(;n>=0;n--,n--) if((m+n)%3) {--n; printf("&%d",m+n); } else {n-=2; printf("*%d",m-n); } printf("%%"); } } 不明白的地方,......


问三个问题

第一个,PB制作异形窗口该怎么办?   VC的实例我有,可惜,我的C++学的不太好,也没看懂,大概就是图片的黑色部分与对话框相重叠的地方用windowRGN()变成透明,我也没搞懂怎么弄的,请教高手如何在PB里实现。  
   
          第二个问题,如何屏蔽双击标题栏就最大化的事件?  
   
          第三个问题,如何使一个main类型的窗口本身的垂直滚动条支持鼠标滚轮?

NO.1   作者: polugen

1。你可以找一个VB的代码,一样   的  
  2。在RESIZE里面,你可以判断窗口状态参数resizetype  
  3.你想干什么

NO.2   作者: jdsnhan

第一个问题,前人种树,后人乘凉:  
  发现PB甚至于其它编程工具都没有提供这样的控件,      
  不知各位可有创建任意形状的可视控件的办法,比如一个圆形的,多边形的等      
  这个控件必须像窗口一样有自己的属性、方法,事件就无所谓,但属性就一定要有。      
  ---------------------------------------------------------------      
     
  我以前有过不规则按纽的例子,很好玩,你在到网上去找找吧。      
  ---------------------------------------------------------------      
     
  pb里的图形框就是有不规则形状啊,只是没事件,因为他们的祖先就不是一个类继承过来的。感兴趣可以自己去做一个控件,用BCB应该很容易      
  ---------------------------------------------------------------      
     
  在PB下实现圆形的窗口:      
     
  首先在窗口定义下列局部外部函数:      
     
  FUNCTION     ulong     CreateEllipticRgn(ulong     X1,ulong     Y1,ulong     X2,ulong     Y2)     LIBRARY          
  "gdi32.dll"      
  FUNCTION     ulong     SetWindowRgn(ulong     hWnd,ulong     hRgn,boolean     bRedraw)     LIBRARY          
  "user32.dll"      
     
  在窗口的open事件中加上:      
     
  long     hrgn      
  long     lres      
     
  hrgn=createellipticrgn(20,20,400,400)//其中参数为左上到右下的坐标值,可修改。      
  lres=setwindowRgn(handle(this),hrgn,true)      
  //记得在窗口中放置一个按钮关闭窗口,要不然……      
  ---------------------------------------------------------------      
     
  我有源代码      
     
  long     ll_handle      
  ws_position     lws_pointapi[]        
  //     图形2      
     
  lws_pointapi[1].xpos     =     1      
  lws_pointapi[1].ypos     =     1          
     
  lws_pointapi[2].xpos     =     800          
  lws_pointapi[2].ypos     =     1      
     
  lws_pointapi[3].xpos     =     800          
  lws_pointapi[3].ypos     =     41      
     
  lws_pointapi[4].xpos     =     1      
  lws_pointapi[4].ypos     =     41      
     
  lws_pointapi[5].xpos     =     1      
  lws_pointapi[5].ypos     =     610      
     
  lws_pointapi[6].xpos     =     830          
  lws_pointapi[6].ypos     =     610      
     
  lws_pointapi[7].xpos     =     830          
  lws_pointapi[7].ypos     =     75      
     
  lws_pointapi[8].xpos     =     35          
  lws_pointapi[8].ypos     =     75      
     
  lws_pointapi[9].xpos     =     35      
  lws_pointapi[9].ypos     =     586      
     
  lws_pointapi[10].xpos     =     1      
  lws_pointapi[10].ypos     =     586     //多边形各个顶点坐标值          
     
  ll_handle     =     CreatePolygonRgn(lws_pointapi[],     10,     1)      
  //其中第     1     个参数为多边形各个顶点坐标值的数组      
  //其中第     2     个参数为多边形边数,可修改,配合数组值      
  //其中第     3     个参数为填充模式     ALTERNATE     /WINDING          
  SetwindowRgn(handle(this),     ll_handle,     true)      
     
  放在你的控件中,你的控件就变成了多边形      
     
  函数声明为      
  Function     ulong     CreatePolygonRgn     (ref     ws_position     lppt[],     int     cPoints,     int     fnPolyFillMode     )     Library     "gdi32.dll"          
     
  FUNCTION     ulong     SetWindowRgn(ulong     hWnd,ulong     hRgn,boolean     bRedraw)     LIBRARY     "user32.dll"          
     
  代码能不能看懂,看不懂给我发短消息      
     
  ---------------------------------------------------------------      
     
  楼上的说的都很不错啊,把这几个API函数配合起来使用,就可以做任意形状的窗口了。      
  CombineRgn      
  CreateEllipticRgn      
  CreateEllipticRgnIndirect      
  CreatePolygonRgn      
  CreatePolyPolygonRgn      
  CreateRectRgn      
  CreateRectRgnIndirect      
  CreateRoundRectRgn      
  SetWindowRgn      
     
  ---------------------------------------------------------------      
     
  楼上:      
  有没有办法修改按钮的背景色啊?      
  我不想使用DW、BMP等变通的办法      
  就想如何才能直接修改按钮的背景色      
     
  不知道是不是要用到OWNER_DRAW      
     
  ---------------------------------------------------------------      
     
  楼上:      
  没问题呀,有handle的控件,都可以的。      
  ---------------------------------------------------------------      
     
  使用OWNERDRAW(这里针对按钮,其他类似)      
  1。设置控件的ownerdraw属性      
  ll     =     GetWindowULong(     handle(     cb_1     ),     GWL_STYLE     )      
  SetWindowULong(     handle(     this     ),     GWL_STYLE,     ll     +     BS_OWNERDRAW     )      
  2。在窗口的     pbm_measureitem     中      
            设置按钮的宽和高      
  3。在窗口的     pbm_drawitem     事件中      
            绘制按钮,         这是一段代码:      
  DRAWITEMSTRUCT     ldis      
     
  MoveMemory(     ldis,     drawitemstruct,     DRAWITEMSTRUCT_SIZE     )      
  if     ldis.ctltype     <>     ODT_BUTTON     then     return     0      
  if     ldis.ctlid     <>     g_api.GetWindowULong(     handle(     this     ),     g_api.GWL_ID     )     then     return     0      
  ib_selected     =     mod(     ldis.itemstate,     ODS_SELECTED     *     2     )     >=     ODS_SELECTED      
  ib_focus     =     mod(     ldis.itemstate,     ODS_FOCUS     *     2     )     >=     ODS_FOCUS      
  of_draw(     ldis.hdc     )      
  里面     drawitemstruct     是个指向     DRAWITEMSTRUCT结构的指针。      
  4。ok了。  
 

NO.3   作者: pbsql

问题一:  
   
  首先在窗口定义下列局部外部函数:  
  Function   ulong   CreatePolygonRgn   (ref   tagPOINT   lppt[],   int   cPoints,   int   fnPolyFillMode   )   Library   "gdi32.dll"  
  FUNCTION   ulong   SetWindowRgn(ulong   hWnd,ulong   hRgn,boolean   bRedraw)   LIBRARY   "user32.dll"  
   
  在窗口上定义:  
  Structure  
  tagpoint  
  {   long   x  
  long   y}  
   
  在窗口的open事件中加上:  
  long   hrgn  
  long   lres  
  tagPOINT   l_pointapi[]  
   
  l_pointapi[1].x   =   173  
  l_pointapi[1].y   =   112  
   
  l_pointapi[2].x   =   412  
  l_pointapi[2].y   =   66  
   
  l_pointapi[3].x   =   478  
  l_pointapi[3].y   =   240  
   
  l_pointapi[4].x   =   338  
  l_pointapi[4].y   =   340   //多边形各个顶点坐标值  
   
  hrgn   =   CreatePolygonRgn(l_pointapi[],4,1)  
  //其中第   1   个参数为多边形各个顶点坐标值的数组  
  //其中第   2   个参数为多边形边数,可修改,配合数组值  
  //其中第   3   个参数为填充模式   ALTERNATE   /WINDING  
  lres=setwindowRgn(handle(this),hrgn,true)  
   
 


    摘要: 请问: windows 2003 系统启动后, 有好多svchost.exe, 这是什么东西? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE