WinAPI创建窗口,模仿书敲了遍
来源:互联网 发布:电力系统波形分析软件 编辑:程序博客网 时间:2024/06/05 21:18
看来重头学起是有必要的,现在看窗口过程,哦,原来消息是这样处理的啊~~~
还是有好多不懂
退出操作流程:destroy --> PostQuitMessage --> 0 == GetMessage
BeginPaint 和 EndPaint还真的要用啊,亏我还都没用到过
//// Sound Window//// Created by sun_huihua at 2013.04.14//#include <atlstr.h>#include <Windows.h>#pragma comment(lib, "Winmm.lib")//! 窗口过程LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);int WINAPI WinMain( __in HINSTANCE hInstance, __in_opt HINSTANCE hPrevInstance, __in LPSTR lpCmdLine, __in int nShowCmd ){//! 程序名static TCHAR szAppName[] = TEXT("Hello Windows!");//! 注册窗口类WNDCLASSEX wndClassEx;wndClassEx.cbSize= sizeof(WNDCLASSEX);wndClassEx.style= CS_HREDRAW | CS_VREDRAW;wndClassEx.lpfnWndProc= WndProc;//< 窗口过程wndClassEx.cbClsExtra= 0;wndClassEx.cbWndExtra= 0;wndClassEx.hInstance= hInstance;//< 当前的程勋实例wndClassEx.hIcon= LoadIcon(NULL, IDI_ASTERISK);wndClassEx.hCursor= LoadCursor(NULL, IDC_ARROW);wndClassEx.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);wndClassEx.lpszMenuName= NULL;//< 没有菜单wndClassEx.lpszClassName= szAppName;//< 窗口类名称wndClassEx.hIconSm= LoadIcon(NULL, IDI_QUESTION);if (!RegisterClassEx(&wndClassEx)){DWORD dwErr = GetLastError();CString strMsg(TEXT(""));strMsg.Format(TEXT("注册窗口失败,丫的确认是不是系统太旧了,只支持NT,错误码:0x%X\n"), dwErr);MessageBox(NULL, strMsg, szAppName, MB_ICONERROR);return 0;}//! 创建窗口HWND hWnd = CreateWindowEx(WS_EX_OVERLAPPEDWINDOW,szAppName,TEXT("Play 信仰.mp3"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,//< MSDN错了么,这个0的话,窗口显示成0了NULL,//< 无父窗口NULL,//< 无菜单hInstance,NULL//< 创建后,不需要添加附加信息到WM_CREATE);if (NULL == hWnd){DWORD dwErr = GetLastError();CString strMsg(TEXT(""));strMsg.Format(TEXT("Oh, no! 这是不可能地,错误码:0x%X\n"), dwErr);MessageBox(NULL, strMsg, szAppName, MB_ICONERROR);return 0;}//! 显示窗口ShowWindow(hWnd, nShowCmd);UpdateWindow(hWnd);//< 发送Paint消息给窗口//! 窗口消息分发MSG msg = {0};BOOL bRet;while((bRet = GetMessage(&msg, NULL, 0, 0)) != 0){if (-1 == bRet){//! 错误处理CString strErr(TEXT(""));strErr.Format(TEXT("啥消息,出错了,错误码:0x%X\n"), GetLastError());MessageBox(hWnd, strErr, szAppName, MB_ICONERROR);}else{TranslateMessage(&msg); DispatchMessage(&msg); }}return msg.wParam;}LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam){HDChDC;PAINTSTRUCTps;RECTrect;//! 分析消息switch (uMsg){case WM_CREATE:{//! 播放MP3mciSendString(TEXT("open 张信哲-信仰.mp3 alias betabin"), NULL, 0, NULL);mciSendString(TEXT("play betabin repeat"), NULL, 0, NULL);}return 0;case WM_PAINT:{hDC = BeginPaint(hWnd, &ps);GetClientRect(hWnd, &rect);DrawText(hDC, TEXT("张信哲-信仰.mp3"), -1, &rect,DT_SINGLELINE | DT_CENTER | DT_VCENTER);EndPaint(hWnd, &ps);}return 0;case WM_DESTROY:{PostQuitMessage(0);}return 0;}return DefWindowProc(hWnd, uMsg, wParam, lParam);}
- WinAPI创建窗口,模仿书敲了遍
- 使用WinAPI创建窗口方法
- Windows(WinAPI)窗口创建后,依次接收的消息
- WinAPI窗口居中
- 调用WINAPI 创建一个窗口并显示一些东西(create a window and display something)
- 遍例窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- WinAPI: FindWindow、FindWindowEx - 查找窗口
- 改了8遍
- Windows创建进程winAPI-CreateProcess
- DIV模仿窗口效果
- 关于敲了很多遍Symbian的资源文件
- hdu 2091 空心三角形
- android蓝牙开发浅析2——startDiscovery
- 临时抱佛脚之Spring学习笔记
- HDU 1312 广度优先搜索(BFS)
- 安卓应用程序插件化开发框架 -AAP Framework【开源项目】
- WinAPI创建窗口,模仿书敲了遍
- HDU 1166 线段树
- spring 3.x + hibernate4.x 实现数据延迟加载
- hdu 1856 并差集求最大秩
- Java学习第五天笔记
- 10285 - Longest Run on a Snowboard
- HDU 2100 字符串
- Toggle Button
- HDU 3367 Pseudoforest (并查集)