Windows编程不能同时显示文字和图片解决方案
Windows编程不能同时显示文字和图片
请教各位高手
我通过WIFI接收图片和文字数据,并想在对话框上进行显示,对话框是自动跳出来显示的,并且长久显示
if(处理完图片数据和文字数据)
{//图片数据存为image。bmp
//文字存到messagebuf
SendMessage(hDlg4,WM_PAINT,NULL,NULL);
tpeg_show();//程序自动弹出对话框
}
void tpeg_show()
{
if(show_flag==0)//来确保以后接收到数据后不又再弹出对话框,有可能不简洁,没加这个之前,对话框一闪而过
{ //没有停留,接收程序那些有主窗口程序负责,我只是想在对话框上显示文字和图片
show_flag=1;
hDlg4=CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG4), ghwndMain, TPEGProc);
ShowWindow(hDlg4,SW_SHOWNORMAL);
}
return;
}
void tpeg_show()
{
hDlg4=CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG4), ghwndMain, TPEGProc);
SendMessage(hDlg4,WM_PAINT,NULL,NULL);
ShowWindow(hDlg4,SW_SHOWNORMAL);//我创建的非模式对话框
}
BOOL CALLBACK TPEGProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT paintinformation;
HDC hdc;
HWND hwndEditbox;
char *fpt=messagebuff;//messagebuf是我用来存放文字的BUF
switch (uMsg)
{
case WM_INITDIALOG:
break;
case WM_PAINT:
{
hdc=BeginPaint(hwnd,&paintinformation);
RECT rect;
GetClientRect(hwnd,&rect);
hwndEditbox = GetDlgItem(hwnd, IDC_EDITBOX);//IDC_EDITBOX是一个编辑框,我想在其中输入文字
SetWindowText(hwndEditbox,fpt);//想输出文字显示,但显示不出来,编辑框是手动添加的
//以下是输出图片,image。bmp图片,代码可能不简洁,还望高手能帮忙优化,但能显示图片信息;
HBITMAP bimp = (HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,X_image,Y_image,LR_LOADFROMFILE);
CreateCompatibleBitmap(hdc,X_image,Y_image);
HDC hh=CreateCompatibleDC(NULL);
SelectObject(hh,bimp);
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
EndPaint(hwnd,&paintinformation);
ReleaseDC(hwnd,hh);
break;
}
default:
return FALSE;
}
return TRUE;
}
------解决方案--------------------
不是显示不出来,而是被图片盖住了而已.
因为图像后显示的所以盖住其他了.
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
//其实可以在这里TextOut或者DrawText的.这样文字在图像上面.
//而且还可以SetTextColor,SetBkMode
EndPaint(hwnd,&paintinformation);
如果必须要用输入框的话,你得把他放在图像显示区域的外面.或者把代码顺序调整一下
//以下是输出图片,image。bmp图片,代码可能不简洁,还望高手能帮忙优化,但能显示图片信息;
HBITMAP bimp = (HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,X_image,Y_image,LR_LOADFROMFILE);
CreateCompatibleBitmap(hdc,X_image,Y_image);
HDC hh=CreateCompatibleDC(NULL);
SelectObject(hh,bimp);
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
EndPaint(hwnd,&paintinformation);
ReleaseDC(hwnd,hh);
hwndEditbox = GetDlgItem(hwnd, IDC_EDITBOX);//IDC_EDITBOX是一个编辑框,我想在其中输入文字
SetWindowText(hwndEditbox,fpt);//想输出文字显示,但显示不出来,编辑框是手动添加的
请教各位高手
我通过WIFI接收图片和文字数据,并想在对话框上进行显示,对话框是自动跳出来显示的,并且长久显示
if(处理完图片数据和文字数据)
{//图片数据存为image。bmp
//文字存到messagebuf
SendMessage(hDlg4,WM_PAINT,NULL,NULL);
tpeg_show();//程序自动弹出对话框
}
void tpeg_show()
{
if(show_flag==0)//来确保以后接收到数据后不又再弹出对话框,有可能不简洁,没加这个之前,对话框一闪而过
{ //没有停留,接收程序那些有主窗口程序负责,我只是想在对话框上显示文字和图片
show_flag=1;
hDlg4=CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG4), ghwndMain, TPEGProc);
ShowWindow(hDlg4,SW_SHOWNORMAL);
}
return;
}
void tpeg_show()
{
hDlg4=CreateDialog(ghInst, MAKEINTRESOURCE(IDD_DIALOG4), ghwndMain, TPEGProc);
SendMessage(hDlg4,WM_PAINT,NULL,NULL);
ShowWindow(hDlg4,SW_SHOWNORMAL);//我创建的非模式对话框
}
BOOL CALLBACK TPEGProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT paintinformation;
HDC hdc;
HWND hwndEditbox;
char *fpt=messagebuff;//messagebuf是我用来存放文字的BUF
switch (uMsg)
{
case WM_INITDIALOG:
break;
case WM_PAINT:
{
hdc=BeginPaint(hwnd,&paintinformation);
RECT rect;
GetClientRect(hwnd,&rect);
hwndEditbox = GetDlgItem(hwnd, IDC_EDITBOX);//IDC_EDITBOX是一个编辑框,我想在其中输入文字
SetWindowText(hwndEditbox,fpt);//想输出文字显示,但显示不出来,编辑框是手动添加的
//以下是输出图片,image。bmp图片,代码可能不简洁,还望高手能帮忙优化,但能显示图片信息;
HBITMAP bimp = (HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,X_image,Y_image,LR_LOADFROMFILE);
CreateCompatibleBitmap(hdc,X_image,Y_image);
HDC hh=CreateCompatibleDC(NULL);
SelectObject(hh,bimp);
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
EndPaint(hwnd,&paintinformation);
ReleaseDC(hwnd,hh);
break;
}
default:
return FALSE;
}
return TRUE;
}
------解决方案--------------------
不是显示不出来,而是被图片盖住了而已.
因为图像后显示的所以盖住其他了.
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
//其实可以在这里TextOut或者DrawText的.这样文字在图像上面.
//而且还可以SetTextColor,SetBkMode
EndPaint(hwnd,&paintinformation);
如果必须要用输入框的话,你得把他放在图像显示区域的外面.或者把代码顺序调整一下
//以下是输出图片,image。bmp图片,代码可能不简洁,还望高手能帮忙优化,但能显示图片信息;
HBITMAP bimp = (HBITMAP)LoadImage(NULL,"image.bmp",IMAGE_BITMAP,X_image,Y_image,LR_LOADFROMFILE);
CreateCompatibleBitmap(hdc,X_image,Y_image);
HDC hh=CreateCompatibleDC(NULL);
SelectObject(hh,bimp);
BitBlt(hdc,10,10,X_image,Y_image,hh,0,0,SRCCOPY);
EndPaint(hwnd,&paintinformation);
ReleaseDC(hwnd,hh);
hwndEditbox = GetDlgItem(hwnd, IDC_EDITBOX);//IDC_EDITBOX是一个编辑框,我想在其中输入文字
SetWindowText(hwndEditbox,fpt);//想输出文字显示,但显示不出来,编辑框是手动添加的