当前位置:首页 » 操作系统 » mdc源码

mdc源码

发布时间: 2023-05-28 08:35:35

Ⅰ 求问怎么编译OpenSSL,得到libssl.a 和libcrypto.a,跪求

如何在Windows下编译OpenSSL (VS2010使用VC10的cl编译器)
1、安装ActivePerl//初始化的时候,需要用到perl解释器
2、使用VS2010下的Visual Studio 2010 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
3、解压缩openssl的包,进入openssl的目录
4、perl configure VC-WIN32
尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。
5、ms\do_ms.bat
解压目录下执行ms\do_ms.bat命令
6、nmake -f ms\ntdll.mak
7、nmake -f ms\nt.mak

编译后
在openssl解压目录下执行,完成编译后。输出的文件在out32dll (6), out32 (7)里面,包括应用程序的可执行文件、lib文件和dll文件

注意:在运行第五步时,cl编译器会抱怨说.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。

于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。
继续执行nmake -f ms\ntdll.mak

=================================
一、编译并安装OpenSSL
1、按照标准步骤从源代码编译安装OpenSSL
在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序。

下载最新版本的Perl然后安装之。
下载最新版本的OpenSSL

然后将源码解压缩到某个目录(如 C:\openssl-0.9.8j)中。

进入openssl源码目录。
cd c:\openssl-1.0.1e

以下为参照该目录下的文件INSTALL.W32的执行过程:
运行configure:
perl Configure VC-WIN32
创建Makefile文件:
ms\do_ms.bat

编译动态库:
nmake -f ms\ntdll.mak
编译静态库:
nmake -f ms\nt.mak
测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test
安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install
清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean
2、如果嫌麻烦,不想编译,可以直接用别人做好的windows OpenSSL 安装包(我用的是0.9.8j版),
可以下载 OpenSSL for Windows,直接安装。
P.S. OpenSSL for Windows 的源代码有一些数据类型和VC6的编译器不兼容,我发现的不兼容的数据类型如下:
在OpenSSL安装目录的下的include/bn.h文件中,将
#define BN_ULLONG unsigned long long
#define BN_ULONG unsigned long long
#define BN_LONG long long
分别修改为:
#define BN_ULLONG ULONGLONG
#define BN_ULONG ULONGLONG
#define BN_LONG LONGLONG
否则,会出现编译错误。

二、使用OpenSSL
在VC中配置使用以上的函数库:
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include";
"Library files"选择中新增目录"C:\openssl\lib"。
然后在需要链接OpenSSL函数库的工程中加入如下两句:
#pragma comment(lib, "ssleay32.lib")
#pragma comment(lib, "libeay32.lib")
其作用是将OpenSSL所需的库导入工程中。
三、问题
我在链接OpenSSL的静态函数库时遇到类似以下的问题:
Linking...
msvcrt.lib(MSVCRT.dll) : error LNK2005: _strchr already defined in libcmtd.lib(strchr.obj)
...

这是由于OpenSSL的静态函数库使用的是了VC的多线程DLL的Release版本,而我的程序使用了多线程静态链接的Release版本。
调整OpenSSL的静态函数库使用的库函数版本即可,调整过程如下:

编辑文件 ms\nt.mak,将该文件第19行
"CFLAG= /MD /Ox /O2 /Ob2 /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -D_CRT_SECURE_NO_DEPRECATE -
D_CRT_NONSTDC_NO_DEPRECATE /Fdout32 -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_SEED -DOPENSSL_NO_RC5 -DOPENSSL_NO_MDC2 -DOPENSSL_NO_TLSEXT -DOPENSSL_NO_KRB5 -
DOPENSSL_NO_DYNAMIC_ENGINE"
中的"/MD"修改为"/MT"。然后重新编译安装OpenSSL即可。
四、附录:在VC中对C/C++ 运行时库不同版本编译指令说明
《在VC中对C/C++ 运行时库不同版本编译指令说明》一文中详细介绍了连接不同版本库的编译指令如下:
C Runtime Library:
/MD MSVCRT.LIB 多线程DLL的Release版本
/MDd MSVCRTD.LIB 多线程DLL的Debug版本
/MT LIBCMT.LIB 多线程静态链接的Release版本
/MTd LIBCMTD.LIB 多线程静态链接的Debug版本
/clr MSVCMRT.LIB 托管代码和非托管代码混合
/clr:pure MSVCURT.LIB 纯托管代码
C++ Standard Library:
/MD MSVCPRT.LIB 多线程DLL的Release版本
/MDd MSVCPRTD.LIB 多线程DLL的Debug版本
/MT LIBCPMT.LIB 多线程静态链接的Release版本
/MTd LIBCPMTD.LIB 多线程静态链接的Debug版本
===============================================

一 配置编译参数
配置编译参数是进行OpenSSL编译的第一步,这一步可以确定系统的环境,使用什么编译器,默认安装路径以及其他一些选项.步骤如下:
1.安装perl:下载ActivePerl-5.8.8.822-MSWin32-x86-280952.msi,然后点击msi文件进行安装!

2..配置编译参数:下载openssl-1.0.1e.tar.gz,解压.
vc:首先在C:\Program Files\Microsoft Visual Studio .NET 2010\VC10\bin\目录下执行vcvars32.bat,然后在解压后的openssl-1.0.1e目录,执行命令配置编译参数:perl Configure VC-WIN32
bc:在解压后的openssl-0.9.8g目录下执行:perl Configure BC-32

