今天使用pb做软件的时候,遇到一个问题,要在界面上显示ico图标。
但是PB没有这样的现成的功能 ,使用picture控件,可以很好的支持各种 jpg,png格式。
就是不能显示ico文件,这可怎么办呢?
我百度了一下,都是一些不明所以然的内容。
看来,还是要使用 api大法实现 ,学过C语言就是好,api就是万能的。
写这个代码在这里做个备忘:
//C语言格式
HWND hButton = GetDlgItem(hDlg,IDC_BUTTON1) ;
LONG nStyle = GetWindowLong(hButton,GWL_STYLE) ;
nStyle = nStyle | BS_ICON ;
SetWindowLong(hButton,GWL_STYLE,nStyle) ;
HICON hIcon =(HICON) ::LoadImage(NULL,"c:\\003.ico",IMAGE_ICON ,LR_DEFAULTSIZE,LR_DEFAULTSIZE,LR_LOADFROMFILE );
SendMessage(hButton,BM_SETIMAGE,IMAGE_ICON,(LONG)hIcon);
//PB代码
long hButton ;
hButton = handle(p_1);
api.SetWindowLong(hButton,-16,1342242880) ;
long hIcon ;
hIcon = api.LoadImage(0,"c:\\003.ico",1 ,32,32,16 );
p_1.width = pixtox(32);
p_1.height = pixtoy(32);
send(hButton,247,1, hIcon);
说明:
powerbuilder 中的picture控件,其实就是一个BS_OWNER风格的自绘按钮。
通过setwindowlong函数修改按钮的style,
并添加一个BS_ICON风格,这样就变成可以显示图标的按钮了。
很简单。是不是。