简单介绍以下c/sdk编程,文中代码来源于别处,注释原创

类别:编程语言 点击:0 评论:0 推荐:
#include #include "resource.h" //这个头文件的作用就是定义控件等ID的数学值,全部是UINT类型的 #include "generic.h" //头文件。内容见最后面 //2个全局变量 HINSTANCE _hInst; //主程序句柄 HWND _hWnd;//主窗口句柄 char _szAppName[] = "Generic"; //程序名 char _szTitle[] = "Generic Sample Application"; //窗口名 //--------------------------------------------------------------------- //--------------------------------------------------------------------- //系统自动为下面前2个变量分配非0值 int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,PSTR lpCmdLine, int nCmdShow) //第一个是程序当前实例的句柄,第2个是程序前一个实例的句柄 //在32位操作系统中,hPrevInstance的值总为0,因为在32位系统中 //一个程序的不同实例是封装在不同的地址空间(4GB)中的 { MSG msg;//定义一个消息,MSG是一个windows32位结构体 UNREFERENCED_PARAMETER(lpCmdLine);//避免编译器出错 if (!hPrevInstance) if (!InitApplication(hInstance))//调用下面函数⑴ return (FALSE);//如果初始化失败,给系统返回一个程序失败:false! if (!InitInstance(hInstance, nCmdShow))//调用下面函数(2) return (FALSE); //程序的主题:得到消息,处理消息,其中如果得到一个消息msg为“EXIT”指令消息的话,循环结束,程序结束 while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); //事实上这最后一个msg一定是让程序关闭的msg,msg是一个结构,里面的mParam保存退出的信息 //返回给系统 } //--------------------------------------------------------------------- //--------------------------------------------------------------------- BOOL InitApplication(HINSTANCE hInstance)//函数⑴,作用是注册程序主窗口 { WNDCLASS wc;//wc是一个结构,含有11个参数,是11个,不是10个! //这下面写了10个,还有一个不知道哪去了,具体请自己去查WIN21APIs,函数名字creatwindow() wc.style = CS_HREDRAW | CS_VREDRAW;//窗口的样式 wc.lpfnWndProc = (WNDPROC)WndProc; //调用函数(3),定义这个窗口怎么样处理对应的消息 wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance;//程序进程的句柄 wc.hIcon = LoadIcon(hInstance, "jjhouricon");//图标句柄 wc.hCursor = LoadCursor(NULL, IDC_ARROW);//鼠标外观句柄 wc.hbrBackground = GetStockObject(WHITE_BRUSH); //程序背景颜色刷子 wc.lpszMenuName = "GenericMenu"; //菜单名 wc.lpszClassName = _szAppName;//程序名 return (RegisterClass(&wc));//注册 } //--------------------------------------------------------------------- //--------------------------------------------------------------------- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)//函数(2) { _hInst = hInstance; //产生窗口,但是不显示出来 _hWnd = CreateWindow( _szAppName,//程序名 _szTitle,//窗口名 WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL );//这些具体的值的意义可以从WIN32API中获得 //确认 if (!_hWnd) return (FALSE); //显示窗口 ShowWindow(_hWnd, nCmdShow); UpdateWindow(_hWnd); return (TRUE); } //--------------------------------------------------------------------- //--------------------------------------------------------------------- LRESULT CALLBACK WndProc(HWND hWnd,UINT message, WPARAM wParam, LPARAM lParam)//函数(3) { int wmId, wmEvent; switch (message) { case WM_COMMAND://普通的命令。可以简单理解为鼠标单击菜单所产生的消息 wmId = LOWORD(wParam);//wParam是一个32位的。这里得到32位中的底16为所保存的值----消息的ID wmEvent = HIWORD(wParam); switch (wmId) { case IDM_ABOUT: DialogBox(_hInst, "AboutBox", hWnd, (DLGPROC)About //调用函数(4) );//产生关于对话框 break; case IDM_EXIT: DestroyWindow (hWnd); break; default://默认的结束程序的方式。调用这个函数让系统来关闭这个函数 return (DefWindowProc(hWnd, message, wParam, lParam)); } break; case WM_DESTROY://普通的关闭程序的消息,当主函数中while循环中得到这个消息后,循环结束,程序结束  PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, message, wParam, lParam));//同上 } return (0); } //--------------------------------------------------------------------- LRESULT CALLBACK About(HWND hDlg,UINT message,WPARAM wParam, LPARAM lParam)//函数(4) { UNREFERENCED_PARAMETER(lParam); //作用同上 //原理同上 switch (message) { case WM_INITDIALOG: return (TRUE); case WM_COMMAND: if (LOWORD(wParam) == IDOK|| LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, TRUE);//结束对话框 return (TRUE); } break; } return (FALSE); } //--------------------------------------------------------------------------- //附件: generic.h内容 /* BOOL InitApplication(HANDLE); BOOL InitInstance(HANDLE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM); */

本文地址:http://com.8s8s.com/it/it24146.htm