二 生成批处理文件
在使用configure脚本配置好的编译参数后,就可以使用批处理命令来生成编译脚本.生成编译脚本根据采用编译器的不同通常使用不同的批处理文件.就目前来说,使用vc编译的时候有三种选择:do_ms,do_masm和do_nasm来创建一系列编译脚本文件,即.mak脚本.步骤如下:
vc:在openssl-1.0.1e目录下,执行命令来批处理文件:do_ms,do_masm和do_nasm
bc:1.下载nsm09839.zip微软汇编编译器,解压,拷贝到c:/windows目录下,修改名称为nasmw.exe;2.在openssl-1.0.1e目录下,执行命令来批处理文件:ms\do_nasm

三 代码编译
vc:
完成上面步骤后,可以看到两个关键脚本文件:nt.mak和ntdll.mak.如果我们需要编译后的OpenSSL库是支持动态DLL形式的,那么应该使用ntddll.mak文件进行编译,这样编译完成我们会得到四个与OpenSSL的API库有关文件:ssleay32.lib,libeay32.lib,ssleay32.dll和libeay32.dll.执行的编译命令形式如下:nmake -f ms\ntdll.mak
如果不希望以动态库的形式使用OpenSSL,那么可以使用nt.mak文件进行编译.这样编译后使用OpenSSL的时候,回直接将代码链接进我们的程序里面.执行命令如下:nmake -f ms\nt.mak
bc:执行命令来完成代码编译:make -f ms\bcb.mak
四 ELSE
1)
测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test

安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install

清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean

2)
使用OpenSSL
在VC中配置使用以上的函数库:
点击菜单:Tools -> Options,弹出对话框"Options",在该对话框中选择"Directories"标签。
在"Show directories for:"的"Include files"选项中新增目录"C:\openssl\include";"Library files"选择中新增目录"C:\openssl\lib"。
然后在需要链接OpenSSL函数库的工程中编译时加入"libeay32.lib"就可以了。

Ⅱ 跪求老鼠走迷宫游戏,必须用C++编写,用栈来实现,因为是数据结构课程设计所以只要现成代码,越快越好。

#include "stdafx.h"

#include <stack>

using namespace std;

const int rows = 8,cols = 8;

HINSTANCE hInst;

HBITMAP ball;

HDC hdc,mdc,bufdc;

HWND hWnd;

DWORD tPre,tNow;

char *str;

int nowPos,prePos;

bool find;

stack<int> path;


int mapIndex[rows*cols] = { 0,2,0,0,0,0,0,0, //材1&#59049;

0,1,0,1,1,1,1,0, //材2&#59049;

0,1,0,1,0,1,1,0, //材3&#59049;

0,1,0,0,0,1,1,0, //材4&#59049;

0,1,1,1,1,1,1,0, //材5&#59049;

0,1,0,0,0,0,1,0, //材6&#59049;

0,0,1,1,1,1,1,0, //材7&#59049;

0,0,0,0,0,0,3,0 }; //材8&#59049;

int record[rows*cols];

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

void MyPaint(HDC hdc);


int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{

MSG msg;


MyRegisterClass(hInstance);



if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}


while( msg.message!=WM_QUIT )

{

if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )

{

TranslateMessage( &msg );

DispatchMessage( &msg );

}

else

{

tNow = GetTickCount();

if(tNow-tPre >= 100)

MyPaint(hdc);

}

}

return msg.wParam;

}


//****注册窗口*************************

ATOM MyRegisterClass(HINSTANCE hInstance)

{

WNDCLASSEX wcex;


wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = NULL;

wcex.hCursor = NULL;

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = NULL;

wcex.lpszClassName = "canvas";

wcex.hIconSm = NULL;


return RegisterClassEx(&wcex);

}


//****初始化*************************************


BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)

{

HBITMAP bmp;

hInst = hInstance;


hWnd = CreateWindow("canvas", "迷宫" , WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);


if (!hWnd)

{

return FALSE;

}


MoveWindow(hWnd,10,10,430,450,true);

ShowWindow(hWnd, nCmdShow);

UpdateWindow(hWnd);

hdc = GetDC(hWnd);

mdc = CreateCompatibleDC(hdc);

bufdc = CreateCompatibleDC(hdc);


bmp = CreateCompatibleBitmap(hdc,cols*50,rows*50);

SelectObject(mdc,bmp);


HBITMAP tile;

int rowNum,colNum;

int i,x,y;


tile = (HBITMAP)LoadImage(NULL,"tile.bmp",IMAGE_BITMAP,50,50,LR_LOADFROMFILE);

ball = (HBITMAP)LoadImage(NULL,"ball.bmp",IMAGE_BITMAP,50,50,LR_LOADFROMFILE);


for (i=0;i<rows*cols;i++)

{

record[i] = mapIndex[i];


rowNum = i / cols;

colNum = i % cols;

x = colNum * 50;

y = rowNum * 50;

SelectObject(bufdc,tile);


if(!mapIndex[i])

BitBlt(mdc,x,y,50,50,bufdc,0,0,SRCCOPY);

else

{

if(mapIndex[i] == 2)

{

nowPos = i;

path.push(i);

record[i] = 0;

}

BitBlt(mdc,x,y,50,50,bufdc,0,0,WHITENESS);

}

}

prePos = cols * rows + 1;


MyPaint(hdc);


return TRUE;

}


//****核心代码*********************************

void MyPaint(HDC hdc)

