博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于Win32Api创建窗口程序
阅读量:2388 次
发布时间:2019-05-10

本文共 1892 字,大约阅读时间需要 6 分钟。

最近在整理资料, 记得上学期间写得第一个程序是用汇编语言写了个类似HD-COPY的程序, 那个时候真是废寝忘食,程序正常运行后真得让人非常激动, 可惜太久远了找不到代码了, 那个时候有张3寸盘就很不错了,笔记本电脑更是买不起的。

今天重写了当初学习windows平台编程时的第一个程序, 贴出来做个纪念。

#include 
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);BOOL InitApplication(HINSTANCE);BOOL InitInstance(HINSTANCE, int);HINSTANCE hInst;HWND hWndMain;char * pszClassName = "MainWndClass";// 应用入口int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ MSG msg; if (!InitApplication(hInstance)) return FALSE; if (!InitInstance(hInstance, nCmdShow)) return FALSE; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return msg.wParam;}BOOL InitApplication(HINSTANCE hInstance){ WNDCLASS wc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = (WNDPROC)MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = pszClassName; //注册窗口类 if (!RegisterClass(&wc)) { return FALSE; } return TRUE;}BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){ hInst = hInstance; hWndMain = CreateWindow(pszClassName, "sample", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL); if (!hWndMain) { return FALSE; } ShowWindow(hWndMain, nCmdShow); UpdateWindow(hWndMain); return TRUE;}//窗口消息处理函数LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){ HDC hdc; PAINTSTRUCT ps; char * s = "hello the world"; switch (message) { case WM_PAINT: hdc = BeginPaint(hWnd, &ps); TextOut(hdc, 20, 10, s, strlen(s)); EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0;}

运行效果

你可能感兴趣的文章
arduino连接热敏打印机的资料
查看>>
用zxing生成条形码
查看>>
如何将OpenShift与eclipse集合使用
查看>>
Build Your Own PaaS on RHEL 6
查看>>
关于JAX-RS的导引阅读
查看>>
Markdown编辑器editor.md的使用
查看>>
FileServlet supporting resume and caching and GZIP
查看>>
spring boot etag header example
查看>>
关于大数据的两个大分支
查看>>
spring boot Websocket
查看>>
关于企业到个人的转账
查看>>
Angular4中调用js代码
查看>>
JAVA8-用lamda表达式和增强版Comparator进行排序
查看>>
spring boot 2.0 使用Hikari连接池——号称java平台最快的,替换druid
查看>>
GnuPG Java Wrapper API - Sample code
查看>>
HTTP Cache 总结及Nginx Cache配置
查看>>
基于现有 TensorFlow 模型构建 Android 应用
查看>>
Building an Ionic OCR App with Tesseract
查看>>
Spring boot with Apache Hive
查看>>
使用awr来诊断数据库性能问题
查看>>