vc 6.0建立以一个Win32 hello world 程序,代码如下
//TestWin32.cpp:Definestheentrypointfortheapplication.
//
#include"stdafx.h"
#include"resource.h"
#include"dbt.h"
#include"windows.h"
#defineMAX_LOADSTRING100
//GlobalVariables:
HINSTANCEhInst;//currentinstance
TCHARszTitle[MAX_LOADSTRING];//Thetitlebartext
TCHARszWindowClass[MAX_LOADSTRING];//Thetitlebartext
//Fowarddeclarationsoffunctionsincludedinthiscodemodule:
ATOMMyRegisterClass(HINSTANCEhInstance);
BOOLInitInstance(HINSTANCE,int);
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
LRESULTCALLBACKAbout(HWND,UINT,WPARAM,LPARAM);
//检测光驱
charchFirstDriveFromMask(ULONGunitmask);
charchFirstDriveFromMask(ULONGunitmask)
...{
chari;
for(i=0;i<26;++i)//假设不会超过26个逻辑驱动器
...{
if(unitmask&0x1)//看该驱动器的状态是否发生了变化
break;
unitmask=unitmask>>1;
}
return(i+'A');
}
//
intAPIENTRYWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)
...{
//TODO:Placecodehere.
MSGmsg;
HACCELhAccelTable;
//Initializeglobalstrings
LoadString(hInstance,IDS_APP_TITLE,szTitle,MAX_LOADSTRING);
LoadString(hInstance,IDC_TESTWIN32,szWindowClass,MAX_LOADSTRING);
MyRegisterClass(hInstance);
//Performapplicationinitialization:
if(!InitInstance(hInstance,nCmdShow))
...{
returnFALSE;
}
hAccelTable=LoadAccelerators(hInstance,(LPCTSTR)IDC_TESTWIN32);
//Mainmessageloop:
while(GetMessage(&msg,NULL,0,0))
...{
if(!TranslateAccelerator(msg.hwnd,hAccelTable,&msg))
...{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
returnmsg.wParam;
}
//
//FUNCTION:MyRegisterClass()
//
//PURPOSE:Registersthewindowclass.
//
//COMMENTS:
//
//Thisfunctionanditsusageisonlynecessaryifyouwantthiscode
//tobecompatiblewithWin32systemspriortothe'RegisterClassEx'
//functionthatwasaddedtoWindows95.Itisimportanttocallthisfunction
//sothattheapplicationwillget'wellformed'smalliconsassociated
//withit.
//
ATOMMyRegisterClass(HINSTANCEhInstance)
...{
WNDCLASSEXwcex;
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.style=CS_HREDRAW|CS_VREDRAW;
wcex.lpfnWndProc=(WNDPROC)WndProc;
wcex.cbClsExtra=0;
wcex.cbWndExtra=0;
wcex.hInstance=hInstance;
wcex.hIcon=LoadIcon(hInstance,(LPCTSTR)IDI_TESTWIN32);
wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
wcex.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName=(LPCSTR)IDC_TESTWIN32;
wcex.lpszClassName=szWindowClass;
wcex.hIconSm=LoadIcon(wcex.hInstance,(LPCTSTR)IDI_SMALL);
returnRegisterClassEx(&wcex);
}
//
//FUNCTION:InitInstance(HANDLE,int)
//
//PURPOSE:Savesinstancehandleandcreatesmainwindow
//
//COMMENTS:
//
//Inthisfunction,wesavetheinstancehandleinaglobalvariableand
//createanddisplaythemainprogramwindow.
//
BOOLInitInstance(HINSTANCEhInstance,intnCmdShow)
...{
HWNDhWnd;
hInst=hInstance;//Storeinstancehandleinourglobalvariable
hWnd=CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
...{
returnFALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
returnTRUE;
}
//
//FUNCTION:WndProc(HWND,unsigned,WORD,LONG)
//
//PURPOSE:Processesmessagesforthemainwindow.
//
//WM_COMMAND-processtheapplicationmenu
//WM_PAINT-Paintthemainwindow
//WM_DESTROY-postaquitmessageandreturn
//
//
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
...{
//
BOOLfRet=TRUE;//返回值
//通过响应WM_DEVICECHANGE消息得到的设备事件信息结构
PDEV_BROADCAST_HDRlpdb=(PDEV_BROADCAST_HDR)lParam;
//
intwmId,wmEvent;
PAINTSTRUCTps;
HDChdc;
TCHARszHello[MAX_LOADSTRING];
LoadString(hInst,IDS_HELLO,szHello,MAX_LOADSTRING);
switch(message)
...{
/**//*caseWM_INITDIALOG:
fRet=TRUE;
break;
*/
//对WM_DEVICECHANGE消息进行处理
caseWM_DEVICECHANGE:
charszMsg[80];//对话框中要表示的字符串
switch(wParam)
...{
//当一个设备变得被插入并变得可用时,
//系统会发送广播事件DBT_DEVICEARRIVAL
caseDBT_DEVICEARRIVAL:
//判断CDROM碟片是否已经插入到光驱中
if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)...{
PDEV_BROADCAST_VOLUMElpdbv=(PDEV_BROADCAST_VOLUME)lpdb;
//判断是否有CDROM碟片
if(lpdbv->dbcv_flags&DBTF_MEDIA)
...{
//显示消息,获取光驱的逻辑驱动器号
wsprintf(szMsg,"驱动器%c:已经可用 ",chFirstDriveFromMask(lpdbv->dbcv_unitmask));
MessageBox(hWnd,szMsg,"光驱自动监测",MB_OK|MB_ICONINFORMATION);
}
}
break;
//当一个设备变得被移走并变得不可用时,
//系统会发送广播事件DBT_DEVICEREMOVECOMPLETE
caseDBT_DEVICEREMOVECOMPLETE:
//判断CDROM碟片是否从光驱中移走
if(lpdb->dbch_devicetype==DBT_DEVTYP_VOLUME)...{
PDEV_BROADCAST_VOLUMElpdbv=(PDEV_BROADCAST_VOLUME)lpdb;
if(lpdbv->dbcv_flags&DBTF_MEDIA)
...{
//显示消息,获取光驱的逻辑驱动器号
wsprintf(szMsg,"驱动器%c:已经弹出 ",chFirstDriveFromMask(lpdbv->dbcv_unitmask));
MessageBox(hWnd,szMsg,"光驱自动监测",MB_OK|MB_ICONINFORMATION);
}
}
break;
}
//
caseWM_COMMAND:
wmId=LOWORD(wParam);
wmEvent=HIWORD(wParam);
//Parsethemenuselections:
switch(wmId)
...{
caseIDM_ABOUT:
DialogBox(hInst,(LPCTSTR)IDD_ABOUTBOX,hWnd,(DLGPROC)About);
break;
caseIDM_EXIT:
DestroyWindow(hWnd);
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
break;
caseWM_PAINT:
hdc=BeginPaint(hWnd,&ps);
//TODO:Addanydrawingcodehere...
RECTrt;
GetClientRect(hWnd,&rt);
DrawText(hdc,szHello,strlen(szHello),&rt,DT_CENTER);
EndPaint(hWnd,&ps);
break;
caseWM_DESTROY:
PostQuitMessage(0);
break;
default:
fRet=FALSE;
returnDefWindowProc(hWnd,message,wParam,lParam);
}
//禁止光驱的AutoPlay功能以下代码在windowsserver2003上不启作用,要用注册表的方法
/**//*
staticUINTuMsgQueryCancelAutoPlay=RegisterWindowMessage("QueryCancelAutoPlay");
if(message==uMsgQueryCancelAutoPlay)
{
intn=MessageBox(hWnd,"你想禁止AutoPlay功能吗?",NULL,MB_YESNO|MB_ICONQUESTION);
//1代表取消AutoPlay
//0t代表允许AutoPlay
SetWindowLong(hWnd,message,(n==IDYES)?1:0);
fRet=(n==IDYES)?1:0;
}
*/
return0;
}
//Mesagehandlerforaboutbox.
LRESULTCALLBACKAbout(HWNDhDlg,UINTmessage,WPARAMwParam,LPARAMlParam)
...{
switch(message)
...{
caseWM_INITDIALOG:
returnTRUE;
caseWM_COMMAND:
if(LOWORD(wParam)==IDOK||LOWORD(wParam)==IDCANCEL)
...{
EndDialog(hDlg,LOWORD(wParam));
returnTRUE;
}
break;
}
returnFALSE;
}
分享到:
相关推荐
在那个年代,操作系统安装通常需要用户手动进行一系列设置和选择,而“全自动安装”意味着该光盘包含了自动执行这些步骤的脚本或程序,如自动分区、格式化硬盘、复制系统文件、配置硬件驱动等。这大大降低了安装系统...
### Win7系统光驱老自动弹出解决方案 #### 背景介绍 在Windows 7操作系统中,有时候用户会遇到光驱无缘无故自动弹出的情况。这种情况不仅令人感到困惑,还可能对日常工作造成一定的干扰。本文将详细介绍如何解决Win...
4. **重启计算机**:完成以上操作后,重启计算机,系统会自动检测并尝试重新安装驱动程序。 ### 解决方法二:清理注册表中的相关项目 如果上述方法未能解决问题,则可以尝试清理注册表中可能存在问题的键值: 1. **...
- 重启后,系统会自动检测并安装必要的驱动程序。如果自动安装失败,可以通过访问苹果官网下载适用于Macbook Air的Windows 7驱动程序手动安装。 6. **安装Boot Camp支持软件**: - 安装完成后,运行Boot Camp安装...
这些工具通常具有自动检测功能,可以帮你快速找到并安装合适的驱动程序。 1. **下载并安装驱动精灵**:访问官方网站或其他可靠来源下载最新版本的驱动精灵软件,并按照提示进行安装。 2. **运行软件**:打开驱动...
打开程序后点击上方的浏览选择要写入的iso文件,如果程序没有自动识别出优盘,点击第二个浏览选择优盘,完成后开始写入。 Win7pe优盘写入工具写入方式介绍: 直接写入:使用ultraiso直接解压到优盘,通常写入较慢 ...
2. **设置CMOS**:在计算机的BIOS设置中,调整启动顺序,将光驱设为第一启动设备。 #### 二、下载Win7 ISO安装文件 1. **下载Win7 ISO文件**:根据需要选择合适的Win7版本,通常ISO文件大小约为3GB左右。 2. **...
2. **选择USB驱动器**: 在Rufus界面中,它会自动检测到连接的USB设备。确认无误后,点击"选择"按钮。 3. **设置引导类型**: 在"分区方案和目标系统类型"部分,选择"GPT分区表"(如果你的电脑支持UEFI启动)或者"MBR...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
- 安装完成后,插入Boot Camp创建的驱动程序USB,Windows会自动检测并安装必要的驱动,包括声卡、显卡、无线网卡等。 - 通过Boot Camp控制面板,你可以调整Windows和macOS之间的启动选项。 7. **系统切换**: - ...
第一部分 界面设计 实例001 如何实现程序闪屏效果 实例002 如何实现程序窗口闪烁 实例003 如何制作吸附窗口程序 实例004 如何制作透明程序窗口 实例005 如何制作半透明程序窗口 实例006 如何制作不规则程序...
查找行中第一个数字串.cmd 检测IP格式是否正确.cmd 每6行拼接为一行.cmd 理解字符截取功能.cmd 生成0-99之间的随机数列.cmd 用指定字符替换指定内容.cmd 用某行内容替换特定字符.cmd 统计重复次数并排序.cmd 计算...
描述中提到的C#工厂厂测笔记本程序第一版,显然是一个用于检测硬盘和分区信息的工具,它可以读取MBR和GPT分区信息,以及SMART监控数据。由于程序可能需要直接与硬件交互,因此需要以管理员权限运行以获得足够的权限...
- **操作系统支持**:支持多个版本的Windows Server操作系统,包括32位和64位版本。 - **数据库引擎**:支持SQL Server 2005 Standard/Enterprise版本。 #### 六、中间层服务部件安装 中间层服务部件负责处理客户端...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
另外有只打开一个应用程序、CRichEdit的使用、最小到托盘、自动检测在线用户(多播组)等。 FreeBird2011Dlg.h 主对话框类头文件 MultiGroup.h 多播组类头文件 UserLink.h 用户链表类头文件 ListenSocket.h 侦听接口...