正在将文本发送到静态控件
Sending text to static control
这里有问题。我想从AVI文件中获取信息,然后问用户他想用它做什么。为此,我有对话框,在那里(除其他外)我有静态文本控制,我希望信息文本出现在哪里。代码:
BOOL GetAviInfo(LPSTR szFileName)
{
AVIFileInit();
PAVIFILE avi;
int res=AVIFileOpen(&avi, szFileName, OF_READ, NULL);
//some testing code
AVIFILEINFO avi_info;
AVIFileInfo(avi, &avi_info, sizeof(AVIFILEINFO));
CString szFileInfo;
szFileInfo.Format( "Information about the AVI file: n"
"Dimention: %dx%dn"
"Max bytes per second: %dn"
"Samples per second: %dn"
"Streams: %dn"
"File Type: %d"
"Length: %d framesnn"
"What do you want to do?",
avi_info.dwWidth,
avi_info.dwHeight,
avi_info.dwLength,
avi_info.dwMaxBytesPerSec,
(DWORD) (avi_info.dwRate / avi_info.dwScale),
avi_info.dwStreams,
avi_info.szFileType
);
MessageBox(NULL, szFileInfo, "Info", MB_OK); //this works
int ret = DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_AVIINF_DIALOG), aviinfhwnd, AviInfDlgProc);
SetDlgItemText(aviinfhwnd, AVIINF_STATIC_INFO, szFileInfo); //this doesnt work
AVIFileExit();
return TRUE;
}
所以我很困惑为什么将Cstring发送到messagebox可以很好地工作,而将文本发送到静态控件却不能。两个函数(MessageBox和SetDlgItemText)都需要相同的文本数据类型(LPCTSTR)。我还试图通过WM_SETTEXT消息发送文本,但也不起作用:
LPSTR lpstrChar= szFileInfo.GetBuffer(0);
SendMessage(GetDlgItem(aviinfhwnd, AVIINF_STATIC_INFO), aviinfMsg, NULL, lpstrChar);
请告诉我我做错了什么,以及如何使文本显示在静态中,因为我不想使用消息框(冗余窗口)。感谢
对话框只有在对话框结束后才会返回。DialogBox返回一个hwnd,它是您应该发送消息的地方。
相关文章:
- 如何从代码本身向 wxwidgets 中的文本控件插入字符?
- 如何在MFC中的静态文本控件上插入图标?
- 如果我有五个 Win32 静态控件,如何使用特定的前景色设置其中一个?
- win32 c++ 我想在静态标签的文本之后直接插入一个 EDIT 控件
- Win32 c++ 更改透明静态控件中的文本将其置于底部
- MFC Rich编辑控件2.0文本颜色
- 如何在Win32(C++)静态控件中正确渲染OpenGL
- STM_SETIMAGE不会使静态控件失效/重新绘制
- 无法更改 WinAPI 中的编辑控件文本
- 更改编辑 mfc 控件文本
- 如何在改变文本时重新绘制静态控件
- 在静态文本控件上设置图标
- 静态控件设置文本颜色
- 如何使图片适合于一个静态控件vc++ win32
- 如何改变静态文本控件的字体(winapi)
- 编辑控件文本溢出
- 正在运行的线程中静态控件的重绘窗口
- 将文本放到运行时注册的静态控件中
- 正在将文本发送到静态控件
- 如何在“选择文件夹”对话框中为静态控件的背景着色