免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 各类编程 > 详解如何制作APK安装器(6)

详解如何制作APK安装器(6)

时间:2012-04-14 19:31来源:未知 整理:寂涯网络 点击:


为 WCHAR*类型,这使用我们使用前需要先转换一下:
string wstring2string(const wstring& ws)
{
  _bstr_t t = ws.c_str();
  char* pchar = (char*)t;
  string result = pchar;
  return result;
}
说说APK 文件图标的获取,在上面图6显示的信息中,就能够知道 APK图标的文件名与
位置,而这个文件存放在 APK 这个 ZIP 包中,AAPT 不提供 ZIP 解压的功能,需要自己来提
取APK中的文件,这里为了代码轻便使用了XUNZIP类,获取图标并解压的工作放到了void
UnzipIcoFile(string outPath)方法中:
void CAPKHelper::UnzipIcoFile( string outPath)
{
  HZIP hZip = OpenZip((void*)(char*)m_apkName.c_str(), 0, ZIP_FILENAME);
  int index = -1;
  ZIPENTRY ze;
  ZRESULT bRet = FindZipItem(hZip, m_iconFile.c_str(), TRUE, &index, &ze);
  if (bRet == ZR_OK)
  {
    UnzipItem(hZip, index, (void*)outPath.c_str(), 0, ZIP_FILENAME);
  }
  CloseZip(hZip);
}
在主程序中处理如下:
char szBuffer[MAX_PATH] = {0};
GetTempPath(MAX_PATH, szBuffer);
m_outpngPath = szBuffer;
m_outpngPath += m_helper->PkgName();
m_outpngPath += m_helper->Version();
m_outpngPath += ".png";   //APK文件图标释放路径
m_helper->UnzipIcoFile(m_outpngPath.c_str());
ShowPNG();  //显示图标
最后调用 ShowPNG()来显示图标,一般 APK中的图标为PNG,在VC 中显示 PNG使用GDI+
再方便不过了,代码如下:
void CAPKInstallerDlg::ShowPNG()
{
  if (!m_outpngPath.empty())
  {
    wstring str = string2wstring(m_outpngPath);
    Image image(str.c_str());
    RECT rc;
    m_stcPic.GetWindowRect(&rc);
    m_pGraphics->DrawImage(&image, 0, 0,  rc.right-rc.left,  rc.bottom-rc.top);
  }
}
但是直接显示 PNG 后,程序如果被刷新图片就不再显示了,因此我们需要在 WM_PAINT
消息中做进一步的处理:
void CAPKInstallerDlg::OnPaint()
{
  if (IsIconic())
  {
CPaintDC dc(this); // 用于绘制的设备上下文
  SendMessage(WM_ICONERASEBKGND,  reinterpret_cast<WPARAM>(dc.GetSafeHdc()),
0);
    // 使图标在工作区矩形中居中
    int cxIcon = GetSystemMetrics(SM_CXICON);
    int cyIcon = GetSystemMetrics(SM_CYICON);
    CRect rect;
    GetClientRect(&rect);
    int x = (rect.Width() - cxIcon + 1) / 2;
    int y = (rect.Height() - cyIcon + 1) / 2;
    // 绘制图标
    dc.DrawIcon(x, y, m_hIcon);
  }
  else
  {
    CDialog::OnPaint();
    CDialog::UpdateWindow();
    ShowPNG();
  }
}
在调用 ShowPNG()之前,CDialog::UpdateWindow()这行代码一定要先加上,否则图标
照样不会显示,好了,整体上程序代码很简单,一目了然,到这里我们的程序就算是完成了,
看看运行效果如下图:
图12

本页地址 http://www.jybase.net/biancheng/20120414825.html

百度搜索更多

谷歌搜索更多

顶一下
(3)
100%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com