google rss rss

doneykoo [Ouditian]

DKzone- Ouditian Technology

2009年10月14日 #

[share] 我的针对批处理文件bat,cmd的UltraEdit语法高亮wordfile



  1 
  2 /L18"BAT_FILE" BAT_FILE_LANG Line Comment = rem Block Comment On = /* Block Comment Off = */ Escape Char = \ String Chars = " File Extensions = bat cmd
  3 /Delimiters = ~!@^&*()-+=|/\{}[]:;"`'<> ,    .?
  4 /Function String = "call"
  5 /Function String 1 = "start"
  6 /Function String 2 = "%:"
  7 /Variable String = "^%[1-9a-zA-Z]++[12345^%]"
  8 /Indent Strings = "(" "if" "else"
  9 /Unindent Strings = ")"
 10 /Open Brace Strings =  "{" "(" "%"
 11 /Close Brace Strings = "}" ")" "%"
 12 /Open Fold Strings = "("
 13 /Close Fold Strings = ")"
 14 /C1"Keywords" STYLE_KEYWORD
 15 assoc    
 16 at       
 17 attrib   
 18 break    
 19 cacls    
 20 call     
 21 cd       
 22 chcp     
 23 chdir    
 24 chkdsk   
 25 chkntfs  
 26 cls      
 27 cmd      
 28 color    
 29 comp     
 30 compact  
 31 convert  
 32 copy     
 33 date     
 34 del      
 35 dir      
 36 diskcomp 
 37 diskcopy 
 38 doskey   
 39 echo     
 40 endlocal 
 41 erase    
 42 exit     
 43 fc       
 44 find     
 45 findstr  
 46 for      
 47 format   
 48 ftype    
 49 goto     
 50 graftabl 
 51 help     
 52 if       
 53 label    
 54 md       
 55 mkdir    
 56 mode     
 57 more     
 58 move     
 59 path     
 60 pause    
 61 popd     
 62 print    
 63 prompt   
 64 pushd    
 65 rd       
 66 recover  
 67 rem      
 68 ren      
 69 rename   
 70 replace  
 71 rmdir    
 72 set      
 73 setlocal 
 74 shift    
 75 sort     
 76 start    
 77 subst    
 78 time     
 79 title    
 80 tree     
 81 type     
 82 ver      
 83 verify   
 84 vol      
 85 xcopy    
 86 /C2"C++ Keywords" STYLE_KEYWORD
 87 /C3"Microsoft C extensions" STYLE_EXTENSION
 88 @
 89 %
 90 (
 91 )
 92 /C5"COLOR5" STYLE_COLOR5
 93 !
 94 %
 95 &
 96 *
 97 +
 98 -
 99 // /
100 <
101 = ==
102 >
103 ^
104 |
105 ~
106 /C6"COLOR6" STYLE_COLOR6
107 /C7"Variables"
108 ** % x%
109 /C8"Constant/Global/Symbol"
110 ** WII DEB FIN REL

posted @ 2009-10-14 11:14 DoNeY 阅读(1510) | 评论 (0)编辑 收藏

2008年12月31日 #

游戏开发学习过程(连载中...)(转自 威尔弗的空间)

转自 : http://hi.baidu.com/welflau/blog/item/1b17032320bb05499358075e.html

http://hi.baidu.com/welflau/希望能保留原创作者链接,谢谢!

2008-12-02

第1讲【创建框架】

 


1 新建MFC exe / dialog based
2 删除dialog类的显示代码
3 添加WelflGameFrm类
4 在app类的InitInstance 函数中 添加http://hi.baidu.com/welflau/希望能保留原创作者链接,谢谢!
m_pMainWnd = new CWelflGameFrm;
m_pMainWnd->ShowWindow( m_nCmdShow );
m_pMainWnd->UpdateWindow();
5 将CWelflGameFrm()构造函数改为public 成员
6 在构造函数CWelflGameFrm中添加:
RECT rect;
Create(NULL,"ch07-1: ミDirectGraphics");
CClientDC dc(this);
int width = dc.GetDeviceCaps(HORZRES);
int height = dc.GetDeviceCaps(VERTRES);
GetWindowRect( &rect );
width = ( width - ( rect.right - rect.left ))/2 ;
height = (height - (rect.bottom - rect.top ))/2 ;
MoveWindow( width , height , (rect.right - rect.left ) , (rect.bottom - rect.top ) ,true);