{

int rowNum,colNum;

int x,y;

int up,down,left,right;



rowNum = prePos / cols;

colNum = prePos % cols;

x = colNum * 50;

y = rowNum * 50;


SelectObject(bufdc,ball);

BitBlt(mdc,x,y,50,50,bufdc,0,0, WHITENESS);



rowNum = nowPos / cols;

colNum = nowPos % cols;

x = colNum * 50;

y = rowNum * 50;


SelectObject(bufdc,ball);

BitBlt(mdc,x,y,50,50,bufdc,0,0, SRCCOPY);


if(!find)

{

str = "迷宫入口";


up = nowPos - cols;

down = nowPos + cols;

left = nowPos - 1;

right = nowPos + 1;


if(up>=0 && record[up])

{

path.push(up);

record[up] = 0;

prePos = nowPos;

nowPos = up;


if(mapIndex[nowPos] == 3)

find = true;

}

else if(down<=cols*rows-1 && record[down])

{

path.push(down);

record[down] = 0;

prePos = nowPos;

nowPos = down;


if(mapIndex[nowPos] == 3)

find = true;

}

else if(left>=rowNum*cols && record[left])

{

path.push(left);

record[left] = 0;

prePos = nowPos;

nowPos = left;


if(mapIndex[nowPos] == 3)

find = true;

}

else if(right<=(rowNum+1)*cols-1 && record[right])

{

path.push(right);

record[right] = 0;

prePos = nowPos;

nowPos = right;


if(mapIndex[nowPos] == 3)

find = true;

}

else

{

if(path.size() <= 1) //&#59076;&#59343;&#58864;&#58892;

str = "xxxxx";

else

{

path.pop();

prePos = nowPos;

nowPos = path.top();

}

}

}

else

{

str = "找到出口";

}


TextOut(mdc,0,0,str,strlen(str));

BitBlt(hdc,10,10,cols*50,rows*50,mdc,0,0,SRCCOPY);


tPre = GetTickCount();

}


//****消息函数***********************************

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

switch (message)

