//****************************************************************************
#pragma warning(disable : 4786)
#include <windows.h>
#include <pbext.h>
#include <richedit.h>
#include <commctrl.h>
#include <math.h>
#include <string>
using std::string;
HMODULE g_dll_hModule = 0;
PBXEXPORT LPCTSTR PBXCALL PBX_GetDescription()
{
static const TCHAR desc[] = {
"class u_canvas from userobject\n"
"event int onpaint(ulong hdc)\n"
"end class\n"
};
return desc;
}
class CVisualExt : public IPBX_VisualObject
{
static TCHAR s_className[];
IPB_Session* d_session;
pbobject d_pbobj;
HWND d_hwnd;
string d_text;
bool d_buffer;
public:
static HDC memdc;
CVisualExt(IPB_Session* session, pbobject pbobj)
:
d_session(session),
d_pbobj(pbobj),
d_hwnd(NULL),
d_text("Visual Extension")
{
}
~CVisualExt()
{
}
LPCTSTR GetWindowClassName();
HWND CreateControl
(
DWORD dwExStyle, // extended window style
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HINSTANCE hInstance // handle to application instance
);
PBXRESULT Invoke
(
IPB_Session *session,
pbobject obj,
pbmethodID mid,
PBCallInfo *ci
);
void Destroy()
{
delete this;
DestroyWindow(d_hwnd);
}
HDC GetMemDC()
{
return memdc;
}
void TriggerEvent(LPCTSTR eventName);
static void RegisterClass();
static void UnregisterClass();
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
};
TCHAR CVisualExt::s_className[] = "PBVisualExt";
HDC CVisualExt::memdc = 0;
LPCTSTR CVisualExt::GetWindowClassName()
{
return s_className;
}
HWND CVisualExt::CreateControl
(
DWORD dwExStyle, // extended window style
LPCTSTR lpWindowName, // window name
DWORD dwStyle, // window style
int x, // horizontal position of window
int y, // vertical position of window
int nWidth, // window width
int nHeight, // window height
HWND hWndParent, // handle to parent or owner window
HINSTANCE hInstance // handle to application instance
)
{
d_hwnd = CreateWindowEx(dwExStyle, s_className, lpWindowName, dwStyle,
x, y, nWidth, nHeight, hWndParent, NULL, hInstance, NULL);
::SetWindowLong(d_hwnd, GWL_USERDATA, (LONG)this);
return d_hwnd;
}
PBXRESULT CVisualExt::Invoke
(
IPB_Session *session,
pbobject obj,
pbmethodID mid,
PBCallInfo *ci
)
{
//switch(mid)
//{
//case 1:
// return PBX_FAIL;
//default:
// return PBX_FAIL;
//}
return PBX_OK;
}
void CVisualExt::TriggerEvent(LPCTSTR eventName)
{
pbclass clz = d_session->GetClass(d_pbobj);
pbmethodID mid = d_session->GetMethodID(clz, eventName, PBRT_EVENT, "");
pbulong lpb = (pbulong)memdc;
PBCallInfo ci;
d_session->InitCallInfo(clz, mid, &ci);
pbint cnt = ci.pArgs->GetCount();
ci.pArgs->GetAt(0)->SetUlong(lpb);
d_session->TriggerEvent(d_pbobj, mid, &ci);
d_session->FreeCallInfo(&ci);
//ci.returnValue->SetInt(0);
}
void CVisualExt::RegisterClass()
{
WNDCLASS wndclass;
wndclass.style = CS_GLOBALCLASS | CS_DBLCLKS;
wndclass.lpfnWndProc = WindowProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.hInstance = g_dll_hModule;
wndclass.hIcon = NULL;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW);
wndclass.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = s_className;
::RegisterClass (&wndclass);
}
void CVisualExt::UnregisterClass()
{
::UnregisterClass(s_className, g_dll_hModule);
}
LRESULT CALLBACK CVisualExt::WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
CVisualExt* ext = (CVisualExt*)::GetWindowLong(hwnd, GWL_USERDATA);
switch(uMsg)
{
case WM_CREATE:
return 0;
case WM_SIZE:
return 0;
case WM_COMMAND:
return 0;
case WM_ERASEBKGND:
return 1;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
RECT rc;
GetClientRect(hwnd, &rc);
HDC lmemdc = CreateCompatibleDC(hdc);
HBITMAP hmembmp = CreateCompatibleBitmap(hdc, rc.right - rc.left, rc.bottom - rc.top);
HBITMAP oldbmp = (HBITMAP)SelectObject(lmemdc, hmembmp);
memdc = lmemdc;
ext->TriggerEvent("onpaint");
BitBlt(hdc, rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top, lmemdc, 0, 0, SRCCOPY);
SelectObject(lmemdc, oldbmp);
DeleteObject(hmembmp);
DeleteDC(lmemdc);
EndPaint(hwnd, &ps);
return 0;
}
}
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
PBXEXPORT PBXRESULT PBXCALL PBX_CreateVisualObject
(
IPB_Session* pbsession,
pbobject pbobj,
LPCTSTR className,
IPBX_VisualObject **obj
)
{
PBXRESULT result = PBX_OK;
string cn(className);
if (cn.compare("u_canvas") == 0)
{
*obj = new CVisualExt(pbsession, pbobj);
}
else
{
*obj = NULL;
result = PBX_FAIL;
}
return PBX_OK;
};
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD reasonForCall,
LPVOID lpReserved
)
{
g_dll_hModule = HMODULE(hModule);
switch (reasonForCall)
{
case DLL_PROCESS_ATTACH:
CVisualExt::RegisterClass();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
CVisualExt::UnregisterClass();
break;
}
return TRUE;
}
没有合适的资源?快使用搜索试试~ 我知道了~
OpenExplorer(新)
共1223个文件
bmp:1170个
pbl:8个
db:8个
4星 · 超过85%的资源 需积分: 9 82 下载量 45 浏览量
2008-10-24
19:22:52
上传
评论
收藏 3.05MB RAR 举报
温馨提示
csdn上传的资源不能更新啊,这个是新上传的一个,10.5 打开没有错误
资源推荐
资源详情
资源评论
收起资源包目录
OpenExplorer(新) (1223个子文件)
FILE_PASTE.bmp 2KB
CONNECT_CREATE.bmp 2KB
LIST_ADD.bmp 2KB
SORT_TYPE.bmp 2KB
FAVORITES.bmp 2KB
FILE_CUT.bmp 2KB
CD.bmp 2KB
VIEW_CHOOSE.bmp 2KB
PACKAGE_CLOSED.bmp 2KB
VIEW_SIDETREE.bmp 2KB
SORT_SIZE.bmp 2KB
VIEW_DETAILED.bmp 2KB
VIEW_ICON.bmp 2KB
SORT_ALPHABET.bmp 2KB
SHUTDOWN.bmp 2KB
SORT_DATE.bmp 2KB
USER_ADMIN.bmp 2KB
INFORMATION.bmp 2KB
FOLDER_CLOSED.bmp 2KB
ARROW_GREEN_LEFT.bmp 2KB
OPEN_FOLDER.bmp 2KB
ARROW_GREEN_RIGHT.bmp 2KB
ARROW_GREEN_UP.bmp 2KB
VIEW_TREE.bmp 2KB
TEXT_SIZE.bmp 2KB
VIEW_RIGHT.bmp 2KB
ARROW_RIGHT.bmp 2KB
FAVORITES_ADD.bmp 2KB
HELP.bmp 2KB
ARROW_LEFT.bmp 2KB
FOLDER_OPEN.bmp 2KB
CANCEL.bmp 2KB
REFRESH.bmp 2KB
OK.bmp 2KB
HISTORY.bmp 2KB
WINDOW_REMOVE.bmp 2KB
UNDO.bmp 2KB
FOLDER_NEW.bmp 2KB
PRINT_PREVIEW.bmp 2KB
SEARCH_RECURSE.bmp 2KB
VIEW_TOP_BOTTOM.bmp 2KB
SAVE.bmp 2KB
TOOLS.bmp 2KB
FILE_DELETE.bmp 2KB
SEARCH.bmp 2KB
ARROW_GREEN_JUMP.bmp 2KB
MAIL.bmp 2KB
USERS.bmp 2KB
CONNECT_ESTABLISHED.bmp 2KB
VIEW_MULTICOLUMN.bmp 2KB
FILE_COPY.bmp 2KB
ARROW_DOWN.bmp 2KB
FONTS.bmp 2KB
FOLDER_OPTIONS.bmp 2KB
WHATS_THIS.bmp 2KB
EXCLAMATION.bmp 2KB
REDO.bmp 2KB
CONNECT_NONE.bmp 2KB
FILE_EDIT.bmp 2KB
ADD.bmp 2KB
HOME.bmp 2KB
PACKAGE_OPEN.bmp 2KB
LIST_REMOVE.bmp 2KB
USER.bmp 2KB
VIEW_TEXT.bmp 2KB
WINDOW_ADD.bmp 2KB
FULL_SCREEN.bmp 2KB
VIEW_LEFT_RIGHT.bmp 2KB
LOCK.bmp 2KB
WINDOW.bmp 2KB
FOLDERS.bmp 2KB
VIEW_BOTTOM.bmp 2KB
FILE_NEW.bmp 2KB
PROPERTIES.bmp 2KB
PRINT.bmp 2KB
STOP.bmp 2KB
ARROW_GREEN_DOWN.bmp 2KB
ARROW_UP.bmp 2KB
CLOSE.bmp 2KB
REMOVE.bmp 2KB
QUESTION.bmp 2KB
24_CUSTOM_2.bmp 2KB
24_CUSTOM_1.bmp 2KB
text_uppercase.bmp 1KB
shape_move_back.bmp 1KB
text_padding_left.bmp 1KB
html_add.bmp 1KB
bullet_white.bmp 1KB
server_error.bmp 1KB
shape_align_center.bmp 1KB
arrow_right.bmp 1KB
cog_add.bmp 1KB
eye.bmp 1KB
folder_image.bmp 1KB
text_list_numbers.bmp 1KB
page_white_freehand.bmp 1KB
money_delete.bmp 1KB
drive_cd_empty.bmp 1KB
comment_add.bmp 1KB
feed_edit.bmp 1KB
共 1223 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
- kidbird992012-09-28终于有可以在PB10.5可用的了,做界面美观大方,对于不想在界面上花过功夫的朋友推荐使用
eviler
- 粉丝: 100
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- tensorflow-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp39-cp39-manylinux2010-x86-64.whl
- Python版本快速排序源代码
- Python 语言版的快速排序算法实现
- 450815388207377安卓_base.apk
- 超微主板 X9DRE-TF+ bios 支持 nvme启动
- 基于Python通过下载气象数据和插值拟合离散数据曲线实现对寒潮过程的能量分析
- 健身房系统的设计与实现论文Java项目
- 使用TCP实现的搜索可用服务器
- 使用贪心算法解决会议时间安排问题的 Java 示例代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功