MFC学习-第一课 MFC运行机制
来源:互联网 发布:上海大承网络 空中网 编辑:程序博客网 时间:2024/05/22 08:13
1.vs2010不像vs6.0那样可以新建一个空的MFC应用程序,如果用vs2010 文件-新建-MFC应用程序-完成,所得到的MFC项目并不是空项目。vs2010为它提供了一些默认的模板吧(不清楚)。由于没有看懂默认提供的代码,解决的办法不是新建一个MFC应用程序,而是新建一个空项目(文件-新建-空项目),然后再在源文件夹下新建一个c++源文件,添加以下代码:
#include <Windows.h>#include <stdio.h>LRESULT CALLBACK WinSunProc( HWND hand, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd ){ WNDCLASS wndcls; wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndcls.hCursor = LoadCursor(NULL,IDC_CROSS); wndcls.hIcon = LoadIcon(NULL,IDI_ERROR); wndcls.hInstance = hInstance; wndcls.lpfnWndProc = WinSunProc; wndcls.lpszClassName = "ky2014"; wndcls.lpszMenuName = NULL; wndcls.style = CS_HREDRAW | CS_VREDRAW; RegisterClass(&wndcls); HWND hand; hand = CreateWindow("ky2014","ky2014",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL); ShowWindow(hand,SW_SHOWNORMAL); UpdateWindow(hand); MSG msg; while(GetMessage(&msg,NULL,0,0)){ TranslateMessage(&msg); DispatchMessage(&msg); } return 0;}LRESULT CALLBACK WinSunProc( HWND hand, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch(uMsg){ case WM_CHAR: char szChar[20]; sprintf(szChar,"char is %d",wParam); MessageBox(hand,szChar,"ky",0); break; case WM_LBUTTONDOWN: MessageBox(hand,"mouse clicked","ky",0); HDC hdc; hdc = GetDC(hand); TextOut(hdc,0,50,"计算机",strlen("计算机")); ReleaseDC(hand,hdc); break; case WM_PAINT: HDC hdc2; PAINTSTRUCT ps; hdc2 = BeginPaint(hand,&ps); TextOut(hdc2,0,0,"数学",strlen("数学")); EndPaint(hand,&ps); break; case WM_CLOSE: if(IDYES == MessageBox(hand,"是否真的结束?","ky",MB_YESNO));{ DestroyWindow(hand); } break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hand,uMsg,wParam,lParam); } return 0;}
再进行调试运行,最后的结果如下:
总结:
1.要有个MSDN的Library来查看WindowAPI.
2.遇到一个错误就是对于lpszClassName 是LPCWSTR类型,再查看LPCWSTR类型的定义,它是一个指向const wchar_t的指针。就产生了一个const char*类型无法转换为LPCWSTR类型的错误。原因好像是Unicode编码和ansi编码的问题。可以按这个博客的方法修改http://blog.163.com/liyani_1980/blog/static/38604145200921692710146/,也可以修改项目-属性-通用配置-常规-项目默认值-字符集,把"使用Unicode字符集"修改为“未设置”.
3.是关于代码风格的问题,现在可以利用typedef来包装c++中的常规类型,使得一看变量的类型就知道它所代表的含义。备忘typedef的一个用法。
参考:http://baike.baidu.com/link?url=a1p8FtKjaXTSxbcP6qiWPGcXUaTzYnftDDNt2t54eW3lLZMWikcHmDqGKiSAwBPgkfxJ2ugI-KTqSZmQuUMw9_
- MFC学习-第一课 MFC运行机制
- MFC学习-第2,3课 MFC框架的运行机制
- MFC学习笔记之:MFC运行机制
- MFC运行机制
- MFC学习之windows内部运行机制
- MFC程序运行机制
- 三、MFC运行机制分析
- MFC程序运行机制
- MFC内部运行机制
- MFC程序运行机制
- mfc运行机制2
- MFC程序运行机制
- MFC程序运行机制
- MFC运行机制--笔记
- MFC的运行机制
- MFC内部运行机制
- 第三章-MFC运行机制
- MFC学习第一天心得!
- encode decode binascii
- easyui-serchbox组件的使用
- 字符串首字母大小写变换
- Python--字符串和对象
- Laravel使用之旅
- MFC学习-第一课 MFC运行机制
- 嵌入式linux中PCM音频编程实践
- 蓝桥杯-- 历届试题 核桃的数量 (gcd)
- hibernate查询问题
- 高斯(核)函数简介
- Python--面向对象程序设计
- XPath 详解,总结
- 11.2.0.1在RHEL6.5
- css