7 为CWelfGameFrm类添加WindowProc函数,并加入代码:http://hi.baidu.com/welflau/希望能保留原创作者链接,谢谢!
switch( message )
{
case WM_CREATE :
   if( !d3dCreate( m_hWnd , 640 , 480 , true ))
    PostMessage( WM_CLOSE );
   return 0 ;
case WM_DESTROY :
   d3dRelease();
   return 0 ;
}

8 为工程添加两个文件
myd3d.cpp, myd3d.h

9 编译出现
fatal error C1010: unexpected end of file while looking for precompiled header directive
解决方案:在Project Settings里C++页面的Precomplie Header里把出错源文件设置为不使用预编译头就可以了,详见视频

10 将BOOL CWelfGameApp::InitInstance()中的
return FALSE;改为 return TRUE;

11 为CWelfGameFrm类添加OnPaint响应
添加如下代码:
d3dClear(0);
//
d3d_Device->Present( NULL , NULL , NULL , NULL );




第2讲【绘制文字和图像】

目录
【一】、从DirectGraphic中获取DC(GDI)
【二】、2D图像绘制


【一】、从DirectGraphic中获取DC(GDI)
1 添加类d3dHdc 在 myd3d.h文件中
class d3dHdc
{
private :
HDC m_hdc ;
LPDIRECT3DSURFACE9 m_Surface ;

public :
void Release();
inline operator HDC(){ return m_hdc ;};
public :
d3dHdc();
~d3dHdc();
};

2在myd3d.cpp中添加函数定义
d3dHdc::d3dHdc()
{
m_hdc = 0 ;
m_Surface = 0 ;
// 获得设备
if( !d3d_Device )
   return ;
if( d3d_Device->GetBackBuffer( 0 , 0 , D3DBACKBUFFER_TYPE_MONO , &m_Surface ) != D3D_OK )
   return ;

m_Surface->GetDC( &m_hdc );
}

d3dHdc::~d3dHdc()
{
Release();
}

void d3dHdc::Release()
{
if( m_Surface )
{
   if( m_hdc )
    m_Surface->ReleaseDC( m_hdc );
   m_Surface->Release();
  
   m_hdc = NULL ;
   m_Surface = NULL ;
}

}

3 现在就可以使用他了
在绘制函数中添加:
d3dHdc hdc ;
   SetTextColor( hdc , RGB( 255 , 255 , 255 ));
   SetBkMode( hdc , 1 );
   TextOut( hdc , 0 , 0 , str , strlen( str ));
hdc.Release();


【二】、2D图像绘制
1 新建d3dTexture类
class d3dTexture
{
private :
int      m_Width ;
int      m_Height ;
LPDIRECT3DTEXTURE9 m_Texture ;
public :
void BltFast( int x , int y );
void BltFast( int l , int t , int r , int b );
public :
BOOL Create( LPCTSTR file );
void Release();
inline operator LPDIRECT3DTEXTURE9(){ return m_Texture ;};
public :
d3dTexture();
~d3dTexture();
};

2 并添加定义:

/*////////////////////////////////////////////////
3D 纹理类d3dTexture 函数定义 2008-12-02

/*////////////////////////////////////////////////

d3dTexture::d3dTexture()
{
m_Texture = NULL ;
}

d3dTexture::~d3dTexture()
{
Release();
}

void d3dTexture::Release()
{
if( m_Texture )
   m_Texture->Release();
m_Texture = NULL ;
}

BOOL d3dTexture::Create( LPCTSTR file )
{
D3DXIMAGE_INFO in ;
memset( &in , 0 , sizeof( in ));
// ﹍て
Release();
//更
D3DXCreateTextureFromFileEx( d3d_Device ,
   file , D3DX_DEFAULT , D3DX_DEFAULT ,
   0 , 0 , D3DFMT_UNKNOWN , D3DPOOL_MANAGED ,
   D3DX_DEFAULT ,
   D3DX_DEFAULT , 0 , &in , NULL , &m_Texture );
if( m_Texture == NULL )
   return false ;
// 眔戈
m_Width = in.Width ;
m_Height = in.Height ;

return true ;
}

void d3dTexture::BltFast(int x, int y)
{
BltFast( x , y , x + m_Width , y + m_Height );
}

