怎么在PB里放入图片控件

怎么在PB里放入图片控件,第1张

程序一般分为控制台程序,win32程序等等,你所说的cmd的程序都属于控制台程序,这样的程序输出时都会调用控制台程序,也就是命令行。但更为常见的是win32程序,这样的程序是带有窗口的程序,它基于win32的消息机制进行编程。如按下鼠标就会产生一个鼠标按下消息,然后会去调用一段自己写的代码。win32程序是带有资源的程序,也就是你所说的图片,这种资源在程序链接的时候自动形成一个exe文件(当然也可以放在dll文件中进行动态链接),像魔兽争霸这样的程序大多是用其它软件做界面,导出为资源文件,然后再去链接成一个完整的程序。你可以去看下windows编程的东西,有本书叫《深入浅出MFC》,里面第一章讲了一些这方面的基础知识,可以去看看。另外如有不明白可以给我留言。我晕,你是不是刚刚学写程序啊。举个例子,这段代码保存为.c:

#include<stdio.h>

main()

{

printf("hello!")

}

用VC打开后编译,它会默认按控制台程序进行编译,运行就是cmd模式。这段代码是控制台程序的格式。

下面一段是win32程序格式:

#include<stdio.h>

#include<windows.h>LRESULTCALLBACKMyWindowsProc(

HWNDhwnd,//handletowindow

UINTuMsg,//messageidentifier

WPARAMwParam,//firstmessageparameter

LPARAMlParam//secondmessageparameter

)

{

switch(uMsg)

{

caseWM_CLOSE:

DestroyWindow(hwnd)

break

caseWM_DESTROY:

PostQuitMessage(0)

break

default:

returnDefWindowProc(hwnd,uMsg,wParam,lParam)

}

return0

}intWINAPIWinMain(

HINSTANCEhInstance,

HINSTANCEhPrevInstance,

LPSTRlpCmdLine,

intnCmdShow

)

{

WNDCLASSstWnd

stWnd.cbClsExtra=0

stWnd.cbWndExtra=0

stWnd.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH)

stWnd.hCursor=NULL//LoadCursor(NULL,IDC_CROSS)

stWnd.hIcon=NULL//LoadIcon(NULL,IDI_ERROR)

stWnd.hInstance=hInstance

stWnd.lpfnWndProc=MyWindowsProc

stWnd.lpszClassName="MyWindow"

stWnd.lpszMenuName=NULL

stWnd.style=CS_HREDRAW|CS_VREDRAWRegisterClass(&stWnd)

HWNDstWin

stWin=CreateWindow("MyWindow","我的Windows程序测试!",WS_OVERLAPPEDWINDOW,0,0,400,300,NULL,NULL,hInstance,NULL)

ShowWindow(stWin,SW_SHOWNORMAL)MSGstMsg

while(GetMessage(&stMsg,NULL,0,0))

{

TranslateMessage(&stMsg)

DispatchMessage(&stMsg)

}

return0

}

这是一个标准的win32程序,运行后可生成一个窗口。intWINAPIWinMain()为程序的入口函数,里面首先要注册窗口类,再进行消息循环等等,比控制台程序复杂的多。在VC下新建一个win32Application工程,把这段代码保存为.cpp添加到工程里就可以运行。

哪里不明白说明白点,别一句“还是不太明白”就完了.win32程序是带资源的,资源里面包含图片,声音等一些多媒体元素。资源文件扩展名为.rc。编译后为.res。每个资源都有ID,程序里面调用资源的时候就通过ID进行调用。程序编译后扩展名为.obj,链接时,链接器会自动把.res文件.obj文件链接到一起形成一个.exe文件。这样程序运行时就会出现图片,声音等等。这些都是windows编程里面基本的知识,你去学一下就行了。

楼主你好。 1、在网上下一个pdfview.ocx 进行处理; 2、以IE方式下载打开,这种方式需要本机装有PDF

最近正好在用 ole 打文档,发现这里面名堂蛮多,随便谈几句!

就 pb 的 ole 控件类型来说,分为 3 类:olecontrol, olecustomcontrl, oleobject

从 pb 对象浏览器中的 ole 类型来说亦有三种:olecontrol, olecustomcontrol, programming control

不难发现,和上面非常相似,但最后一个为什么不一样的叫法,下面我会讲到。

从 pb 开发环境中可视化添加 ole 控件的方法说,也分为 3 种:insert new, insert from file, insert control

如果一定要在控件内显示文档的话:第 1 种方法只适合于新增一个文档,无法打开别的文档;第 2 种方法只适合于打开一个固定位置的文档(即席方式);第 3 种方法没有限制,但问题是很多软件并不提供第 3 种类型的控件(比如 word, excel)!再加上 pb 对 ole 的支持一直以来都存在问题,前两种方法极易导致 pb 自身异常或者相关的软件异常,非重装系统难以恢复,令人望而却步!

oleobject 是一种动态 ole 控件,也就是可以连接任意类型的 ole 控件,但由于控件本身的支持问题,oleobject 实际可用的基本上只有 pb browser 中的 programming control 对象以及 olecustomobject 中的不可视对象,其它的虽然连得上也用不起来!

再说明一下什么是 olecustomobject,说白了,就是 ActiveX,它和 olecontrol 有什么不同?olecontrol 分为即席方式(inplace!)也就是在你的控件内打开,离席方式(offsite!)也就是在你的控件外打开,ActiveX 没有这个选择,它必须是控件内打开的。微软为什么要搞这个限制?因为这样的话,ActiveX 就不可以直接利用 *** 作系统创建自己的窗口,而必须依附在宿主程序上,于是 ActiveX 就可以在 iis 服务端和网页脚本结合了!睢,这就是差别,因为限制某种功能而获得了更好的通用性。

上面绕了这么多,其实归纳一下也很简单 olecontrol 类型基本上没有使用的必要,即席激活限制太多不实用,离席激活直接用 oleobject 连接一下就是了,没必要非在窗口上贴个控件。对于可视的 ActiveX(olecustomobject) 必须在窗口贴个控件,再从之个控件 *** 作;对于不可视的 ActiveX,实在想贴也可以,不想的话直接 oleobject 连接。

最后两段代码大致说明一下 oleobject 和 Activex 的调用:

// 打印一个 word 文件

ioo_word = create oleobject

if not ioo_word.IsAlive() then ioo_word.ConnectToNewObject("word.application")

ioo_word.documents.Oopen("c:\test.doc")

ioo_word.documents.Print()

ioo_word.documents.Close()

ioo_word.Quit()

ioo_word.DisconnectObject()

// 打印一个 pdf 文件

olecustomobject iocc_acrobat

iocc_acrobat = w_test.ole_acrobat

iocc_acrobat.LoadFile("c:\test.pdf")

iocc_acrobat.Print()

thomsonly 2014-07-18

评价(0)(0)(0)引用

漏了个 .object

// 打印一个 pdf 文件

olecustomobject iocc_acrobat

iocc_acrobat = w_test.ole_acrobat

iocc_acrobat.object.LoadFile("c:\test.pdf")

iocc_acrobat.object.Print()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11422274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存