最近一段时间,在研究研华采集卡USB4711附带的example,发现VC++例子采用SDK所写,文件名后缀为.c,其中有些组织结构看不懂,所以首先看懂了孙鑫VC++详解的第一章,了解了windows程序的内部运行机制。但是例子上面没有怎么使用资源,如修改图标,添加菜单和对话框等。于是自己写,但是写的过程中遇到了好多的困难。首先是菜单的加载,其次是对话框的使用。再次总结一下
① FARPROC lpfnConfigDlgProc; // config. dialog procedure
lpfnConfigDlgProc = MakeProcInstance (ConfigDlgProc, hInstance) ;这是一句过时的调用
DialogBox (hInstance, MAKEINTRESOURCE(IDD_SETTING), hWnd, lpfnConfigDlgProc) ;
现在已经改成DialogBox (hInstance, MAKEINTRESOURCE(IDD_SETTING),hwnd, RunDlgproc) ;
② menu的几种加载方式和注意事项,前面的那篇文章已经写了。
③ 窗口过程函数的写法。主窗口过程和对话框子窗口过程
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
static HINSTANCE hInstance ; //获取本程序的句柄
switch (message)
{
case WM_CREATE :
hInstance = ((LPCREATESTRUCT) lParam)->hInstance ;
return 0 ;
case WM_COMMAND :
switch (LOWORD (wParam))
{
case IDM_APP_ABOUT :
DialogBox (hInstance, TEXT ("AboutBox"), hwnd, AboutDlgProc) ;
break ;
}
return 0 ;
case WM_DESTROY :
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
总结,有关windows 32 SDK的学习资料最好的是《WINDOWS程序设计》这本书,作者是Charles Petzold;
劝学网的教程也相当不错http://www.quanxue.cn/JC_CLanguage/SdkIndex.html,
windowSDK笔记也值得一看http://www.cnblogs.com/MS-Frank/archive/2009/03/13/1410325.html