Picture Control控件放图片问题

cokeliu 2014-09-10 04:54:57
我在对话框上放一个Picture Control控件. 资源文件中加一个bmp图片,在Picture Control(IDC_STATIC_REMOTE)放该图片. 以下是程序,发现如果屏蔽pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE)图片显示就OK,一旦不屏蔽这一行时候,图片显示就很小,且是以右下角对齐的. 请问是怎么回事?

hBitmap =(HBITMAP)LoadImage(AfxGetInstanceHandle(), //关联图片ID
MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,0,0,
LR_LOADMAP3DCOLORS);

pStatic=(CStatic *)GetDlgItem(IDC_STATIC_REMOTE); //获得指向静态控件的指针
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); //设置静态控件的样式,使其位图居中
pStatic->SetBitmap(hBitmap); //设置静态控件显示位
((CStatic*)GetDlgItem(IDC_STATIC_REMOTE))->MoveWindow(REMOTE_LEFT*x_resize, REMOTE_TOP*y_resize, REMOTE_WIDTH*x_resize, REMOTE_HEIGHT*y_resize, 0);
...全文
102 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2014-10-14
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
cokeliu 2014-09-10
  • 打赏
  • 举报
回复
我贴完整一点代码吧: void CSmart_RemoterDlg::MakeRemoteLayout(unsigned char style) { int i; //HBITMAP hBitmap; //添加登陆窗口中的图片 CStatic *pStatic; DWORD staticstyle; switch(style) { case OTHEERS_STYLE: if(hBitmap) DeleteObject(hBitmap); hBitmap =(HBITMAP)LoadImage(AfxGetInstanceHandle(), //关联图片ID MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP,0,0, LR_LOADMAP3DCOLORS); pStatic=(CStatic *)GetDlgItem(IDC_STATIC_REMOTE); //获得指向静态控件的指针 pStatic->SetBitmap(hBitmap); //设置静态控件显示位 ((CStatic*)GetDlgItem(IDC_STATIC_REMOTE))->MoveWindow((int)(REMOTE_LEFT*x_resize), (int)(REMOTE_TOP*y_resize), (int)(REMOTE_WIDTH*x_resize), (int)(REMOTE_HEIGHT*y_resize), 0); for(i=0; i<sizeof(MyButton_Map) / sizeof(Button_Map); i++) { ((CButton*)GetDlgItem(MyButton_Map[i].Button_ID))->MoveWindow((MyButton_Map[i].left)*x_resize, (MyButton_Map[i].top)*y_resize, MyButton_Map[i].Width*x_resize, MyButton_Map[i].Height*y_resize, 0); ((CGdipButton*)GetDlgItem(MyButton_Map[i].Button_ID))->LoadStdImage(MyButton_Map[i].Rresorce_ID[0], _T("PNG")); ((CGdipButton*)GetDlgItem(MyButton_Map[i].Button_ID))->SetToolTipText(MyButton_Map[i].Name); } break; .... } BOOL CSmart_RemoterDlg::OnInitDialog() { 。。。 //示例:如何获取当前DPI CDC * pDc=GetDC(); HDC hDc= pDc->GetSafeHdc(); int dpiX= GetDeviceCaps (hDc, LOGPIXELSX); int dpiY = GetDeviceCaps (hDc, LOGPIXELSY); x_resize = (float)dpiX / DEFAULT_XDPI; y_resize = (float)dpiY / DEFAULT_YDPI; //定位窗口 hBitmap = NULL; MakeRemoteLayout(OTHEERS_STYLE); 。。。 } 我如果只是在OnInitDialog调用MakeRemoteLayout一次的话,则没有问题,但是在程序其他地方也调用则图片明显小于实际大小。还有一个问题就是当我显示器DPI为100%就没有问题,如果DPI分辨率为125%则就出现以上情况,我在125% dpi下单步看过x_resize /y_resize为1.25正确的.
schlafenhamster 2014-09-10
  • 打赏
  • 举报
回复
控件属性可以设置, 不必 pStatic->ModifyStyle

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