Unicode转成用多字符集编译图标无法显示

hell190109 2017-12-07 02:51:28

程序用Unicode编译时SetIcon的图标能显示,用多字符集编译图标无法显示。怎么让多字符集编译也能正常显示。
我用的是vs2013。
BOOL CMFCTest2Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
。。。。。。。。。。。。。。。。。。。。。。
// TODO: 在此添加额外的初始化代码
HICON m_hicn1=AfxGetApp()->LoadIcon(IDR_MAINFRAME);
((CButton*)GetDlgItem(IDC_BUTTON1))->SetIcon(m_hicn1);
return TRUE;

}
...全文
360 点赞 收藏 19
写回复
19 条回复
这是一个账号007 2017年12月11日
mark一下
回复 点赞
hell190109 2017年12月09日
引用 16 楼 schlafenhamster 的回复:
"多字符集编译程序本身就是有个没法显示图标问题吗?" 没有 ! 属性 要自己改 Icon 不是 默认的!
可是用unicode时,按键Icon属性是False,SetIcon也好使,图标和文字都正常。
回复 点赞
schlafenhamster 2017年12月09日
没有用过 “可是用unicode时” 1 资源中 看看 是不是 有 2 用 DWORD Style=GetWindowLong(m_Button.m_hWnd,GWL_STYLE);看看 风格 有没有 BS_ICON
回复 点赞
schlafenhamster 2017年12月08日
给你一个 在 对话框OnPaint 中 给 这个按钮 补一个 Caption 的 方法: else { CDialog::OnPaint(); m_Bt5.RedrawWindow();// 使按钮 客户区 有效 CDC *pDC=m_Bt5.GetDC(); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,0,0)); pDC->TextOut(20,14,"A",1); ReleaseDC(pDC); }
回复 点赞
schlafenhamster 2017年12月08日
按钮 ICon 属性后 没有 Caption 要 在 OnPaint 中 自己 画,所以 又回到 “自绘” 去了
回复 点赞
schlafenhamster 2017年12月08日
"多字符集编译程序本身就是有个没法显示图标问题吗?" 没有 ! 属性 要自己改 Icon 不是 默认的!
回复 点赞
schlafenhamster 2017年12月08日
"按键一点字就没了。" 因为 按钮 状态变了,所以 还是 放 派生 按钮 的 Onpaint 中。
回复 点赞
spicemodel 2017年12月08日
回复 点赞
hell190109 2017年12月08日
引用 12 楼 schlafenhamster 的回复:
给你一个 在 对话框OnPaint 中 给 这个按钮 补一个 Caption 的 方法: else { CDialog::OnPaint(); m_Bt5.RedrawWindow();// 使按钮 客户区 有效 CDC *pDC=m_Bt5.GetDC(); pDC->SetBkMode(TRANSPARENT); pDC->SetTextColor(RGB(255,0,0)); pDC->TextOut(20,14,"A",1); ReleaseDC(pDC); }
按键一点字就没了。 多字符集编译程序本身就是有个没法显示图标问题吗?我新建的dialog工程,就放一个按钮,显示图标就会出这个问题。
回复 点赞
hell190109 2017年12月07日
引用 9 楼 schlafenhamster 的回复:
按钮 属性 要 加 ICon !
Icon原来是False,设成True以后图标终于是显示出来了,但是按钮上字没有了,用SetWindowText也不灵,只有图标,没有字。
回复 点赞
schlafenhamster 2017年12月07日
按钮 属性 要 加 ICon !
回复 点赞
hell190109 2017年12月07日
引用 7 楼 schlafenhamster 的回复:
资源 xxx。rc 用 记事本 打开 后 另存为 ansi ,
另存为 ansi 以后重新编译还是不行,还是显示不出来。 另外我试了下设置窗口左上角的图标是可以显示出来的 HICON m_hicn1=AfxGetApp()->LoadIcon(IDI_ICON1); SetIcon(m_hicn1, TRUE); // 设置大图标 SetIcon(m_hicn1, FALSE); // 设置小图标 在按钮上显示不出来。
回复 点赞
schlafenhamster 2017年12月07日
资源 xxx。rc 用 记事本 打开 后 另存为 ansi ,
回复 点赞
hell190109 2017年12月07日
引用 5 楼 schlafenhamster 的回复:
HICON m_hicn1=AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 资源文件中含有名称,如 IDR_MAINFRAME ICON DISCARDABLE "RES\\TEST.ICO" 要改
引用 5 楼 schlafenhamster 的回复:
HICON m_hicn1=AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 资源文件中含有名称,如 IDR_MAINFRAME ICON DISCARDABLE "RES\\TEST.ICO" 要改
怎么改?
回复 点赞
schlafenhamster 2017年12月07日
HICON m_hicn1=AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 资源文件中含有名称,如 IDR_MAINFRAME ICON DISCARDABLE "RES\\TEST.ICO" 要改
回复 点赞
zgl7903 2017年12月07日
建议 修改成 BS_OWNERDRAW 自绘属性, 关联 CBitmapButton 实现, 估计是控件底层处理的有差异
回复 点赞
hell190109 2017年12月07日
引用 2 楼 zgl7903 的回复:
HICON m_hicn1 修改为类变量试试看, 是不是作用域的问题?
.h HICON m_hicn1 //声明在.h里 .cpp // TODO: 在此添加额外的初始化代码 m_hicn1=AfxGetApp()->LoadIcon(IDR_MAINFRAME); ((CButton*)GetDlgItem(IDC_BUTTON1))->SetIcon(m_hicn1); 这样也不行。
回复 点赞
zgl7903 2017年12月07日
HICON m_hicn1 修改为类变量试试看, 是不是作用域的问题?
回复 点赞
Uncle_higo 2017年12月07日
调试时看看m_hicn1 会不会得到?
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告