void d3dTexture::BltFast(int l , int t , int r , int b )
{
D3DTLVERTEX v[4] ;
//郴翴 挡篶
memset( v , 0 , sizeof( v ));
v[0].x = v[3].x = (float)(l) ;
v[1].x = v[2].x = (float)(r);
v[0].y = v[1].y = (float)(t);
v[2].y = v[3].y = (float)(b);

v[0].rhw = v[1].rhw = v[2].rhw = v[3].rhw =
   v[0].z = v[1].z = v[2].z = v[3].z = 0.5f ;

v[0].diffuse = v[1].diffuse = v[2].diffuse = v[3].diffuse = -1 ;

v[1].tu = v[2].tu = 1.0f ;
v[2].tv = v[3].tv = 1.0f ;
//砞酶瓜家Α
d3d_Device->SetTexture( 0 , m_Texture );
d3d_Device->SetFVF( D3DFVF_TLVERTEX );
d3d_Device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN , 2 , (LPVOID)v , sizeof( D3DTLVERTEX ));


}

3 编译时会出错
解决方法:
在myd3d.h文件中添加
#include "d3dx9tex.h"

#pragma comment(lib,"d3dx9.lib")
以及
const DWORD D3DFVF_TLVERTEX = (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1 );
typedef struct _D3DTLVERTEX
{
float x , y , z , rhw ;
D3DCOLOR diffuse , specular;
float tu, tv;
}D3DTLVERTEX ;

4 在WelfGameFrm中添加两个成员
d3dTexture m_Bk ;
d3dTexture m_Role ;

5 在WelfGameFrm的Create响应添加:
   m_Bk.Create( "背景.tga" );
   m_Role.Create( "娃娃.tga" );

6 调用BltFast进行绘制
//开始绘制
d3d_Device->BeginScene();
d3d_Device->SetRenderState( D3DRS_CULLMODE , D3DCULL_NONE );
d3d_Device->SetRenderState( D3DRS_ZENABLE , D3DZB_FALSE );
m_Bk.BltFast( 0 , 0 );
m_Role.BltFast( 0 , 0 );
d3d_Device->EndScene();

7 将BltFast函数改进




第3讲 WelfGame【图像透明及颜色】

http://hi.baidu.com/welflau/希望能保留原创作者链接,

【一】、实现透明图像

1 RenderScene()中添加设置代码

在背景绘制前添加:

              d3d_Device->SetRenderState( D3DRS_CULLMODE , D3DCULL_NONE );

              d3d_Device->SetRenderState( D3DRS_ZENABLE , D3DZB_FALSE );

              d3d_Device->SetRenderState( D3DRS_SHADEMODE , D3DSHADE_FLAT );

              d3d_Device->SetRenderState( D3DRS_ALPHABLENDENABLE, FALSE );

在前景绘制的前面添加

       d3d_Device->SetRenderState( D3DRS_SRCBLEND , D3DBLEND_SRCALPHA );

       d3d_Device->SetRenderState( D3DRS_DESTBLEND , D3DBLEND_INVSRCALPHA );

       d3d_Device->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );//开启混色

 

 

 

效果

 

2 d3dTexture添加BltFast函数

void d3dTexture::BltFast(int l , int t , int r , int b , DWORD diffuse )

{

       D3DTLVERTEX v[4] ;

       //郴翴 挡篶

       memset( v , 0 , sizeof( v ));

       v[0].x = v[3].x = (float)(l) ;

       v[1].x = v[2].x = (float)(r);

       v[0].y = v[1].y = (float)(t);

       v[2].y = v[3].y = (float)(b);

       v[0].rhw = v[1].rhw = v[2].rhw = v[3].rhw =

       v[0].z = v[1].z = v[2].z = v[3].z = 0.5f ;

       //肅︹

       v[0].diffuse = v[1].diffuse = v[2].diffuse = v[3].diffuse = diffuse ;

       v[1].tu = v[2].tu = 1.0f ;

       v[2].tv = v[3].tv = 1.0f ;

       //砞酶瓜家Α

       d3d_Device->SetTexture( 0 , m_Texture );

       d3d_Device->SetFVF( D3DFVF_TLVERTEX );

       d3d_Device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN , 2 , (LPVOID)v , sizeof( D3DTLVERTEX ));

}