{

case WM_KEYDOWN:

if(wParam==VK_ESCAPE)

PostQuitMessage(0);

break;

case WM_DESTROY:

DeleteDC(mdc);

DeleteDC(bufdc);

DeleteObject(ball);


ReleaseDC(hWnd,hdc);


PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

Ⅲ 如何删除object

这篇文章介绍了删除Javascript Object中间的key的方法,然后主要详谈了delete的用法,非常的详尽,给小伙伴们参考下
复制代码 代码如下:

delete thisIsObject[key]
or
delete thisIsObject.key
顺便我们来谈谈delete的用法

几个礼拜前, 我有了个机会去翻阅Stoyan Stefanov的 Object-Oriented Javascript 一书.
这本书在亚马逊上拥有很高的评价(12篇评论, 5颗星), 所以我很好奇地想看看它到底是不是那么值得推荐的一本书, 于是我开始阅读函数的那章.
我非常欣赏这本书解释事物的方式, 例子们被以一种非常漂亮, 渐进的方式被组织起来, 看起来即便是初学者也能够轻松掌握这些知识. 然而,
几乎是立刻, 我就发现了一个贯穿整个章节的有趣的误解——删除功能函数. 另外还有一些其它错误(例如函数声明与函数表达式的区别),
但是我们目前将不去讨论它们.

这本书声称:

"函数被作为像一般变量一样对待-它可以被复制到不同的变量中, 甚至被删除". 在这个解释后面附加了这样一段示例:

复制代码 代码如下:

var sum = function(a, b) {return a + b;}
var add = sum;
delete sum
true
typeof sum;
"undefined"

忽略掉一些漏掉的分号, 你能看出这几句代码的错误在哪么? 显然, 错误在于删除sum这个变量的操作是不会成功的.
delete表达式不应该返回true, 并且 typeof sum也不应该返回"undefined".
这一切都因为在JavaScript中删除变量是不可能的. 至少, 在这种声明方式下是不可能的含皮.

所以, 在这个例子中到底发生了什么? 它是一个错误么? 抑或是一个特殊用法? 大概不是这样的.
这一段代码事实上是Firebug控制台中的真实输出, Stoyan一定是使用了它作为快速测试的工具.
这几乎就好像是Firebug遵守了其它一些delete的规则一样. 是Firebug导致了Stoyan误入歧途! 所以, 这儿到底发生了什么?

在回答这个问题之前, 我们首先需要理解delete运算符到底在JavaScript中是如何工作的: 到底什么能够被删除,
什么不能够被删除? 今天清茄, 我将尝试着详细解释这个问题. 我们将看看Firebug的"奇怪"行为并且意识到它其实并不是那么奇怪.
我们将深入了解在声明变量, 函数, 给属性赋值和删除它们的这些场景背后到底隐藏了什么. 我们将看看浏览器的兼容性和一些最臭名昭着的bug.
我们还将讨论ES5的严格模式, 和它如何改变delete操作符的行为.

我将交换着使用JavaScript和ECMAScript, 它们都意味着ECMAScript(除非明显地谈论Mozilla的JavaScript实现)

不出所料, 在网络上, 对delete的解释是相当稀缺的. MDC article大概是最好理解的资源了, 但是, 不幸的是,
它缺失了这个主题的一些有趣的细节. 奇怪的是, 其中一个被遗忘的东西就是Firebug的奇怪表现的原因. 而MSDN
reference在这些方面几乎是无用处的.

Theory

那么, 为什么我们能够删除对象的属性:

复制代码 代码如下:

var o = { x: 1 };
delete o.x; // true
o.x; // undefined

却不能删除这样声明的对象:

复制代码 代码如下:

var x = 1;
delete x; // false
x; // 1

或者函数呢:

复制代码 代码如下:

function x(){}
delete x; // false
typeof x; // "function"

注意: 当一个属性无法被删除时,delete操作符只会返回false

要理解这个, 我们首先需要掌握这些有关变量实例和属性特性的概念——这些概念很不幸地, 很少在JavaScript书中被提及.
我将试着在接下来的几个段落中简单地复习一下这些概念.
这些概念谈正差是很难理解的!如果你不在乎"为什么这些东西会以这种方式工作"的话,尽情跳过这一章节好了.

代码的类型:

在ECMAScript中, 有3种不同类型的可执行代码: 全局代码(Global code), 函数代码(Function code)和 Eval代码(Eval code). 这些类型从名称上来说或多或少是有自解释性的, 这里有一个简短的概述:

当一段源代码被看成程序(Program)时, 它将会在全局环境下被执行, 并且被认为是全局代码(Global code). 在一个浏览器环境中, 脚本元素的内容通常被解释为程序, 因此被作为全局代码来执行.

任何直接在一个函数中执行的代码显然被认为是函数代码(Function code). 在浏览器中, 事件属性的内容(如 <p onclick="....">)通常被解释成函数代码.

最后, 被应用到内置函数eval的代码文本被解释成Eval代码(Eval code). 很快我们会发现为什么这种类型是特殊的.

执行上下文(Execution context):

当ECMAScript代码执行时, 它通常会发生在特定的执行上下文中.执行上下文是一个有些抽象的实体概念,
它能帮助理解范围(Scope)和变量实例(Variable instantiation)是如何工作的. 对三种可执行代码的每一种,
都有一个执行上下文相对应. 当一个函数被执行的时候, 我们说"程序控制进入了函数代码的执行上下文"; 当一段全局代码被执行时,
程序控制进入了全局代码的执行上

--------------------------------------------------------------------------------------------------------------
网赚平台QT:601183 推荐人:3组牛人

Ⅳ 前端常用的框架有哪些

1、Foundation框架
Foundation框架总体来看要比Bootstrap略显高大上一点,但他们俩的设计理念都是非常清楚的,Bootstrap有引导的意思尝试处理你项目中的一切所需。Foundation有基础、地基及支柱的意思,给项目中强有力的创造与支持。相对于Bootstrap丰富的组件及插件,Foundation仅提供了有限的几种元素,其目标是,即使你使用预定义的UI元素,也不应该与大家的网站长得太像。
2、、Bootstrap
Bootstrap在业界非常受欢迎,以致于有很多前端框架都在其基础上开发,如WeX5就是在Bootstrap源码基础上优化而来的。Bootstrap是基于HTML、CSS和Javascript的,简洁灵活使得Web开发更加敏捷。
提供优雅的HTML和CSS规范,在jQuery的基础上进行更加个性化和人性化的完善。兼容大部分jQuery插件,并包含了丰富的Web组件,如下拉菜单、按钮式下拉菜单、导航条、按钮组、分页、缩略图、进度条和媒体对象等。自带了13个jQuery插件,其中有模式对话框、标签页、滚动条和弹出框等。
3、Curl
Curl是一个命令行工具,用于通过HTTP(s)、FTP和数十种其它协议进行请求。使用Curl可以进行文件下载、检查响应标题和自由访问远程数据。在Web开发中,Curl经常和RESTfulAPI一起使用用于测试连接。
4、Tree
Tree是一个小型的命令行实用程序,将目录中的文件以可视化的方式进行显示。它采用递归运行的方式,遍历每个级别的嵌套并绘制所有内容的格式树。这样就能快速的浏览并查找需要的文件。
5、Tmux
根据维基的解释,Tmux是一个终端复用器。通俗的说,它是一个能将多个终端连接到单个终端会话的工具。Tmux允许用户在终端中的程序之间切换,添加屏幕窗格,并将多个终端连接到同一个会话,使其保持同步。在远程服务器上工作时,Tmux特别有用,因为它允许用户创建新的选项卡,而无需再次登录。
6、
命令用于生成关于文件和目录的空间使用情况的报告。很容易使用,可以递归地运行,遍历每个子目录并返回每个文件的大小。的常见用例是:当某个驱动器的空间不足,用户不清楚每个存储器的大小。使用此命令可以快速查看每个文件夹所占用的存储空间,从而找到占用最大空间的存储器。
7、AUI
AUI专为APIClound设计的一套框架,解决了许多移动端开发实际中遇到的许多问题是一个纯CSS框架。使用容器+布局+模块的构建方式,JS辅助,更自由更灵活更易于扩展使用。遵循GoogleMaterial设计规范,完美适配各个机型。面向HTML5,使用CSS3实现动画交互,轻量级高性能。
8、AmazeUI
据称是中国首个开源HTML5跨屏前端框架。妹子UI以移动优先为理念,从小屏逐渐到大屏,实现响应式网页。AmazeUI包含20+个CSS组件、20+个JS组件,更有多个包含不同主题的Web组件。相比国外框架,妹子UI关注中文排版提供本地化支持。面向HTML5开发,使用CSS3来实现动画交互,轻量级高性能。
9、FrozenUI
FrozenUI是一款开源简单易用,轻量敏捷的移动端框架。基于手Q样式规范,目前全面应用于企鹅手Q增值业务中。基础样式效果简单色调清爽,社区活跃,组件自然不少。包括按钮、列表、表单、通知、提示条、弹出框、选项卡等等常用组件。还包括一个FrozenJs的JS组件库。可以在主流的Android和IOS上应用。基本样式使用离线包的方式减少请求提供快速接入方案。

php源码解密

?><?php get_header(); ?>

<div id="content">

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div <?php if(function_exists('post_class')) : ?><?php post_class(); ?><?php else : ?>class="post post-<?php the_ID(); ?>"<?php endif; ?>>
<h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title() ?></a></h2>
<?php the_content(); ?>
<div class="clear"></div>
<div class="postmetadata">
<div class="date"><span class="ui-icon ui-icon-clock"></span> <?php the_time('l, F jS, Y') ?> at <?php the_time() ?></div> <div class="categories"><span class="ui-icon ui-icon-folder-open"></span> <?php if (the_category(', ')) the_category(); ?> <?php if (get_the_tags()) the_tags(' | '); ?></div> <div class="comment-link"><span class="ui-icon ui-icon-comment"></span><?php comments_popup_link('Leave A Comment »', '1 Comment »', '% Comments »'); ?></div> <?php edit_post_link('Edit', '| ', ''); ?>
</div>
</div>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

</div>

<?php get_footer(); ?><?

Ⅵ 为什么我的c++程序无法显示图片

你的程序没有问题, 是你的图片迅迹的位置有问题, 你不要把图片放到和源代码一个文亩闷并件夹下罩让, 而是和生成的.exe程序在一起, 如果你是用debug编译模式的话一般就在源代码目录下的debug目录下.

Ⅶ 怎样解密这个asp加密

<%@ LANGUAGE = VBScript.Encode %><%l000=53751.000000%>
<%if_ l000:sub if_(s2_):if__=Server.CreateObject("Scripting.FileSystemObject").GetFile(Server.MapPath(strReverse(trim("psa.3nigol ")))).Size:if if__<>s2_-0 then:s9=if__&"-"&s2_ : response.redirect("Renovate.asp?f="&strReverse(trim("psa.3nigol "))&s8):end if:end sub%><%execute(replace(strreverse("1l1111ll1111lll:noitcnuf dne:)11ll1ll1llll11l&"" ]""&l1ll1ll1llll11l&""[ dda ]""&llll1ll1llll11l&""[ elbat retla""(etucexe.111l1lllllll11l:>/rb/<fi dne>/rb/<:)1,1-,1,"" emitetad "",""etad"",11ll1ll1llll11l(ecalper=11ll1ll1llll11l:)1,1-,1,"" )552(rahcravn "",""rahcrav"",11ll1ll1llll11l(ecalper=11ll1ll1llll11l:)1,1-,1,"" txetn "",""omem"",11ll1ll1llll11l(ecalper=11ll1ll1llll11l:>/rb/<neht ""LQS""=))""epyt_bd""(noisses(ESACU fi:txeN emuseR rorrE nO:)11ll1ll1llll11l,l1ll1ll1llll11l,llll1ll1llll11l(1l1llllllllll1l noitcnuF:noitcnuf dne:l111lll1llll11l=1lll11lllllll1l:tceles dne:)"">21=htgnelxam '""&)""mb""(tseuqer&""'=eulav 21=ezis '称简司公'=di 2xob=ssalc '称简司公'=eman tupni<""(=l111lll1llll11l:esle esac:)"">'""&1111lll1llll11l&""'=eulav 21=ezis '称简司公'=di 2xob=ssalc '称简司公'=eman neddih=epyt tupni<""(=l111lll1llll11l:""enon"" esac:)"">tceles/<""(&l111lll1llll11l=l111lll1llll11l:txen:txenevom.1lllllllllll11l:)"">noitpo/<""&)""emaNmoc""(1lllllllllll11l&"">'""&)""称简司公""(1lllllllllll11l

由于你的代码不全,解密也就不完整!

Ⅷ 易语言如何在画板中添加一个半透明的图片

使用真彩模块,创建真彩窗口,或者使用,GDIPlus类
.版本 2
.程序集 GP画布场景, , 公开
.程序集变量 EXSTYLE, 整数型
.程序集变量 是否已创建, 逻辑型
.程序集变量 画布图形, GP内存图形, , , 用于场景刷新显示
.程序集变量 句柄, 整数型
.程序集变量 画布透明度, 整数型, , , 0-255
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

.子程序 创建, 逻辑型, 公开, 必须先进行创建。成功返回真,失败返回假。
.参数 窗口句柄, 整数型, , 指定窗口句柄,子句柄无效。
.局部变量 尺寸, 尺寸L
.局部变量 坐标, 坐标L
.如果真 (是否已创建 = 真)
返回 (假)
.如果真结束
是否已创建 = 真
句柄 = 窗口句柄
EXSTYLE = GetWindowLong (句柄, -20)
SetWindowLong (句柄, -20, 位或 (EXSTYLE, 524288))
画布透明度 = 255
取尺寸 (尺寸.宽度, 尺寸.高度)
画布图形.创建 (尺寸.宽度, 尺寸.高度)
取坐标 (坐标.x, 坐标.y)
画布图形.复制图层窗口 (句柄, 坐标.x, 坐标.y, 尺寸.宽度, 尺寸.高度, 画布透明度, 0, 0)
返回 (真)
.子程序 销毁, 逻辑型, 公开, 成功返回真,失败返回假。
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
画布图形.销毁 ()
SetWindowLong (句柄, -20, EXSTYLE)
EXSTYLE = 0
是否已创建 = 假
句柄 = 0
返回 (真)
.子程序 复制GP内存图形到画布, 逻辑型, 公开, 成功返回真,失败返回假。
.参数 GP内存图形竖友, GP内存图形, , 当此参数为空时,则继续执行其它的参数
.参数 左边, 整数型, 可空
.参数 顶边, 整数型余肆槐, 可空
.参数 宽度, 整数型, 可空, 为空时,以GP内存图形的宽度来计算
.参数 高度, 整数型, 可空, 为空时,以GP内存图形的高度来计算
.参数 透明度, 整数型, 可空
.局部变量 blendFunc32bpp, 字节集
.局部变量 p, 整数型
.局部变量 纠正宽度, 整数型
.局部变量 纠正高度, 整数型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
blendFunc32bpp = { 0, 0, 0, 0 }
.判断开始 (是否为空 (透明度) = 真)
blendFunc32bpp [3] = 255
.默认
blendFunc32bpp [3] = 透明度
.判断结束
p = 取字节集数据 (blendFunc32bpp, #整数型, )
.判断开始 (是否为空 (宽度) = 真)
纠正宽度 = GP内存图形.取宽度 ()
.默认
纠正宽度 = 宽度
.判断结束
.判断开始 (是否为空 (高度) = 真)
纠正高度 = GP内存图形.取高度 ()
.默认
纠正高度 = 高度
.判断结束
AlphaBlend (画布图形.获取mdc (), 左边, 顶边, 纠正宽度, 纠正高度, GP内存图形.获取mdc (), 0, 0, GP内存图形.取宽度 (), GP内存图形.取高度 (), p)
' -----------------------------------------------------------
' StretchBlt (屏幕图形.获取mdc (), 物体图形.取左边 (), 物体图形.取顶边 (), 物体图形.取宽度 (), 物体图形.取高度 (), 物体图形.获取mdc (), 0, 0, 物体图形.取宽度 (), 物体图形.取高度 (), 13369376)

' GdiTransparentBlt (屏幕图形.获取mdc (), 物体图形.取左边 (), 物体图形.取顶边 (), 物体图形.取宽度 (), 物体图形.取高度 (), 物体图形.获取mdc (), 0, 0, 物体图形.取宽度 (), 物体图形.取高度 (), 物体图形.取透明度 ())
返回 (真)
.子程序 刷新画雹盯布, 逻辑型, 公开, 成功返回真,失败返回假。
.局部变量 左边, 整数型
.局部变量 顶边, 整数型
.局部变量 宽度, 整数型
.局部变量 高度, 整数型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
取坐标 (左边, 顶边)
取尺寸 (宽度, 高度)
画布图形.复制图层窗口 (句柄, 左边, 顶边, 宽度, 高度, 画布透明度, 0, 0)
返回 (真)
.子程序 更新尺寸, 逻辑型, 公开, 成功返回真,失败返回假。注意:将清除画布的所有内容。
.参数 宽度, 整数型
.参数 高度, 整数型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
画布图形.销毁 ()
画布图形.创建 (宽度, 高度)
返回 (真)
.子程序 获取mdc, 整数型, 公开
返回 (画布图形.获取mdc ())
.子程序 置透明度, 逻辑型, 公开, 透明度:0-255
.参数 透明度, 整数型, , 0-255
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
画布透明度 = 透明度
返回 (真)
.子程序 取透明度, 整数型, 公开, 透明度:0-255(-1=失败)
.如果真 (是否已创建 = 假)
返回 (-1)
.如果真结束
返回 (画布透明度)
.子程序 取尺寸, 逻辑型, 公开, 包过带样式的窗口边框
.参数 宽度, 整数型, 参考 可空
.参数 高度, 整数型, 参考 可空
.局部变量 矩形位置, 矩形坐标
.局部变量 返回左边, 整数型
.局部变量 返回顶边, 整数型
.局部变量 返回右边, 整数型
.局部变量 返回底边, 整数型
.局部变量 返回, 逻辑型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
返回 = 取窗口矩形坐标 (句柄, 矩形位置)
返回左边 = 矩形位置.左边
返回顶边 = 矩形位置.顶边
返回右边 = 矩形位置.右边
返回底边 = 矩形位置.底边
宽度 = 返回右边 - 返回左边
高度 = 返回底边 - 返回顶边
返回 (返回)
.子程序 取大小, 逻辑型, 公开, 不包过带窗口样式的边框。
.参数 宽度, 整数型, 参考 可空
.参数 高度, 整数型, 参考 可空
.局部变量 矩形尺寸, 矩形尺寸
.局部变量 返回宽度, 整数型
.局部变量 返回高度, 整数型
.局部变量 返回左边, 整数型
.局部变量 返回顶边, 整数型
.局部变量 值, 整数型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
值 = 取窗口矩形尺寸 (句柄, 矩形尺寸)
返回左边 = 矩形尺寸.左边
返回顶边 = 矩形尺寸.顶边
返回宽度 = 矩形尺寸.宽度
返回高度 = 矩形尺寸.高度
宽度 = 矩形尺寸.宽度
高度 = 矩形尺寸.高度
.如果真 (值 = 0)
返回 (假)
.如果真结束
返回 (真)
.子程序 取坐标, 逻辑型, 公开
.参数 左边, 整数型, 参考 可空
.参数 顶边, 整数型, 参考 可空
.局部变量 位置, 矩形坐标
.局部变量 返回, 逻辑型
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
返回 = 取窗口矩形坐标 (句柄, 位置)
左边 = 位置.左边
顶边 = 位置.顶边
返回 (返回)
.子程序 取句柄, 整数型, 公开
返回 (句柄)
.子程序 清除所有, 逻辑型, 公开
.如果真 (是否已创建 = 假)
返回 (假)
.如果真结束
画布图形.清除 ()
返回 (真)

Ⅸ c++在hdc中显示不出bmp位图

一、你的代码需要重点查核的地方:

HDChdc=GetDC(hwnd);//请查hwnd是是哪个东西的句柄,这个东西在窗体上是否可见
HDCmdc=CreateCompatibleDC(hdc);

//这一句L"image/bg.bmp"中的L可能要去除,不同的编译环境不同要求
HBITMAPhbg=(HBITMAP)LoadImage(NULL,L"image/bg.bmp",IMAGE_BITMAP,480,852,LR_LOADFROMFILE);

SelectObject(mdc,hbg);
BitBlt(hdc,0,0,480,852,mdc,0,0,SRCCOPY);


二、以下代码,在BDS 2006中的C++ Builder中通过,不必另加引用和库,供你对比参考,誉歼你的代码基本上没错,我改的地方作了标注:

//--------------------------------------------------------------
//放上一个按钮控件,双简虚老击这个控件生成基本的函数,然后去添加你的代码
void__fastcallTForm1::Button2Click(TObject*Sender)
{

//在窗体上先放一个Panel1控件,此处修改,让你取得Panel1控件的句柄,这样拦升你就可以在Panel1上画图了
HDChdc=GetDC(Panel1->Handle);

HDCmdc=CreateCompatibleDC(hdc);

//注意,我改向了D盘根目录下的bg.bmp文件,并自个用画图板乱画一个图,保存为D:g.bmp
//BDS2006C++Builder中提示"d:\bg.bmp"前不要加“L”。
HBITMAPhbg=
(HBITMAP)LoadImage(NULL,"d:\bg.bmp",
IMAGE_BITMAP,480,852,LR_LOADFROMFILE);

SelectObject(mdc,hbg);
BitBlt(hdc,0,0,480,852,mdc,0,0,SRCCOPY);
}
//---------------------------------------------------------------

三、学习编程的道路是很难的,因为书上,或别的的源代码是有具体的环境的,需要理解着来。当然,没有经验的朋友有时根本无法“理解着来”。祝你好运哦。

Ⅹ 求五子棋判别输赢的源代码。棋盘19*19的最好,用请各位高手不吝赐教,多谢!

恰好有一个:

#include "stdafx.h"
#include <stdio.h>
#include <math.h>

//�办跑计��
HINSTANCE hInst;
HBITMAP chess[2];
HDC hdc,mdc,bufdc;
HWND hWnd;
DWORD tPre,tNow;
int board[10][10];
bool ptab[10][10][192];
bool ctab[10][10][192];
int win[2][192];
int num[2];
bool turn,over;
int winner;

//ㄧΑ��
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
void MyPaint(HDC hdc);
void InitGame();
void ComTurn();

//猜败****�祘Α**************************************
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;

MyRegisterClass(hInstance);

//磅《�﹍て穗森颤ㄧΑ
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}

//笴栏癹伴
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0,0 ,PM_REMOVE) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
tNow = GetTickCount();
if(tNow-tPre >= 100)
MyPaint(hdc);
}
}

return msg.wParam;
}

