能力值:
( LV4,RANK:50 )
2 楼
我的是这样的:
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(100));
能力值:
( LV2,RANK:10 )
3 楼
你说的是窗口左上角的图标吧,那个应该用图标加载函数才能加载上去!函数是那个我忘了。。你查下MSDN
能力值:
( LV2,RANK:10 )
4 楼
我的是vs2010,我上面那句和你说的这个功能是一样的,但是,不知为啥就不成功
能力值:
( LV2,RANK:10 )
5 楼
是啊,先导入图片嘛,再用图标加载函数,我是这样做的,纠结中啊
能力值:
( LV2,RANK:10 )
6 楼
把图片先转换成ico图标格式吧。然后再用LoadIcon载入。。。。
能力值:
( LV2,RANK:10 )
7 楼
格式怎么转换呢??求方法
能力值:
( LV2,RANK:10 )
8 楼
我格式都转成了ico,但是我明明是在ico文件夹下导入的图标,可是结果会自动生成个文件夹Bitmap。添加的资源ID默认为IDB_BITMAP1,就这个id,还是修改之后的我都试过了,还是失败。谁能告诉我为什么以及我要怎么做???
能力值:
( LV4,RANK:50 )
9 楼
rc资源文件中有没添加类似的:
100 ICON "MAINICON.ico"
能力值:
( LV2,RANK:10 )
10 楼
没用,我快投降了
能力值:
( LV2,RANK:10 )
11 楼
能力值:
( LV5,RANK:66 )
12 楼
在Dlg初始化的时候,仅仅load图标的话,是不够的,需要发送消息。手头只有汇编代码:
invoke LoadIcon,hInstance,ICON_MAIN
invoke SendMessage, hWin, WM_SETICON, ICON_SMALL, eax
其他也一样吧,其实就差个消息,发送过去就行了。
能力值:
( LV4,RANK:50 )
13 楼
其实只要注册窗口类的时候指定图标就可以了,
我特地写了个程序测试,使用VS的向导生成一个最普通的win32程序SampleWin32,在资源里添加了2个图标,IDI_ICON1, IDI_ICON2,
特别提点,有2个地方需要图标,一个图标是任务栏和Alt+Tab时出现的,另外一个是左上角的图标是小图标。不知道楼主是不是这里出了问题。
那个WM_SETICON消息,一般如果程序需要动态切换图标的时候可以用。这里其实没有必要的。
代码如下:
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
[B][COLOR="Red"] // 任务栏和Alt+Tab时出现的图标,
//wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_SAMPLEWIN32));
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));[/COLOR][/B]
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_SAMPLEWIN32);
wcex.lpszClassName = szWindowClass;
[COLOR="red"][B] // 左上角的图标
//wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_ICON2));[/B][/COLOR]
return RegisterClassEx(&wcex);
}
能力值:
( LV2,RANK:10 )
14 楼
procedure TFrmSort.BtnModifyClick(Sender: TObject);
var
hd:thandle;
myico:ticon;
strfile:string;
begin
strfile:=EditPath.Text ;
if fileexists(strfile) then
begin
end else begin
strfile:=ExtractFilePath(paramstr(0))+'1.ico';
end;
myico:=tIcon.Create ;
//myico.Modified :=true;
myico.LoadFromFile(strfile);
hd:=findwindow(nil,pchar(EditWindow.Text));
if hd<>0 then
begin
setwindowtext(hd,pchar(EditText.Text));
SendMessage(hd,WM_SETICON,ICON_SMALL,myico.Handle );//ICON_BIG
SendMessage(hd,WM_SETICON,ICON_BIG,myico.Handle );
end;
end;
能力值:
( LV2,RANK:10 )
15 楼
用LOADICON调用图片格式应该是用ICO图片吧~窗体类直接加载图标应该没有问题,还是说你函数的参数有问题,还是有本MSDN帮助看看比较好
能力值:
( LV5,RANK:66 )
16 楼
我之前的程序,仅仅load是不行的,不知道为什么
能力值:
( LV2,RANK:10 )
17 楼
话说我都是按你说的这样做的,但是不想要的那种方法还是不行。不过用替换的方法能达到我要的效果,还在努力中啊
能力值:
( LV5,RANK:66 )
18 楼
我的也不可以,只有如我回复的发送个消息才行。猜测可能是他们用的CreateWindow,我们用的Dlg资源创建的吧。
能力值:
( LV4,RANK:50 )
19 楼
你可以所有的代码贴出来嘛?
能力值:
( LV4,RANK:50 )
20 楼
CreateWindow时需要窗口类的名称,我的测试程序是这样写的。
至于Dialog,需要使用WM_SETICON.
能力值:
( LV2,RANK:10 )
21 楼
首先你得把你的图片格式转换成.ICO的。在资源视图里,插入资源,资源类型选择ICO的。自动生成的ID一般都叫IDI_ICON1.你可以改个名(便于管理和识别),也可以不改。这时候你在这改动ID:
WNDCLASSEX wcex;
中间其它设置省略...
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TEST));
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
IDS_TEST是窗口图标和IDI_SMALL是应用程序图标。
能力值:
( LV2,RANK:10 )
22 楼
如果是vs2010的话,
你会发现在窗口的构造函数里有个调用:
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
那么直接定位IDR_MAINFRAME
打开资源窗口,在IDR_MAINFRAME右面的属性里可以直接修改filename的内容,指定另外的一个ico文件,然后重新生成解决方案 ,搞定,本人亲测。