//****************************************************************************
#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;
}
没有合适的资源?快使用搜索试试~ 我知道了~
KODIGO 3.3.1.5 FOR PB 10.5
共1214个文件
bmp:1170个
pbl:8个
pdb:4个
5星 · 超过95%的资源 需积分: 9 48 下载量 60 浏览量
2009-07-18
14:33:08
上传
评论
收藏 3.27MB ZIP 举报
温馨提示
POWERBUILDER 开发框架 通过此框架可以写出很多漂亮的界面
资源推荐
资源详情
资源评论
收起资源包目录
KODIGO 3.3.1.5 FOR PB 10.5 (1214个子文件)
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
共 1214 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13
资源评论
- xiwangjiajiao2012-05-22没有帮助文档 下了不会用啊
- stinga2013-11-21仔细研究了,确实是挺不错的PB框架,不过想真正使用,还要自己继续修改
xiaochongsm
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 论文(最终)_20240430235101.pdf
- 基于python编写的Keras深度学习框架开发,利用卷积神经网络CNN,快速识别图片并进行分类
- 最全空间计量实证方法(空间杜宾模型和检验以及结果解释文档).txt
- 5uonly.apk
- 蓝桥杯Python组的历年真题
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功