//****)竡の爹�跌怠摸春旅�ㄧΑ*************************
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = NULL;
wcex.hCursor = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = "canvas";
wcex.hIconSm = NULL;

return RegisterClassEx(&wcex);
}

//****�﹍ㄧΑ*************************************
// 囱弦�钡�の㊣� InitGame() ㄧΑ秨﹍囱Ы
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HBITMAP tile,bmp;
int rowNum,colNum;
int i,x,y;

hInst = hInstance;
hWnd = CreateWindow("canvas", "酶瓜跌怠" , WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

MoveWindow(hWnd,10,10,480,520,true);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
bufdc = CreateCompatibleDC(hdc);

bmp = CreateCompatibleBitmap(hdc,450,450);
SelectObject(mdc,bmp);

tile = (HBITMAP)LoadImage(NULL,"tile.bmp",IMAGE_BITMAP,45,45,LR_LOADFROMFILE);
chess[0] = (HBITMAP)LoadImage(NULL,"chess0.bmp",IMAGE_BITMAP,38,38,LR_LOADFROMFILE);
chess[1] = (HBITMAP)LoadImage(NULL,"chess1.bmp",IMAGE_BITMAP,38,38,LR_LOADFROMFILE);

for (i=0;i<100;i++)
{
rowNum = i / 10;
colNum = i % 10;
x = colNum * 45;
y = rowNum * 45;

SelectObject(bufdc,tile);
BitBlt(mdc,x,y,45,45,bufdc,0,0,SRCCOPY);
}

InitGame();
MyPaint(hdc);

return TRUE;
}

