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

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 forpku 的 blog

#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); */

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

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top