首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Windows开发

    CreateWindow返回空句柄而GetLastError返回0咋回事

    调用CreateWindow或CreateWindowEx创建窗口返回空句柄时,我们总是会调用GetLastError看下错误码,就知道具体错误的原因(比如窗口类未注册),但如果GetLastError 阅读CreateWindow API说明文档,梳理下CreateWindow的主要内部实现过程: 第一,系统创建窗口资源,获得一个窗口句柄。 所以,CreateWindow返回空句柄而GetLastError返回0是因为未正确处理WM_CREATE消息,返回非0值。

    2.7K50发布于 2019-08-30
  • 来自专栏程序员互动联盟

    【Windows编程】创建基本控件

    既然控件实际上是窗口,当然也是用CreateWindow或者CreateWindowEx这个函数来完成的,第二个函数除了多一个扩展风格之外,其他完全一样,下面以主要以CreateWindow为例说明,该函数原型如下 (实际上在第一篇已经讲过了): HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, 创建标签/静态文本 CreateWindow(TEXT("STATIC"), TEXT("Test String"), WS_CHILD|WS_VISIBLE, 10, 10, 80, 20, hWnd , (HMENU)IDC_STATIC1, NULL, NULL); 创建button CreateWindow(TEXT("BUTTON"), TEXT("Click Me"), WS_CHILD|WS_VISIBLE WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON, 134, 30, 40, 20, hWnd, (HMENU)IDC_MALE, NULL, NULL); 创建复选框 CreateWindow

    2.5K70发布于 2018-03-13
  • 来自专栏程序员互动联盟

    【专业技术】如何愉快的在Windows下开发控件

    通过MSDN可以知道,不管是创建窗口还是控件,都是通过CreateWindow或者CreateWindowEx这个函数来完成的,这两个函数除了多一个扩展风格之外,其他完全一样,下面以CreateWindow 为例说明,该函数原型如下: HWND CreateWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int 创建标签/静态文本: CreateWindow("STATIC", TEXT("Test Text"), WS_CHILD|WS_VISIBLE|SS_LEFT, 10, 10, 250, 30, hwnd )IDC_BUTTON1, NULL, NULL); 创建编辑框: CreateWindow( "Edit", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER, 10, 50, 250, 30, hwnd, (HMENU)IDC_EDIT1, NULL, NULL); 创建控件容器Frame CreateWindow("BUTTON", TEXT("颜色"), WS_CHILD

    932100发布于 2018-03-12
  • 来自专栏编程技术总结分享

    Electron入门教程1 —— 编写第一个桌面应用程序

    ()函数,用于将index.html加载到新BrowserWindow实例中 const createWindow = () => { const win = new BrowserWindow ()函数来打开你的窗口 app.whenReady().then(() => { createWindow() }) 运行npm start 就可以启动程序了。 要实现此功能,请侦听app模块的activate事件,如果没有打开浏览器窗口,则调用您现有的createWindow()方法。因为不能在事件之前创建窗口,所以你应该只在你的应用程序ready之后。 // 调用这个createWindow()函数来打开你的窗口 app.whenReady().then(() => { createWindow() // 监听窗口激活的事件 app.on const createWindow = () => { const win = new BrowserWindow({ width: 800, height:

    9.7K41编辑于 2022-11-22
  • 来自专栏全栈程序员必看

    单选钮和复选框控件的应用教案_在mfc中弹出一个窗口

    , FF_DONTCARE, TEXT("微软雅黑") ); //选择性别 labSex = CreateWindow 10, 10, 80, 26, hWnd, (HMENU)1, hInst, NULL ); radioMale = CreateWindow , 10, 50, 26, hWnd, (HMENU)2, hInst, NULL ); radioFemale = CreateWindow 40, 80, 26, hWnd, (HMENU)4, hInst, NULL ); radioMarried = CreateWindow , 40, 65, 26, hWnd, (HMENU)5, hInst, NULL ); radioSingle = CreateWindow

    1.9K10编辑于 2022-09-23
  • 来自专栏我的知识小屋

    【二】Windows API 零门槛编程指南——CreateWindow 窗口创建 “万字长篇专业术语全解”

    一般情况下这个区域是用户与应用程序交互的枢纽;上一小节使用 MessageBox 创建的简单窗口也是与用户交互的一个窗口,该窗口的功能有限,只能够简单的展示一些想要表达的信息,想创建一个能表达更多信息的窗口,可以使用 CreateWindow HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {} 写好入口函数后,必须要使用 RegisterClassEx 注册一个新的窗口类型,再使用 CreateWindow WM_DESTROY 在 WndProc 函数中使用 —————————————————————————————————— 补充 WM_CREATE 当应用程序通过调用CreateWindowEx或CreateWindow ————————————————————————— RegisterClassEx 之后注册该窗口,使用 RegisterClassEx: RegisterClassEx(&wcex); 注册后使用 CreateWindow 进行注册的窗口创建语法如下: HWND CreateWindow( LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle,

    2.1K20发布于 2020-10-23
  • 来自专栏JS

    electron快速使用(二)

    main.jsconst { app, BrowserWindow } = require('electron')​const createWindow = () => { const win = new BrowserWindow({ width: 800, height: 600, })​ win.loadFile('index.html')}​app.whenReady().then(createWindow 4.2 将可复用的函数写入实例化窗口createWindow() 函数将我们的页面加载到新的 BrowserWindow 实例中:main.js (Lines 3-10)const createWindow 我们可以借助 app.whenReady() API 来等待此事件,并在该 API 的 promise 被 resolve 时调用 createWindow() 方法。 + app.on('ready').then(() => { - app.whenReady().then(() => { createWindow() })但是 Electron 暴露了 app.whenReady

    44930编辑于 2024-05-06
  • 来自专栏设计模式

    抽象工厂模式

    public: virtual std::unique_ptr<Button> createButton() = 0; virtual std::unique_ptr<Window> createWindow make_unique<WindowsFactory>(); auto button = factory->createButton(); auto window = factory->createWindow factory = std::make_unique<MacFactory>(); button = factory->createButton(); window = factory->createWindow override Button CreateButton() { return new MacButton(); } public override Window CreateWindow new WindowsFactory(); Button button = factory.CreateButton(); Window window = factory.CreateWindow

    34010编辑于 2024-12-20
  • 来自专栏穆书伟

    第五章-处理多窗口 | Electron实战

    const createWindow = exports.createWindow = () => { let newWindow = new BrowserWindow({ show 我们现在在主进程中实现并导入createWindow()函数,我们也可以很快地把那个按钮连接起来。 列表5.8 向newFileButton添加监听器: . /app/main.js const createWindow = exports.createWindow = () => { let x,y; const currentWindow 当应用程序第一次准备好并调用createWindow()时,没有一个焦点窗口,`BrowserWindow.getFocusedWindow()返回undefined。 hasVisibleWindows) { createWindow(); } }); const createWindow = exports.createWindow = () => { let

    5K21发布于 2019-09-11
  • 来自专栏dmhsq_csdn_blog

    dmhsq-vue3-vite-electron Version0.0.1

    $main.createWindow(windowConfig,url,divConfig) 打开一个新的窗口 windowConfig为窗口配置 参考 electron 文档的 https://www.electronjs.org $main.createWindow(windowConfig, url, divConfig); 效果如下 this. $main.createWindow(windowConfig,url,divConfig)时的name为’hsq’ 则可以通过this.$main.getWindow(‘hsq’)来获取 this. $main.createWindow(windowConfig,url,divConfig)时的name为’hsq’ 则可以通过this. $main.createWindow创建的窗体相关 在 config目录下vueWindow.config.js 配置 主进程相关 在 config目录下electron.config.js 拓展 网络请求推荐使用

    73720编辑于 2022-04-13
  • 来自专栏pandacode_cn

    Electron 介绍

    win.loadFile('index.html') } 接着,调用createWindow()函数来打开您的窗口。 在whenReady()成功后调用createWindow()。 app.whenReady().then(() => { createWindow() }) 注意:此时,您的电子应用程序应当成功 打开显示您页面的窗口! ().length === 0) createWindow() }) }) 注意:此时,您的窗口控件应功能齐全! // 在文件头部引入 Node.js 中的 path 模块 const path = require('path') // 修改现有的 createWindow() 函数 function createWindow

    2.9K10编辑于 2021-12-17
  • 来自专栏韩曙亮的移动开发专栏

    【FFmpeg】SDL 音视频开发 ① ( SDL 窗口绘制 | SDL 视频显示函数 | SDL_Window 窗口 | SDL_Renderer 渲染器 | SDL_Texture 纹理 )

    . // 释放系统资源 SDL_Quit(); return 0; } 3、SDL_CreateWindow 函数 SDL_CreateWindow 函数 用于 创建 SDL_Window 窗口 , 该函数的函数原型如下 : SDL_Window* SDL_CreateWindow(const char* title, int x, int y, int w, int h, Uint32 // 初始化 SDL 环境 , 用于播放视频 SDL_Init(SDL_INIT_VIDEO); // 创建 SDL Window 窗口对象 window = SDL_CreateWindow SDL_Renderer* SDL_CreateRenderer(SDL_Window* window, int index, Uint32 flags); window 参数 : 调用 SDL_CreateWindow // 初始化 SDL 环境 , 用于播放视频 SDL_Init(SDL_INIT_VIDEO); // 创建 SDL_Window 窗口对象 window = SDL_CreateWindow

    95210编辑于 2024-06-09
  • 来自专栏pandacode_cn

    Electron框架 介绍

    win.loadFile('index.html') } 接着,调用createWindow()函数来打开您的窗口。 在whenReady()成功后调用createWindow()。 如果没有任何浏览器窗口是打开的,则调用 createWindow() 方法。 因为窗口无法在 ready 事件前创建,你应当在你的应用初始化后仅监听 activate 事件。 ().length === 0) createWindow() }) }) 注意:此时,您的窗口控件应功能齐全! // 在文件头部引入 Node.js 中的 path 模块 const path = require('path') // 修改现有的 createWindow() 函数 function createWindow

    1.3K00编辑于 2023-07-17
  • 来自专栏编程技术总结分享

    Electron入门教程3 ——进程通信

    win.setTitle(title) }) mainWindow.loadFile('index.html') } app.whenReady().then(() => { createWindow () app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow ('index.html') } app.whenReady().then(() => { ipcMain.handle('openFileDialog', handleFileOpen) createWindow () app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow () app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow

    1.7K40编辑于 2022-11-22
  • 来自专栏信创系统开发

    一个 Windows 窗口的 Linux 系统之旅

    )) { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } 这段代码中使用了 CreateWindow / ShowWindow / GetMessage 等 Windows API,这里仅分析 CreateWindow 的处理流程。 Win32 API 层 实际上,CreateWindow 不是一个真正的函数,而是一个宏,它最终会展开成 CreateWindowEx。 CreateWindowW #else #define CreateWindow CreateWindowA #endif 由于历史原因,一些 Windows API 有两个版本:一个是 ANSI 这里先小结一下到目前为止的调用流程: 应用程序调用 ↓ CreateWindow(...) // 宏 (include/winuser.h) ↓ CreateWindowEx(0, .

    22010编辑于 2025-11-17
  • 来自专栏漫流砂

    webSecurity | Electron 安全

    browser window const { app, BrowserWindow } = require('electron') const path = require('path') function createWindow dirname, 'preload.js') } }) mainWindow.loadFile('index.html') } app.whenReady().then(() => { createWindow () app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow mainWindow.webContents.openDevTools() } app.whenReady().then(() => { createWindow() app.on('activate if (BrowserWindow.getAllWindows().length === 0) createWindow() }) }) app.on('window-all-closed', function

    84310编辑于 2024-04-22
  • 来自专栏西安-晁州

    使用Electron开发桌面应用

    ); const app = electron.app; const BrowserWindow = electron.BrowserWindow; let mainWindow; function createWindow mainWindow.webContents.openDevTools(); mainWindow.on('closed', function () { mainWindow = null; }); } app.on('ready', createWindow ') { app.quit(); } }); app.on('activate', ()=> { if (mainWindow === null) { createWindow

    2.9K00发布于 2017-12-26
  • 来自专栏csdn

    vue项目生成桌面应用

    BrowserWindow} = require('electron'); let win; let windowConfig = { width: 800, height: 600 }; function createWindow BrowserWindow对象 win = null; }); win.on('resize', () => { win.reload(); }) } app.on('ready', createWindow ('window-all-closed', () => { app.quit(); }); app.on('activate', () => { if (win == null) { createWindow

    39210编辑于 2024-04-10
  • 来自专栏前端开发

    Electron快速上手并将网站直接生成桌面应用

    只有在 app 模块的 ready 事件被激发后才能创建浏览器窗口 // 类似vue 的生命周期 将会在 Electron 结束后初始化 app.whenReady().then(() => { createWindow command + Q 才完全退出 app.on('activate', function () { if (BrowserWindow.getAllWindows().length === 0) createWindow 用上面手动或者脚手架的方式创建初始化文件 修改 main.js const { app, BrowserWindow, Menu } = require('electron') function createWindow const menu = Menu.buildFromTemplate(template) Menu.setApplicationMenu(menu) } app.on('ready', createWindow }) app.on('activate', () => { // Mac 逻辑 if (BrowserWindow.getAllWindows().length === 0) { createWindow

    3.2K122发布于 2021-11-24
  • 来自专栏有困难要上,没有困难创造困难也要上!

    Electron 创建桌面应用

    require('electron'); const path = require('path'); const url = require('url'); let win; function createWindow file:', slashes: true })); win.on('closed', () => { win = null; }); } app.on('ready', createWindow == 'darwin') { app.quit(); } }); app.on('activate', () => { if (win === null) { createWindow

    1.7K160发布于 2018-05-14
领券