创建对话框使用类名#32770的探讨
来源:互联网 发布:湖南大学有网络教育 编辑:程序博客网 时间:2024/06/06 08:37
Windows核心编程在创建Error Show对话框的时候,Main函数是这样写的:
1
2
3
4
5
6
7
8
HWND
hwnd = FindWindow(TEXT(
"#32770"
), TEXT(
"Error Show"
));
if
(IsWindow(hwnd)) {
// An instance is already running, activate it and send it the new #
SendMessage(hwnd, ESM_POKECODEANDLOOKUP, _ttoi(pszCmdLine), 0);
}
else
{
DialogBoxParam(hinstExe, MAKEINTRESOURCE(IDD_ERRORSHOW),
NULL, Dlg_Proc, _ttoi(pszCmdLine));
}
我不明白这个#32770到底是什么,上网找了资料。然后自己又做了小实验了,终于搞清楚了。
这个#32770是对话框的默认类名,新建一个MFC对话框,通过Spy ++看下新创建的对话框的类名.
可以看到类名是#32770(对话框),无论以创建几个都是这样.#32770是对话框的默认类名.
但是通过
1
HWND
hwnd = FindWindow(TEXT(
"#32770"
), TEXT(
"Error Show"
));
这个函数FindWindow还需要指定窗口名字,但是如果窗口名字不固定或者在创建中才决定,这样
1
HWND
hwnd = FindWindow(TEXT(
"#32770"
), NULL);
这个函数就找不到窗口类了,现在要做的就是创建唯一类名的窗口类,创建唯一类的步骤:
在重载的CWinApp中InitInstance()函数中修改,
1234567891011121314151617BOOL
CMy32770App::InitInstance()
{
WNDCLASS wc;
// Get the info for this class。
// #32770 is the default class name for dialogs boxes。
::GetClassInfo(AfxGetInstanceHandle(),
"#32770"
, &wc);
// Change the name of the class。
wc.lpszClassName =
"Hello"
;
// Register this class so that MFC can use it。
AfxRegisterClass(&wc);
//..............
}
2.在资源中修改类名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IDD_MY32770_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION
"Hello"
CLASS
"Hello"
//这个地方是重点,这个CLASS和上面的初始化中名字必须相同
FONT 9,
"宋体"
BEGIN
DEFPUSHBUTTON
"确定"
,IDOK,260,7,50,14
PUSHBUTTON
"取消"
,IDCANCEL,260,23,50,14
LTEXT
"TODO: 在这里设置对话控制。"
,IDC_STATIC,51,152,200,8
CONTROL
"List1"
,IDC_LIST1,
"SysListView32"
,LVS_REPORT |
LVS_OWNERDRAWFIXED | LVS_OWNERDATA | WS_BORDER |
WS_TABSTOP,23,15,194,108
END
然后编译运行,最后通过Spy++可以看到
类名已经更改.
可以参开下面的文章:
http://www.vckbase.com/index.php/wv/910.html
0 0
- 创建对话框使用类名#32770的探讨
- 使用AlertDialog类创建对话框
- 使用AlertDialog类创建对话框
- Visual C++对话框程序设计(一)创建显示对话框&类模版的使用
- 无模式对话框的创建与使用
- 无模式对话框的创建与使用
- 使用AlertDialog创建对话框的大致步骤
- 非模态对话框的创建及使用
- 使用ATL类来创建一个对话框
- 使用AlertDialog创建对话框
- 使用AlertDialog创建对话框
- 使用AlertDialog创建对话框
- 使用AlterDialog创建对话框
- 数组名与指针的深层探讨
- 变量名和地址的关系探讨
- 变量名和地址的关系探讨
- Android之使用AlertDialog.Builder类创建带列表的对话框和带自己所布局视图的对话框
- split -l的使用及nohup命令连接多个程序名& 用法探讨
- linux动态链接代码调用dlopen
- ArcGIS教程:了解水系
- android中volley框架实现图片加载
- IOS学习之oc基础
- 求两个用链表表示的整数的和
- 创建对话框使用类名#32770的探讨
- Docker中挂载的文件夹在容器中无法使用的解决方法
- mysql读写分离(Java)方案比较
- JUnit4之详解
- MethodInterceptor实战
- iOS拨打电话的三种方法
- POJ 3620 Avoid The Lakes(DFS)
- 日期字符串相互转换
- HDU 5402 Travelling Salesman Problem