本文描述了如何使用Win32 SDK来编写一个应用程序。
希望对正在学习WinApi SDK编程的朋友能有一些帮助,欢迎你们提出更好的意见和技巧。
下面开门见山,具体开发步骤如下:
1.开始菜单->Microsoft Visual Studio 2008->Microsoft Visual Studio 2008
2.新建一个项目
选择Win32控制台应用程序,进行应用程序类型设置:
选择Windows应用程序,空项目。点击完成。
3.选择Vs2008项目菜单,添加新项:
选择C++源文件,命名为main.cpp (这个名字可以随意定)
以下是SDK主框架代码,不详述了。有问题的话给我留言:)
- #include <windows.h>
- LRESULT CALLBACK WndProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam);
- int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in_opt LPSTR lpCmdLine, __in int nShowCmd )
- {
- WNDCLASSEX wcex = {0};
- TCHAR szAppName[] = TEXT("SigmaTera Notepad");
- MSG msg = {0};
- HWND hWnd = NULL;
- wcex.cbClsExtra = 0;
- wcex.cbSize = sizeof (WNDCLASSEX);
- wcex.cbWndExtra = 0;
- wcex.hbrBackground = (HBRUSH)COLOR_WINDOW;
- wcex.hCursor = LoadCursor(NULL,IDC_ARROW);
- wcex.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
- wcex.hIconSm = wcex.hIcon;
- wcex.hInstance = hInstance;
- wcex.lpfnWndProc = WndProc;
- wcex.lpszClassName = szAppName;
- wcex.lpszMenuName = NULL;
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- if (RegisterClassEx(&wcex) == NULL)
- {
- return -1;
- }
- hWnd = CreateWindow(szAppName,TEXT("Notepad"),WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
- NULL,NULL,hInstance,NULL);
- if (NULL == hWnd)
- {
- return -1;
- }
- ShowWindow(hWnd,SW_SHOW);
- UpdateWindow(hWnd);
- while (GetMessage(&msg,NULL,0,0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return 0;
- }
- LRESULT CALLBACK WndProc(HWND hWnd,UINT uMessage,WPARAM wParam,LPARAM lParam)
- {
- if (uMessage == WM_CLOSE)
- {
- DestroyWindow(hWnd);
- }
- else if (uMessage == WM_DESTROY)
- {
- PostQuitMessage(0);
- }
- return DefWindowProc(hWnd,uMessage,wParam,lParam);
- }