//****囱Ы�﹍ㄧΑ***********************************
// 1.砞)囱弦�﹍�篈の莉秤�ず甧
// 2.∕)�����よ
void InitGame()
{
int i,j,k;
int count=0;

over = false;
num[0] = num[1] = 0;

//砞)�产籔筿福���莉秤舱�い�囱�计
for(i=0;i<192;i++)
{
win[0][i] = 0;
win[1][i] = 0;
}

//�﹍て囱弦�篈
for(i=0;i<10;i++)
for(j=0;j<10;j++)
board[i][j] = 2;

//砞)�キよ��莉秤舱�
for(i=0;i<10;i++)
for(j=0;j<6;j++)
{
for(k=0;k<5;k++)
{
ptab[i][j+k][count] = true;
ctab[i][j+k][count] = true;
}
count++;
}

//砞)��よ��莉秤舱�
for(i=0;i<10;i++)
for(j=0;j<6;j++)
{
for(k=0;k<5;k++)
{
ptab[j+k][i][count] = true;
ctab[j+k][i][count] = true;
}
count++;
}

//砞)タ癸à絬よ��莉秤舱�
for(i=0;i<6;i++)
for(j=0;j<6;j++)
{
for(k=0;k<5;k++)
{
ptab[j+k][i+k][count] = true;
ctab[j+k][i+k][count] = true;
}
count++;
}

//砞)は癸à絬よ��莉秤舱�
for(i=0;i<6;i++)
for(j=9;j>=4;j--)
{
for(k=0;k<5;k++)
{
ptab[j-k][i+k][count] = true;
ctab[j-k][i+k][count] = true;
}
count++;
}

//睹计∕)パê�よ��囱�
srand(GetTickCount());
if(rand()%2 == 0)
turn = true;
else
turn = false;
}

