VC++ 现有工程再新开对话框问题
使用现有工程
Program Files\Microsoft DirectX SDK (February 2010)\Samples\C++\DirectInput\
目录下的joystick,用于采集USB接口数据状态。
项目中已有主对话框DialogBox( hInst, MAKEINTRESOURCE( IDD_JOYST_IMM ), NULL, MainDlgProc );显示相关信息和采集到的字符串
StringCchCopy( strText, 512, TEXT( "" ) );
for( int i = 0; i < 128; i++ )
{
if( js.rgbButtons[i] & 0x80 )
{
TCHAR sz[128];
StringCchPrintf( sz, 128, TEXT( "%02d " ), i );
StringCchCat( strText, 512, sz );
}
}
SetWindowText( GetDlgItem( hDlg, IDC_BUTTONS ), strText );
我想要在现有工程上另创建一个对话框来显示采集到的字符串转成的数组。
请教一下具体步骤,谢谢。
补充:新建对话框的话,用模态还是非模态?还有,在新建的对话框中,怎么调用DataGrid控件并对其属性进行设置?貌似VC++2010中找不到这个控件。
答案:1、添加一个对话框资源,假设ID是IDD_MYDIALOG
2、为对话框添加窗口过程函数,类似MainDlgProc,假设为MyDlgProc
3、再需要对话框的地方DialogBox(hInst,MAKEINTRESOURCE( IDD_MYDIALOG ), NULL, MyDlgProc );
其他:我们需要添加自己的消息函数来完成这个功能,添加消息函数有3个步骤:
1.在stdafx.h中,添加消息函数的宏定义
#define WM_MY_MESSAGE WM_USER + 102 其中WM_USER是VC提供给我们定义自己的消息函数的。
2.在要使用的类的.h文件里面(即新的对话框类的头文件中)添加函数声明:
LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
3.在.cpp文件(即新的对话框类的.cpp文件中)的BEGIN_MESSAGE_MAP(CGFGAME, CDialog)中间添加:
ON_MESSAGE(WM_MY_MESSAGE,OnMyMessage)
然后在下面添加函数定义:
LRESULT CGFGAME::OnMyMessage(WPARAM wParam, LPARAM lParam)
{
//写要实现的功能
char* pMsg = (char*) lParam;
SetWindowText( GetDlgItem( hDlg, IDC_BUTTONS ), pMsg );
return 0;
}
4.在别的.cpp或者自己的.cpp里面发送消息
::SendMessage(g_hWnd,WM_MY_MESSAGE, 2, strText);其中g_hWnd在该消息函数所在的类的句柄
这样就完成了自己的消息函数的定制!! 新建对话框,传递消息。 新建一个用于显示的对话框,添加自定义消息,然后将你采集到的数据发送给新建对话框即可。 有指针还要new另一个对话框的对象给它,然后就可以和普通变量一样引用另一个对话框的成员数据了.你也可以用发消息的方法来在两个对话框之间传数据。
方法1:将数据写入某个文本CFile file.write(),然后新建对话框,再读取文本file.read()。
方法2:新建对话框,自定义消息。 你把类改了,是否把所有相应的类名都改了呢,不然肯定会提示你没有定义之类的错误,还有VC跟C++还是有点区别的,VC可以直接帮你生成很多东西,所以建工程时一开始要自己想好,不然改来改去会给自己添加麻烦。
编译器 vs2008
1.在资源视图里面,右击Dialog文件夹,里面有个add resource
2.如果要传数据到另一个对话框的话,那你只能添加到框架类里面了。
其他不知道鸟。
上一个:VC真的老了吗?
下一个:如何在VC中调用Matlab编译的cpp文件