对于程序员来说,如果要提高编程效率,一个好用的,功能强大的并且可以得心应手使用的编程工具往往会给我们程序员带来莫大的方便。其实对于现在的编程工具来说,使用哪一种工具都不是问题的关键,重要的是你能够使用到什么程度,毕竟现在的工具都是非常的强大,对于一般的编程任务来说还没有不能够胜任的工具,否则的话恐怕他就不可能在这个世界上存在哪怕是只有一个月的生命。但是根据个人所好以及周围的人的影响,我们都会去使用某一种或者几种工具。比较Visual Basic 、C++ Builder和Delphi等编程工具,用VC++编写Windows应用程序可以说是最富于挑战性和艰巨性。在本文中我无意去比较各种工具的好坏,仅就我自己学习Visual C++的MFC的体会和心得拿出来与大家一起分享和交流,也希望可以结识更多的志同道合的朋友。
就我个人的偏见,学习VC++就应该要学习他的类库MFC(Microsoft Foundation Classes)。也许有的人一听说MFC就有点望而生畏,这是可以理解的,毕竟Microsoft虽然给了我们一个强大而且非常复杂的类库,但是没有给我们带来学习他的好的方便之处。回想自己学习MFC时的无助和迷茫,以及所走过的弯路,现在想起来还心有余悸,虽然我现在也还是处于非常初级的初级入门阶段,但是还是很乐意把自己的心得和体会拿出来一起与大家分享。也希望得到大家的指点。
一、SDK应用程序结构
我学习MFC之路可是从windows编程开始的(可能这一开始就是弯路了^_^)。首先也请大家跟着我一起看一个SDK应用程序结构的Windows应用程序。当然也是经典的“Hello world!”了,编写的过程就不必罗嗦了,下面给出他的主要源代码(我使用向导生成的,但是为了阅读的方便经过了一点点的编辑):
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
MSG msg;
………………………………
MyRegisterClass(hInstance);
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
……………………
return TRUE;
}
//窗口函数WndProc(),回调函数
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
……………………
switch (message)
{
case WM_COMMAND:
………………
break;
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
……
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
SDK之"Hello World"源程序 <  
说明:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
1/2 1 2 下一页 尾页 |