可不可以把你做的那个个人网页模板源代码站源代码发给我,急

我们跟人家做了一个网站,可是又不想把源代码给人家,我想请问一下怎么办?怎样给源代码加密,我用的是jsp
[问题点数:0分]
我们跟人家做了一个网站,可是又不想把源代码给人家,我想请问一下怎么办?怎样给源代码加密,我用的是jsp
[问题点数:0分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2003年1月 Java大版内专家分月排行榜第二
2003年5月 Java大版内专家分月排行榜第三2002年12月 Java大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。•回答
•回答
•回答
•回答
•回答
猜你感兴趣
服务声明: 信息来源于互联网,不保证内容的可靠性、真实性及准确性,仅供参考,版权归原作者所有!Copyright &
.&&闽ICP备号&&&
Powered by当前位置:
为你的程序换个皮肤
为你的程序换个皮肤
发布日期: 16:43
浏览次数:5092次
标  签:windows
文章评分:5.0
操  作:
称号:未设置简介:...
文章概要:
目前这方面的小软件很多,我一直就想做这么一个东东,但是一直苦于时间有限,一直都没有做。最近一段时间,我发现这些方面的东西越来越多,而且都没有源代码,一些家伙在网站上给出这样那样的示例,其实都是在为自己的产品做广告,实在有违开源的思想。
最近终于有了一段假期,反正没什么事做就来试试,经过一段时间的学习和摸索,终于实现了一段简单的程序。现在我就给出一个简单的例子和解释,让大家明白这是一个怎么回事,教你如何利用这个技术给一个按钮换肤?
目前这方面的小软件很多,我一直就想做这么一个东东,但是一直苦于时间有限,一直都没有做。最近一段时间,我发现这些方面的东西越来越多,而且都没有源代码,一些家伙在网站上给出这样那样的示例,其实都是在为自己的产品做广告,实在有违开源的思想。
最近终于有了一段假期,反正没什么事做就来试试,经过一段时间的学习和摸索,终于实现了一段简单的程序。现在我就给出一个简单的例子和解释,让大家明白这是一个怎么回事,教你如何利用这个技术给一个按钮换肤?
以前我们一直利用重载一个类的办法来实现丰富多彩的个性化控件,如GuiToolkit、CJ60LIB,都是这样的工具,使用起来还是要在程序中插入大量的语句,这样做一方面增加了程序的复杂性,另一方面也增加了程序高度的难度。当然现在也有像SkinMagic、EasySkin这样的工具,只需要在你的程序里增加两行代码就可以实现对常用控件的换肤,但是这些工具都没有源代码,对于想学习开发的人来说实在没什么帮助。为了让大家都了解这项技术,我决定开发一个这样的程序,并公布源程序,希望有兴趣的朋友都来看看,动手做做,同时欢迎大家公开你的源程序,和大家一起分享你的成功和快乐。
首先,来给一个程序换肤,我们必须得到程序的句柄,然后给程序挂钩。下面的一段代码就实现了挂钩功能。
IRStartup( HINSTANCE hModule, DWORD dwThreadID )
globalWndHookEx = SetWindowsHookEx(
WH_CALLWNDPROC, (HOOKPROC) IRCallWndProc, hModule, dwThreadID );
return TRUE;
这也是像SkinMagic一类工具的初始化函数。当然在退出时也要释放钩子的。
IRComplete( void )
UnhookWindowsHookEx( globalWndHookEx );
return TRUE;
接下来,就是IRCallWndProc这个回调函数的编写,这是至关重要的一个环节,这个函数就是对所要换肤的类对象进行了监视,并改变其消息处理函数,实现换肤的目的。
LRESULT CALLBACK IRCallWndProc( int nCode, WPARAM wParam, LPARAM lParam )
PCWPSTRUCT pcs = (PCWPSTRUCT) lP
hWnd = pcs-&
if( hWnd ) {
sClassName[201] = "\0";
GetClassName( hWnd, sClassName, 200 );
if( strcmp( sClassName, "Button" ) == 0 ) {
CWnd *pWnd = CWnd::FromHandle( hWnd );
DWORD dwStyle = pWnd-&GetStyle();
if( dwStyle == 0x ) {
WNDPROC WndP
WndProc = (WNDPROC) GetWindowLong( hWnd, GWL_WNDPROC );
if( CButtonExt::m_cWndProc != NULL && \
WndProc != CButtonExt::m_cWndProc )
return CallNextHookEx( globalWndHookEx,
if( WndProc != (WNDPROC) CButtonExt::DefWindowProc ) {
WndProc = (WNDPROC) SetWindowLong(
GWL_WNDPROC,
(LONG) CButtonExt::DefWindowProc );
CButtonExt::m_cWndProc = WndP
return CallNextHookEx( globalWndHookEx, nCode, wParam, lParam );
这样就对按钮的消息进行了挂钩处理了,就可以重新来绘制按钮了。紧接着就是给出按钮控件的绘制方法,我是用一个类来实现的,都是使用的静态函数直接调用的。
#define STATUS_BUTTON_NORMAL 0x
#define STATUS_BUTTON_HOVER
#define STATUS_BUTTON_DOWN
class CButtonExt
CButtonExt() {}
~CButtonExt() {}
static UINT
static WNDPROC m_cWndP
static LRESULT DefWindowProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
CWnd *pWnd = NULL;
pWnd = CWnd::FromHandle( hWnd );
switch( message )
case WM_PAINT:
return OnPaint( pWnd );
case WM_LBUTTONDOWN:
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
return OnLButtonDown( pWnd, 0, point );
case WM_LBUTTONUP:
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
return OnLButtonUp( pWnd, 0, point );
case WM_LBUTTONDBLCLK:
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
return OnLButtonDblClk( pWnd, 0, point );
case WM_MOUSEMOVE:
point.x = LOWORD(lParam);
point.y = HIWORD(lParam);
return OnMouseMove( pWnd, 0, point );
return CallWindowProc( m_cWndProc, hWnd, message, wParam, lParam );
static LRESULT OnLButtonDown( CWnd *pWnd, UINT nFlags, CPoint point ) {
m_nStatus = STATUS_BUTTON_DOWN;
pWnd-&Invalidate();
pWnd-&UpdateWindow();
return TRUE;
static LRESULT OnLButtonUp( CWnd *pWnd, UINT nFlags, CPoint point ) {
if( m_nStatus != STATUS_BUTTON_NORMAL ) {
m_nStatus = STATUS_BUTTON_NORMAL;
pWnd-&Invalidate();
pWnd-&UpdateWindow();
SendMessage( pWnd-&GetParent()-&m_hWnd,
WM_COMMAND,
pWnd-&GetDlgCtrlID(),
(LPARAM) (pWnd-&m_hWnd) );
return TRUE;
static LRESULT OnLButtonDblClk( CWnd *pWnd, UINT nFlags, CPoint point ) {
return TRUE;
static LRESULT OnMouseMove( CWnd *pWnd, UINT nFlags, CPoint point ) {
HRGN hRgn = CreateRectRgn( 0, 0, 0, 0 );
pWnd-&GetWindowRgn( hRgn );
BOOL bIn = PtInRegion( hRgn, point.x, point.y );
if( bIn ) {
if( m_nStatus == STATUS_BUTTON_DOWN ) return TRUE;
if( m_nStatus != STATUS_BUTTON_HOVER ) {
m_nStatus = STATUS_BUTTON_HOVER;
pWnd-&Invalidate();
pWnd-&UpdateWindow();
pWnd-&SetCapture();
if ( m_nStatus == STATUS_BUTTON_HOVER ) {
m_nStatus = STATUS_BUTTON_NORMAL;
pWnd-&Invalidate();
pWnd-&UpdateWindow();
ReleaseCapture();
DeleteObject( hRgn );
return TRUE;
static LRESULT OnPaint( CWnd *pWnd ) {
CPaintDC dc(pWnd);
dc.SetBkMode( TRANSPARENT );
Font.CreateFont( 12, 0, 0, 0, FW_HEAVY, 0, 0, 0, ANSI_CHARSET, \
OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, \
VARIABLE_PITCH | FF_SWISS, "MS Sans Serif" );
pOldFont = dc.SelectObject( &Font );
if( m_nStatus == STATUS_BUTTON_DOWN ) {
Brush.CreateSolidBrush( RGB( 160, 160, 160 ) );
Pen.CreatePen( PS_SOLID, 1, RGB( 100, 100, 100 ) );
dc.SetTextColor( RGB( 50, 50, 250 ) );
} else if( m_nStatus == STATUS_BUTTON_HOVER ) {
Brush.CreateSolidBrush( RGB( 60, 60, 180 ) );
Pen.CreatePen( PS_SOLID, 1, RGB( 0, 0, 0 ) );
dc.SetTextColor( RGB( 250, 250, 50 ) );
} else if( m_nStatus == STATUS_BUTTON_NORMAL ) {
Brush.CreateSolidBrush( RGB( 240, 240, 240 ) );
Pen.CreatePen( PS_SOLID, 1, RGB( 120, 120, 120 ) );
dc.SetTextColor( RGB( 50, 50, 50 ) );
pOldBrush = dc.SelectObject( &Brush );
pOldPen = dc.SelectObject( &Pen );
pWnd-&GetClientRect( &rc );
dc.RoundRect( &rc, pt );
HRGN hRgn = CreateRectRgn( rc.left, rc.top, rc.right, rc.bottom );
pWnd-&SetWindowRgn( hRgn, TRUE );
DeleteObject( hRgn );
pWnd-&GetWindowText( cs );
dc.DrawText( cs, &rc, DT_CENTER | DT_VCENTER | DT_SINGLELINE );
dc.SelectObject( pOldFont );
dc.SelectObject( pOldBrush );
dc.SelectObject( pOldPen );
return TRUE;
static LRESULT OnEraseBkgnd( CWnd *pWnd, CDC *pDC ) {
return TRUE;
UINT CButtonExt::m_nStatus = STATUS_BUTTON_NORMAL;
WNDPROC CButtonExt::m_cWndProc = NULL
程序结构还是很清楚的,这时做一些简单的说明。m_nStatus用来标志按钮的状态,m_cWndProc用来保存系统的消息处理函数地址。其他就不用说了吧。 最后,就是如何在程序中使用的问题了。调用方法其实很简单,在CSkinApp类的InitInstance()函数中加入这样的一句话:
IRStartup( GetModuleHandle( NULL ), GetCurrentThreadId() );
在CSkinApp类的ExitInstance()中加入这样的一句话:
IRComplete();
这样就实现了对按钮的换肤,是不是很简单啊,我只是做了一个简单的实现,还有很多工作需要大家一起来做,希望有兴趣的朋友一起来做,有什么问题请到 http://www.110i.net上发问,同时也希望大家把你们的作品公布出来,SkinDemo的开发网站就在http://www.110i.net,发布你的后继开发,贴出你的心得。
最多还可以输入100字
【VIP年会员制套餐】
【C/C++软件工程师实战能力集训大纲】
VC知识库发布了C/C++业界的“本草纲目”
【牛人都在千人一号群! 加群三步走!!!】
第一步:请必须加VC知识库QQ: 为好友;
第二步:请必须关注本站微博:
第三步:申请加入群:.(必须将关注微博截屏发到QQ方可通过!)
【最新2013:】
全部100% VC++源码提供: E-Form++全新大型SCADA & HMI解决方案源码、CAD解决方案源码、Gis解决方案源码 、电力石油化工仿真与图形建模解决方案源码、大量其他高级制图VC++源码下载!
【 新视频发布】
o o o o o o o o o o
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
本文介绍了套接字编程的基本知识。...我想制作一个网页(一个作业)有人有源代码吗?内容随便 最好能看出来是学生做的,马上要交 的急用_百度知道
我想制作一个网页(一个作业)有人有源代码吗?内容随便 最好能看出来是学生做的,马上要交 的急用
提问者采纳
为了方便大家下载参考。任你挑选我有大二时做的dreamweaver的网页作业,不需要注册。邮箱我就不单独发了。有20份作业的源文件。可以直接下载。网盘的下载地址,也不需要积分,附在了下面<file fsid="" link="/share/link?shareid=548801&uk=" name="dreamweaver网页作业百度网盘下载地址。我把网页作业源文件打包上传到我的百度网盘
提问者评价
十分的感谢呢!!!
其他类似问题
您可能关注的推广
源代码的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 个人网页模板源代码 的文章

 

随机推荐