winAPI中用dialogbox产生的对话框任何添加图标,在左上角显示的那个,是用loadicon和sendmessage MB_USERICON吗?
解决方案 »
- 关于VC6.0中的移位操作符与标准不同
- Directx sdk
- (急用)请问如何设置自定义消息的优先级?
- GDI+ 下面没有类似 SetROP2 这样的选择绘图模式的函数吗?
- 调试vc.net编写的dll时,进入用来调试的.exe的时候就报读文件错. 是不是调试时的Apllication的目录不是.exe所在目录啊?
- 文件头的读取!
- 在toolbar上加一个button,icon 是32x32的,怎样跟16x16的save icon一起而不变大。
- Up有分,我写了这样一条语句:“m_pConnection.CreateInstance("ADODB.Connection");”为什么m_pConnection的值为0x0000000?详情请进来看
- 强烈抗议csdn总是找不到前段时间的贴子
- 送分:device context(DC)是什么意思?
- 请教
- 如何利用EnumWindow获取所有的窗口句柄?
能把你的代码给出来吗
// Set big icon
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_TP), TRUE);
// Set small icon
SetIcon(AfxGetApp()->LoadIcon(IDI_ICON_TP), FALSE);然后再OnQueryDragIcon函数中加入
return (HCURSOR) AfxGetApp()->LoadIcon(IDI_ICON_TP);其中IDI_ICON_TP为图标的ID
先谢过这位大哥可是我不会MFC,正在努力学win32编程
case WM_INITDIALOG:
//这里应该怎么加代码???
if(!SendMessage(hDlg,WM_SETICON,ICON_BIG ,
(LPARAM)LoadIcon(NULL,IDI_ASTERISK)))
MessageBox(hDlg,"Failure","",MB_OK);
else
MessageBox(hDlg,"OK","",MB_OK);
return TRUE;
而且用惊叹号是也显示failure,但是图标有,自定义图标显示failure,无图标出现.我现在已经成功了,但还有一个问题:
我是在winmain函数中调用hicon=LoadIcon(hinst,(LPCTSTR)IDI_MYICON);就行.如果将hicon=LoadIcon(NULL /*hinst*/,(LPCTSTR)IDI_MYICON);函数放在case WM_INITDIALOG:后面LoadIcon函数调用失败,为什么???ps: tpProgramer(tp编程者)能加我qq 8144250吗?
:00401017 FF3564314000 push dword ptr [00403164]* Reference To: USER32.DialogBoxParamA, Ord:0092h
|
:0040101D E892040000 Call 004014B4
:00401022 50 push eax* Reference To: KERNEL32.ExitProcess, Ord:0075h
|
:00401023 E8B6040000 Call 004014DE
:00401028 55 push ebp
:00401029 8BEC mov ebp, esp
:0040102B 817D0C10010000 cmp dword ptr [ebp+0C], 00000110 ;WM_initdialog消息
:00401032 752C jne 00401060
:00401034 68C8000000 push 000000C8
:00401039 FF3564314000 push dword ptr [00403164]* Reference To: USER32.LoadIconA, Ord:019Bh ;调用LoadIcon函数
|
:0040103F E87C040000 Call 004014C0
:00401044 A368314000 mov dword ptr [00403168], eax
:00401049 FF3568314000 push dword ptr [00403168]* Possible Reference to Dialog: DialogID_0001
|
:0040104F 6A01 push 00000001
:00401051 6880000000 push 00000080
:00401056 FF7508 push [ebp+08]* Reference To: USER32.SendMessageA, Ord:0210h ;调用成功就SendMessage
|
:00401059 E86E040000 Call 004014CC
:0040105E EB7A jmp 004010DA为什么我的程序调用LoadIcon就不成功
================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
HICON hIcon;
hIcon = LoadIcon(hInst,(LPCTSTR)IDI_MYICON);
SendMessage(hDlg,WM_SETICON,ICON_BIG,(LPARAM)hIcon);
SendMessage(hDlg,WM_SETICON,ICON_SMALL,(LPARAM)hIcon);
break;好了,一切搞定:)
肯定会失败!因为,LoadIcon(...)函数会到第一个参数指定的模块中去加载图标资源,
如果是 NULL 则从系统资源中加载,谁知道系统中有没有一个 IDI_MYICON
的图标资源呢:)所以第一个参数当然要是程序本身的模块句柄:)
我不知道你的hInst参数是从那里来的,我的hInst(文件开始静态定义的)到处理消息时已经是NULL了
或者做成私有变量再做个HINSTANCE GetSafeInstance(...);函数得到啊:)下面示范://Test.h
HINSTANCE hInst = NULL;
.
.
//Test.cpp
#include "Test.h"
.
.
hInst = hInstance;
.
.
//TestDialog.h
class TestDialog : public CDialog
.
.//TestDialog.cpp
#include "TestDialog.h"
#include "Test.h"
.
.
hIcon = LoadIcon(hInst,(LPCTSTR)IDI_MYICON);
.
.给出你的部分代码吧,否则,很难检查的:)
上面是 MFC 代码。
下面我用 SDK 示范://Common.h
extern HINSTANCE hInst;
.
.//Test.cpp
#include "Common.h"HINSTANCE hInst = NULL;WinMain(...)
{
hInst = hInstance;
.
.
}
.
.这样,不管你的 LoadIcon(...)函数在哪个文件里,只要你
#include "Common.h"
都可以访问 hInst 变量:)