添加以下几句:

       d3d_Device->SetTextureStageState( 0 , D3DTSS_ALPHAARG1 , D3DTA_TEXTURE );

       d3d_Device->SetTextureStageState( 0 , D3DTSS_ALPHAARG2 , D3DTA_DIFFUSE );

       d3d_Device->SetTextureStageState( 0 , D3DTSS_COLORARG1 , D3DTA_TEXTURE );

       d3d_Device->SetTextureStageState( 0 , D3DTSS_COLORARG2 , D3DTA_DIFFUSE );

       d3d_Device->SetTextureStageState( 0 , D3DTSS_COLOROP , D3DTOP_SELECTARG1 );

       d3d_Device->SetTextureStageState( 0 , D3DTSS_ALPHAOP , D3DTOP_MODULATE );

       //以下为前景

       m_Role.BltFast( 100, 100, 250 ,250 ,D3DCOLOR_ARGB( 128 , 255 , 255 , 255 ));//最后一个参数为颜色,包括透明度

效果图

 

posted @ 2008-12-31 18:04 DoNeY 阅读(409) | 评论 (0)编辑 收藏

JavaScript 仿LightBox内容显示效果、拖放效果和渐变效果

JavaScript 仿LightBox内容显示效果

详解定位与定位应用

拖放效果渐变效果

posted @ 2008-12-31 17:59 DoNeY 阅读(267) | 评论 (0)编辑 收藏

CString,int,string,char*之间的转换(转)

转自http://www.cppblog.com/ACM-Boy/archive/2008/12/31/70843.html

string 转 CString  
CString.format("%s", string.c_str());  

char 转 CString  
CString.format("%s", char*);  

char 转 string  
string s(char *);  

string 转 char *  
char *p = string.c_str();  

CString 转 string  
string s(CString.GetBuffer());  

1,string -> CString  
CString.format("%s", string.c_str());  
用c_str()确实比data()要好.  
2,char -> string  
string s(char *);  
你的只能初始化,在不是初始化的地方最好还是用assign().  
3,CString -> string  
string s(CString.GetBuffer());  
GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间. 

posted @ 2008-12-31 17:43 DoNeY 阅读(227) | 评论 (0)编辑 收藏

2008年10月21日 #

[FW] 在UltraEdit里正确显示Lua的块注释(语法着色)

 

Origin Link http://blog.2ndboy.net/?p=116#comment-3104
Thanks to 2ndboy


在 UltraEdit 里正确显示 Lua 的块注释(DoNeY注:语法着色问题)

  我算得上是 UltraEdit 的铁杆用户啦(虽然是 D 版用户:)),所以写 Lua 程序当然用 UltraEdit 啦!让 UltraEdit 支持 Lua 的语法高亮很简单,去 UE 的官网,下载 Lua 的语法文件集成在自带的语法高亮文件里就可以啦。

  但是 UE 官网上这个语法文件貌似比较旧,是 02 年 8 月发布的,块注释居然用的是“[[”和“]]”:“Block Comment On = [[ Block Comment Off = ]]”。于是手工改成“Block Comment On = –[[ Block Comment Off = –]]”保存,结果发现行注释“–”是可以正确显示的,但是块注释就只能显示快注释开始标记所在的那一行。貌似是 UE 的 bug?估计跟行注释有冲突,因为语法文件里是这么写的“Line Comment = — Block Comment On = –[[ Block Comment Off = –]]”。试了一下把行注释放在块注释后面也不行,开动 Google,结果在 UE 的论坛上找到了答案

  把 Lua 的语法文件第一行改成如下这个样子就可以啦:

 

/L12″Lua” Block Comment On = --[[ Block Comment Off = ]] Block Comment On Alt = -- Escape Char = \ String Chars = “‘ File Extensions = LUA



(DoNeY注:哈,终于有了解决方案,下面听作者讲一下这一微小滴奥妙所在)

  查了一下 UE 的帮助文档,上面对“Block Comment On Alt”的描述是这样的“The second set of block comments are in the form “Block Comment On Alt = ” and “Block Comment Off Alt = ” followed by up to five characters each that define the comment designators. If a Block Comment On Alt is defined but the Block Comment Off Alt is not defined the commenting will stop at the end of the line.”。看来块注释指示器有两种,这个办法还真是比较巧妙,但是要熟读 UE 文档才能想的到呀。