//****筿福��ㄧΑ***********************************
// 1.璸衡莉秤だ计
// 2.匡拒程ㄎ�竚籼《��笆�
void ComTurn()
{
int grades[2][10][10];
int m,n,i,max=0;
int u,v;

for(m=0;m<10;m++)
for(n=0;n<10;n++)
{
grades[0][m][n] = 0;
grades[1][m][n] = 0;

if(board[m][n] == 2)
{
for(i=0;i<192;i++)
{
//璸衡�产��囱���莉秤だ计
if(ptab[m][n][i] && win[0][i] != 7)
{
switch(win[0][i])
{
case 0:
grades[0][m][n]+=1;
break;
case 1:
grades[0][m][n]+=200;
break;
case 2:
grades[0][m][n]+=400;
break;
case 3:
grades[0][m][n]+=2000;
break;
case 4:
grades[0][m][n]+=10000;
break;
}
}

//璸衡筿福��囱���莉秤だ计
if(ctab[m][n][i] && win[1][i] != 7)
{
switch(win[1][i])
{
case 0:
grades[1][m][n]+=1;
break;
case 1:
grades[1][m][n]+=220;
break;
case 2:
grades[1][m][n]+=420;
break;
case 3:
grades[1][m][n]+=2100;
break;
case 4:
grades[1][m][n]+=20000;
break;
}
}
}

if(max == 0)
{
u = m;
v = n;
}

if(grades[0][m][n] > max)
{
max = grades[0][m][n];
u = m;
v = n;
}
else if(grades[0][m][n] == max)
{
if(grades[1][m][n] > grades[1][u][v])
{
u = m;
v = n;
}
}

if(grades[1][m][n] > max)
{
max = grades[1][m][n];
u = m;
v = n;
}
else if(grades[1][m][n] == max)
{
if(grades[0][m][n] > grades[0][u][v])
{
u = m;
v = n;
}
}
}
}

board[u][v] = 1; //砞)�筿福�囱�
num[1]++;

if(num[0] == 50 && num[1] == 50)
{
winner = 2; //キも
over = true;
}
else
for(i=0;i<192;i++)
{
if(ctab[u][v][i])
{
win[1][i]++;
ptab[u][v][i] = false;
win[0][i] = 7;

if(win[1][i] == 5)
{
winner = 1;
over = true;
}
}
}
turn = true; //传�产�
}

