vc 如何点下按钮弹出一个子对话框并在子对话框上显示图片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc 如何点下按钮弹出一个子对话框并在子对话框上显示图片相关的知识,希望对你有一定的参考价值。

详细点 谢谢


typedef int (WINAPI ICEPUB_DISPIMG)(HWND hWnd,char *strImgFilename,int x,int y);
ICEPUB_DISPIMG *icePub_dispImg = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)

icePub_dispImg = (ICEPUB_DISPIMG *)GetProcAddress(hDLLDrv, "icePub_dispImg");


if(icePub_dispImg != NULL)
icePub_dispImg(m_hWnd,"b.png",10,10);
// icePub_dispImg(m_ctrlText.m_hWnd,"b.jpg",0,0);
if(hDLLDrv)
FreeLibrary(hDLLDrv);


或直接调用下边函数:

char buff[1024];

buff[0]=0;

typedef int (WINAPI ICEPUB_GETIMAGESTRING2)(char *strInfo,char *strBmpFileName,char *strTitle);
ICEPUB_GETIMAGESTRING2 *icePub_getImageString2 = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)

icePub_getImageString2=(ICEPUB_GETIMAGESTRING2 *)GetProcAddress(hDLLDrv,"icePub_getImageString2");

if(icePub_getImageString2)
icePub_getImageString2(buff,"tmp_check1.bmp","请输入图片显示的数字");
if(hDLLDrv)
FreeLibrary(hDLLDrv);

AfxMessageBOx(buff);

参考资料:http://bbs.icese.net/icepubdll/icePubDLL%bd%d2%c3%d820110624.pdf

参考技术A 建立一个模式对话框,
对话框上加入一个图片框,设置好图片

然后
onbuttonclick()

CDlg dlg;
dlg.domodal();

在子线程中创建对话框时无法正确显示

【中文标题】在子线程中创建对话框时无法正确显示【英文标题】:the dialog desn't show correctly when it's created in sub-thread 【发布时间】:2010-10-11 09:22:08 【问题描述】:

我正在尝试在我的项目中添加弹出消息功能。我让它在子线程中运行,因为我需要实时通知。但是我发现通知对话框是否是在我的子线程中创建的(由 @ 开始987654321@),对话框的所有元素(按钮,urls....)都没有显示。消息框只是一个空白对话框。如果我提取函数并通过按钮启动它,那么它工作正常。这是函数,它很简单。

UINT sendNotification(LPVOID pParam)

   int x = GetSystemMetrics(SM_CXSCREEN);
   int y = GetSystemMetrics(SM_CYSCREEN);

   testPopDlg *testPop = new testPopDlg;
   testPop->Create(IDD_TEST,0);
   CRect lprect(0,0,0,0);
   testPop->GetWindowRect(lprect);
   int w = lprect.Width();
   int h = lprect.Height();
   testPop->web.Navigate("http://www.google.com",NULL,NULL,NULL,NULL);
   testPop->ShowWindow(SW_SHOW);
   for(int k=0;k<20;k++)    //slide out
   
      testPop->MoveWindow(x-w,y-h*k/20,w,y-h*k/20,1);
      Sleep(20);
   
   Sleep(5000);   //will close after 5 sec
   return 0;

为什么这个函数在子线程中不能正常工作?

【问题讨论】:

【参考方案1】:

要在 MFC 中的不同线程上使用对话框,您应该在 UI thread 上创建它。要创建 UI 线程,您基本上必须创建一个派生自 CWinThread 的类。另请参阅code project article。

【讨论】:

以上是关于vc 如何点下按钮弹出一个子对话框并在子对话框上显示图片的主要内容,如果未能解决你的问题,请参考以下文章

VC 弹出对话框

vc中如何在对话框上显示图片

excel如何检索重复内容

VC对话框怎么添加ondraw函数

如何取消Access 用户和组权限

如何在对话框弹出窗口中保存textview值?