(DoNeY注:意即如果ultraedit在wordfile中对某个语言的语法着色只定义其Block Comment On Alt =作为第二种块注释的起始符号,而不定义第二种块注释的结束符号Block Comment Off Alt =,那么这个Block Comment On Alt 所定义的符号将会只注释掉从符号开始至行尾的部分,也就相当于换一个方法定义了行注释的符号了)

  改完以后再看 Lua 代码里的块注释,现在已经可以完美显示啦:D

posted @ 2008-10-21 17:35 DoNeY 阅读(3380) | 评论 (0)编辑 收藏

Making Draggable Frames 【为wow插件编写可拖动的Frame】


FW: http://www.wowwiki.com/Making_Draggable_Frames

XML Declarations

First, the XML tags movable="true" and enableMouse="true" must be in the frames declaration. Note: Some frame templates like 'button' already include enableMouse="true".

Example:


<Frame name="TellTrackFrame" enableMouse="true" movable="true" resizable="true" parent="UIParent" hidden="true">

Simple Dragging

One simple way to detect drag is to add OnDragStart and OnDragStop script elements to the frame:
<Scripts>
<OnLoad>
 this:RegisterForDrag("LeftButton");
</OnLoad>
<OnDragStart>
 this:StartMoving();
 this.isMoving = true;
</OnDragStart>
<OnDragStop>
 this:StopMovingOrSizing();
 this.isMoving = false;
</OnDragStop>
</Scripts>

Advanced Dragging

Another way, which is more responsive but requires an onhide element so that the frame wont get stuck to the mouse:
<Scripts>
<OnMouseUp>
 if ( this.isMoving ) then
  this:StopMovingOrSizing();
  this.isMoving = false;
 end
</OnMouseUp>
<OnMouseDown>
 if ( ( ( not this.isLocked ) or ( this.isLocked == 0 ) ) and ( arg1 == "LeftButton" ) ) then
  this:StartMoving();
  this.isMoving = true;
 end
</OnMouseDown>
<OnHide>
 if ( this.isMoving ) then
  this:StopMovingOrSizing();
  this.isMoving = false;
 end
</OnHide>
</Scripts>

Note: this method also demonstrates an optional isLocked parameter to determine whether you can drag the frame or not.

Parent Dragging

Some advanced dragging addons use overlays that make default Blizzard frames draggable. This is possible by using GetParent when starting and stopping drag. To do this, one must make the parent frame movable through the use of the SetMovable widget function, i.e. frame:SetMovable(true). One drawback with overlay frames that are mouse enabled is that they will prevent the parent frame's click script tags from being called so you often have to simulate their click events.

Quick Dragging Code

While somewhat untested there is an easier and more automatic way to activate dragging. If you have your <Frame> delcaration attributes "enableMouse" and "movable" set to true, dragging may be accomplished by adding a <TitleRegion> tag inside of your <Frame>
<Frame name="myname" frameStrata="HIGH" toplevel="true" enableMouse="true" movable="true" parent="UIParent">
 
<TitleRegion setAllPoints="true"/>
 
</Frame>

I haven't discovered any adverse side effects to doing this yet, I am not even sure if this is the intended use for it.

Using this method can result in the frame not responding to other mouse events, also both mouse buttons will drag the frame.


You can also specify <Size> and <Anchors> within <TitleRegion>, e.g.

<Frame name="myname" frameStrata="HIGH" toplevel="true" enableMouse="true" movable="true" parent="UIParent">
 
<TitleRegion>
  
<Size>
   
<AbsDimension x="200" y="20"/>
  
</Size>
  
<Anchors>
   
<Anchor point="TOP"/>
  
</Anchors>
 
</TitleRegion>
 
</Frame>

This way, your <Frame> can still receive mouse events, and you can only drag it by clicking within its <TitleRegion>.

Lua Only Approach

If your frame is called MyFrame -
MyFrame:SetMovable(true)
MyFrame
:EnableMouse(true)
MyFrame
:SetScript("OnMouseDown",function()
  MyFrame
:StartMoving()
end)
MyFrame
:SetScript("OnMouseUp",function()
  MyFrame
:StopMovingOrSizing()
end)








posted @ 2008-10-21 16:11 DoNeY 阅读(713) | 评论 (0)编辑 收藏

仅列出标题  
  doneykoo blogjava