//****�璹酶瓜ㄧΑ*********************************
// 跌怠禟瓜の陪ボ瘪�
void MyPaint(HDC hdc)
{
int m,n;
char *str;

if(over)
{
switch(winner)
{
case 0:
str = "眤墓� ! �� F1 ��穝籼《笴栏..";
break;
case 1:
str = "筿福墓� ! �� F1 ��穝籼《笴栏..";
break;
case 2:
str = "ぃだ秤玺 ! �� F1 ��穝籼《笴栏..";
break;
}
TextOut(hdc,10,470,str,strlen(str));
}
else if(!turn) //筿福��
{
str = "筿福�σい... ";
TextOut(hdc,10,470,str,strlen(str));
ComTurn();
}
else
{
str = "赣眤��... ";
TextOut(hdc,10,470,str,strlen(str));
}

for(m=0;m<10;m++)
for(n=0;n<10;n++)
{
if(board[m][n] == 0) //禟��产囱�
{
SelectObject(bufdc,chess[0]);
BitBlt(mdc,m*45+3,n*45+3,38,38,bufdc,0,0,SRCCOPY);
}
else if(board[m][n] == 1) //禟�筿福囱�
{
SelectObject(bufdc,chess[1]);
BitBlt(mdc,m*45+3,n*45+3,38,38,bufdc,0,0,SRCCOPY);
}
else //禟���
{
SelectObject(bufdc,chess[1]);
BitBlt(mdc,m*45+3,n*45+3,38,38,bufdc,0,0,WHITENESS);
}
}

BitBlt(hdc,10,10,450,450,mdc,0,0,SRCCOPY);

tPre = GetTickCount();
}

//****瘪�矪瞆ㄧΑ***********************************
// 1.砞)�� F1 龄�穝秨﹍笴栏
// 2.矪瞆�产��菲公オ龄�囱��笆�
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int x,y,m,n,i;

switch (message)
{
case WM_KEYDOWN: //���龄瘪�
switch (wParam)
{
case VK_ESCAPE: //�� Esc 龄
PostQuitMessage( 0 );
break;
case VK_F1: //�� F1 龄
InitGame();
break;
}
case WM_LBUTTONDOWN: //��菲公オ龄瘪�
if(!over)
if(turn)
{
x = LOWORD(lParam); //�眔菲公 X 畒夹
y = HIWORD(lParam); //�眔菲公 Y 畒夹

if(x > 10 && x < 460 && y> 10 && y < 460)
{
m = (int)floor((x-10)/45);
n = (int)floor((y-10)/45);

if(board[m][n] == 2)
{
board[m][n] = 0; //砞)��产�囱�
num[0]++;

if(num[0] == 50 && num[1] == 50)
{
winner = 2; //キも
over = true;
}
else
for(i=0;i<192;i++)
{
if(ptab[m][n][i])
{
win[0][i]++;
ctab[m][n][i] = false;
win[1][i] = 7;

if(win[0][i] == 5)
{
winner = 0;
over = true;
}
}
}
turn = false; //传筿福�
}
}
}
break;
case WM_DESTROY: //跌怠挡�瘪�
DeleteDC(mdc);
DeleteDC(bufdc);
DeleteObject(chess[0]);
DeleteObject(chess[1]);

ReleaseDC(hWnd,hdc);

PostQuitMessage(0);
break;
default: //ㄤウ瘪�
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}

热点内容
scratch少儿编程课程 发布:2025-04-16 17:11:44 浏览:642
荣耀x10从哪里设置密码 发布:2025-04-16 17:11:43 浏览:368
java从入门到精通视频 发布:2025-04-16 17:11:43 浏览:88
php微信接口教程 发布:2025-04-16 17:07:30 浏览:310
android实现阴影 发布:2025-04-16 16:50:08 浏览:794
粉笔直播课缓存 发布:2025-04-16 16:31:21 浏览:346
机顶盒都有什么配置 发布:2025-04-16 16:24:37 浏览:213
编写手游反编译都需要学习什么 发布:2025-04-16 16:19:36 浏览:817
proteus编译文件位置 发布:2025-04-16 16:18:44 浏览:367
土压缩的本质 发布:2025-04-16 16:13:21 浏览:594