关于VC++基本的API开发问题
如题,我用了VisualStudio2012.用它建立了一个最简单的VC++的API应用,就是那种只有一个窗口的其他什么都没有的东西,但是,小弟实在是什么也看不懂,这个就...
如题,我用了Visual Studio 2012.用它建立了一个最简单的VC++的API应用,就是那种只有一个窗口的其他什么都没有的东西,但是,小弟实在是什么也看不懂,这个就是WinMain函数了
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance); //这是干什么的
UNREFERENCED_PARAMETER(lpCmdLine); //这是干什么的
// TODO: 在此放置代码。
MSG msg;
HACCEL hAccelTable;
// 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);//这是干什么
LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING);//这个呢
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TEST));//还有这个
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
然后是
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TEST));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TEST);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex);
}
小弟只是想知道每个语句都是什么意思,就是赋值语句就好了,书上没有...
还有就是
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 将实例句柄存储在全局变量中
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);//这个是什么意思
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);//这个呢
UpdateWindow(hWnd);//还有这个
return TRUE;
}
谢谢了!
看看小弟的注释,WinMain函数的问题在注释里
只是非常基本的一个程序的,这是平台给的.............. 展开
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance); //这是干什么的
UNREFERENCED_PARAMETER(lpCmdLine); //这是干什么的
// TODO: 在此放置代码。
MSG msg;
HACCEL hAccelTable;
// 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);//这是干什么
LoadString(hInstance, IDC_TEST, szWindowClass, MAX_LOADSTRING);//这个呢
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TEST));//还有这个
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
}
然后是
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TEST));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TEST);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex);
}
小弟只是想知道每个语句都是什么意思,就是赋值语句就好了,书上没有...
还有就是
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 将实例句柄存储在全局变量中
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);//这个是什么意思
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);//这个呢
UpdateWindow(hWnd);//还有这个
return TRUE;
}
谢谢了!
看看小弟的注释,WinMain函数的问题在注释里
只是非常基本的一个程序的,这是平台给的.............. 展开
1个回答
展开全部
这个是WindowSAPI的示例吧,去弄本教程看看吧,推荐你看看《Windows API》里面讲解的很清楚,比在这里问强多了。
还有WinForm开发用API实在是又慢又不给力,虽然学习的意义挺大的(对图形用户界面的理解可以加深很多)但如果你只是为了做几个东西练手的话,还不如试试MFC和C#,拖拉式的操作,很方便的,MFC比C#稍微难一点,因为MFC只是对Windows API的简单封装,可以看侯捷的《深入浅出MFC》 至于C# 看看例子我相信你就懂了。。。
还有WinForm开发用API实在是又慢又不给力,虽然学习的意义挺大的(对图形用户界面的理解可以加深很多)但如果你只是为了做几个东西练手的话,还不如试试MFC和C#,拖拉式的操作,很方便的,MFC比C#稍微难一点,因为MFC只是对Windows API的简单封装,可以看侯捷的《深入浅出MFC》 至于C# 看看例子我相信你就懂了。。。
更多追问追答
追问
谢谢,那么什么来进行开发比较方便呢
顺便问一下,在哪里有讲解?我没看到,是谁写的Windows API呢?
如果方便,能不能讲一下这里的呢?至少讲一下MyRegisterClass或者WinMain里面的东西也好
谢谢
追答
人民邮电出版社出版的 《Windows API --编程实例,函数,接口》最好去借别买,因为就是参考指南而已。说实话,我也没搞过API啊,我是直接学的MFC,推荐你自己百度一句一句的搜,会有解释的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询