在YC++中如何实现Ajax功能
在Web页面中,有时当用户点击一个按钮后,只有其中的一小块内容将要发生变化。在使用Ajax以前,一般必须刷新整个页面,无论页面中变化的部分还是没有变化的部分,都要从服务器中重新读取。使用Ajax后,只需要从服务器中读取变化了的那一部分,如此,不但减少了等待时间,还节省了网络带宽资源。
在YC++中也可以实现Ajax功能,下面举例说明其原理及用法。
首先创建一个主窗口, 在主窗口创建一个HTML窗口, 将网页rdweb.htm调入HTML窗口。
在界面的输入框中敲入完整的网址,点击“读网页”按钮,即可将指定的网址文本读入编辑框中。
这说明,每改变一次网址并按下按钮,页面中只有编辑框内容改变,因此只需重读编辑框中的内容,而其它内容不必重读。
下面这个例子实现了这个功能,因而也就实现了Ajax功能。
/*****************************************************************************************************************/
将下列代码存入名字任取的文件, 如: ajax.cpp
在yc++中, 用
<文件 打开或创建cpp源程序>
调入ajax.cpp, 再用
<工具 执行>
运行ajax.cpp
或在dos中, 用 ycc ajax.cpp 生成 ajax.exe, 再运行ajax.exe
在vc++中, 用 cl ajax.cpp 生成 ajax.exe, 再运行ajax.exe
#ifndef YCC
#include
#include "include/ycapi.h"
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "yxbapi.lib")
#endif
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
int WINAPI MainWndProc(HWND hwnd,UINT iMessage,UINT wParam,LONG lParam,void *pUserData);
HWND hwnd = YXB_Window(MainWndProc,NULL,0, //创建主窗口. 用YC++的API函数创建, 它不需要注册.
WS_OVERLAPPEDWINDOW | WS_CAPTION | WS_SYSMENU,
"YC++实现Ajax功能",110,50,800,600,NULL,WT_WIN);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
int WINAPI MainWndProc(HWND hwnd,UINT iMessage,UINT wParam,LONG lParam,void *pUserData)
{
static HWND hwndHtml;
switch(iMessage)
{
case WM_CREATE:
hwndHtml = YXB_Window(NULL,0,WS_EX_CLIENTEDGE,0,NULL,0,0,0,0,hwnd,WT_HTML); //创建HTML窗口
WEB_PAGE apage;
memset(&apage,0,sizeof(apage));
apage.href = "rdweb.htm";
SendMessage(hwndHtml,WM_COMMAND,WEB_A,(int)&apage); //调入网页
return FALSE;
case WM_SIZE:
RECT mRect;
GetClientRect(hwnd,&mRect);
MoveWindow(hwndHtml,0,0,mRect.right,mRect.bottom,TRUE);
return TRUE;
case WM_DESTROY:
PostQuitMessage(0);
return FALSE;
}
return DefWindowProc(hwnd,iMessage,wParam,lParam);
}
/*****************************************************************************************************************/
/*****************************************************************************************************************/
将下列HTML文本拷入指定文件: rdweb.htm
/*****************************************************************************************************************/
输入网址:
www.sohu.com"
style="font-size:28; width=480; color:red; border:4 green solid; background-color:RGB(185,185,185);">
/*****************************************************************************************************************/
该例子需将YC++的下列几个文件拷入源程序所在目录:
YC01/yxbapi.dll C/C++编译器, 浏览器内核库
YC01/yxbimg.dll 图象, 动画解码库
YC01/yxbext.dll 浏览器内核交互代码库
YC01/yc.ah C/C++编译器头文件包
YC01/yc.cmp C/C++编译器错误信息
YC01/include/ycapi.h 用其它编译器运行该例时所需头文件
YC01/include/yxbapi.lib 用其它编译器运行该例时所需库文件, 如VC6.0