在控制台中创建一个窗口,谢谢辐射4 寻宝高手控制台指点。

---恢复内容开始---
一直以来,采用C语言方式的Windows编程的时候,程序的入口必须是WinMain()函数,当开始学习MFC的时候,又觉的MFC的框架结构繁冗混乱,萌生了自己写一个窗口类编写Windows程序,同时想和C#一样避开WinMain的启动函数,所以在网上搜寻并总结了这样一篇文章,作为笔记和大家一起学习。稍后如果我有精力的话,我会自己慢慢的封装一些窗口类,简化Windows编程的难度。希望能像C#一样具有很强的逻辑框架。如果有志同道合的新手可以在我的这一篇下面留言,一起组成兴趣小组。先声明,我是个菜鸟。
1 #include "Windows.h"
2 #include&iostream&
3 using namespace
5 #define MAX_LOADSTRING 100
6 // 全局变量:
7 HINSTANCE hI
// 当前实例
8 WCHAR* szTitle=TEXT("控制台创建的窗口");
// 标题栏文本
9 WCHAR* szWindowClass=TEXT("WindowClass");
// 主窗口类名
MyRegisterClass(HINSTANCE hInstance);
InitInstance(HINSTANCE, int);
13 LRESULT CALLBACK
WndProc(HWND, UINT, WPARAM, LPARAM);
16 #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
17 int main()
//HWND hWnd = ::GetConsoleWindow();
//::ShowWindow(hWnd, SW_HIDE);
HINSTANCE hInstance = ::GetModuleHandle(NULL);
//::MessageBox(NULL, TEXT("这是一个在控制台应用程序下启动的窗口的演示"),TEXT( "MessageBox"), MB_OK);
//cout && hInstance &&
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance(hInstance, SW_SHOW))
return FALSE;
//HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEI***ESOURCE(IDC_WIN32TEST));
// 主消息循环:
while (GetMessage(&msg, nullptr, 0, 0))
TranslateMessage(&msg);
DispatchMessage(&msg);
return (int)msg.wP
函数: MyRegisterClass()
目的: 注册窗口类。
55 ATOM MyRegisterClass(HINSTANCE hInstance)
WNDCLASSEXW
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndP
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hI
wcex.hIcon = LoadIcon(hInstance, NULL);
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowC
wcex.hIconSm = LoadIcon(wcex.hInstance, NULL);
return RegisterClassExW(&wcex);
函数: InitInstance(HINSTANCE, int)
目的: 保存实例句柄并创建主窗口
在此函数中,我们在全局变量中保存实例句柄并
创建和显示主程序窗口。
86 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
hInst = hI // 将实例句柄存储在全局变量中
HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
if (!hWnd)
return FALSE;
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
return TRUE;
函数: WndProc(HWND, UINT, WPARAM, LPARAM)
处理主窗口的消息。
WM_COMMAND
- 处理应用程序菜单
- 绘制主窗口
WM_DESTROY
- 发送退出消息并返回
114 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
switch (message)
case WM_PAINT:
PAINTSTRUCT
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
case WM_DESTROY:
PostQuitMessage(0);
return DefWindowProc(hWnd, message, wParam, lParam);
---恢复内容结束---
阅读(...) 评论()2013年2月 移动平台大版内专家分月排行榜第三
2009年 总版技术专家分年内排行榜第四
2009年2月 总版技术专家分月排行榜第一2009年1月 总版技术专家分月排行榜第一2008年11月 总版技术专家分月排行榜第一2008年10月 总版技术专家分月排行榜第一2008年9月 总版技术专家分月排行榜第一2008年8月 总版技术专家分月排行榜第一2008年7月 总版技术专家分月排行榜第一2008年6月 总版技术专家分月排行榜第一2008年5月 总版技术专家分月排行榜第一2008年4月 总版技术专家分月排行榜第一
2011年 总版技术专家分年内排行榜第三2010年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第五
本帖子已过去太久远了,不再提供回复功能。:转载时请以超链接形式标明文章原始出处和作者信息及本声明
mmc控制台的作开始菜单程序如何隐藏用及其用法?详细的操作步骤有谁知道,如何新建一个mmc控制台
mmc的用法,怎么从组策略中新建一个mmc控制台并保存加密,要主要的操作步骤和方法,谢谢各位大虾了~!~!
网友回复:
看看这个网站吧
/technet/prodtechnol/windowsserver2003/zh-chs/library/ServerHelp/cd4d1a55-f5f9-b-b43f1737fd80.mspx?mfr=true
使用 MMC 控制台
可能需要使用预配置的 MMC 控制台(一般称为“保存的控制台”,这些控制台是操作系统或应用程序的一部分),并且永远也不需要创建自定义控制台。这种预配置的控制台通常在“控制面板”的“管理工具”文件夹或“开始”菜单中可以获得。如果将自定义控制台保存到每个用户的“管理工具”文件夹(位于 \\systemdrive\Documents and Settings\user\Start Menu\Programs\Administrative Tools),此时用户“程序”菜单中“管理工具”文件夹中的控制台可用。
任何作为操作系统的一部分的预配置控制台,都被配置成以三种用户模式之一打开。默认模式为“用户模式 - 受限访问,单窗口”。有关默认控制台模式设置的详细信息,请参阅控制台访问选项。
自定义 MMC 和保存的控制台的视图
可以使用“查看”菜单的“自定义”命令上的“自定义视图”对话框来隐藏或显示控制台元素。可以隐藏的一个元素是“查看”菜单本身。如果这样做之后,又想重新配置视图,那么也可以从“系统”菜单的“自定义视图”命令访问“自定义视图”对话框。详细信息,请参阅隐藏或显示保存的 MMC 控制台功能和隐藏或显示管理单元菜单和工具栏。
使用所保存控制台中的列
在详细信息窗格中,对于按列显示的保存的控制台,您可以自定义如何显示列和行。例如,可以重新安排列或隐藏列。还可以通过单击列标题,按字母顺序或时间顺序重新安排行。另外,使用特定的管理单元,可以根据附加属性筛选列。如果启用该功能,那么一行包含有筛选选项的下拉列表框将显示在列标题的下面。详细信息,请参阅在 MMC 控制台中重新安排列、在 MMC 控制台中隐藏或显示列以及在 MMC 控制台中筛选行。
还可以将列的内容导出到文本文件。详细信息,请参阅将 MMC 控制台中的列导出为文本文件。
如果自定义控制台中的列,将分别保存每次会话的设置。
从旧版 MMC 使用控制台
利用旧版 MMC(1.1 版和 1.2 版)创建的控制台可以由 MMC 2.0 版读取。然而,在 MMC 2.0 中保存这些文件会自动转换这些文件,以后不能够将其还原为旧格式的文件。详细信息,请参阅在 MMC 2.0 中使用早期版本的 MMC 创建的文件。
用MMC控制台来远程控制主策略或注册表
当然在使用MMC控制台对服务器进行远程管理时,必须先获得服务器的超级管理权限,然后还需要***好相应的MMC插件和一定的管理工具才可以;例如要想对Windows Server 2003服务器进行远程控制的话,必须先获得管理Windows 2003服务器的服务权限,同时还需要在本地计算机中***好MMC插件和Windows 2003服务器的相关管理工具。一旦满足了上述条件,你就可以按照如下步骤来对服务器进行远程控制了:
单击“开始”/“运行”命令,打开系统运行对话框,在其中输入字符串命令“mmc”,单击“确定”按钮后,打开系统的MMC控制台窗口 依次单击MMC控制台窗口菜单栏中的“文件”/“添加/删除管理单元”命令,在其后出现的设置窗口中,单击“”标签,并在对应的标签页面中,继续单击“添加”按钮
选中该设置窗口中的“计算机管理”选项,再单击对应窗口中的“添加”按钮,在随后弹出的如图3所示的对话框中,将“另一台计算机”选项选中,同时输入需要进行远程控制的服务器IP地址,再单击“完成”按钮退出“计算机管理”设置窗口;
返回到MMC控制台窗口,用鼠标双击刚刚添加好的管理单元,以后你就能想管理本地工作站一样,对服务器进行远程控制和管理了。不过当你在对远程服务器进行管理时,系统屏幕上出现“没有访问远程计算机的权限”或者“拒绝访问”的错误提示时,就表明你还没有获得远程管理服务器的权限。此时,你不妨在控制台窗口中依次单击“文件”/“保存”菜单命令,在随后出现的文件保存对话框中,将当前控制台另存为“远程管理服务器”,并退出MMC控制台界面。
接着依次单击“开始”/“程序”/“管理工具”选项,在其后出现的下级菜单中右击刚才保存好的“远程管理服务器”项目(如图4所示),并执行快捷菜单中的“运行方式”命令,在随后弹出的“运行身份”设置框中,输入有权管理远程服务器的用户名及密码,如图5所示。然后重新执行MMC命令,打开MMC控制台窗口,就能对目标服务器进行远程管理了。值得注意的是,倘若本地计算机和目标服务器不属于Active Directory成员的话,即使你在“运行身份”设置框中正确输入了目标服务器的超级管理员帐号,本地计算机也需要创建一个相同的超级管理员帐号。
历史上的今天:

参考资料

 

随机推荐