鱼C论坛

 找回密码
 立即注册

恒信网络科技

https://fishc.com.cn/?210680

Windows API一日一练(4)CreateWindow函数

已有 416 次阅读2014-4-15 16:11 |个人分类:vc++学习

一个窗口要显示,先要把它创建出来。那就需要调用API函数CreateWindow了,所以在注册窗口后的第二步,就需要调用创建窗口函数。
 
函数声明如下:
WINUSERAPI
HWND
WINAPI
CreateWindowExA(
    __in DWORD dwExStyle,
    __in_opt LPCSTR lpClassName,
    __in_opt LPCSTR lpWindowName,
    __in DWORD dwStyle,
    __in int X,
    __in int Y,
    __in int nWidth,
    __in int nHeight,
    __in_opt HWND hWndParent,
    __in_opt HMENU hMenu,
    __in_opt HINSTANCE hInstance,
    __in_opt LPVOID lpParam);
WINUSERAPI
HWND
WINAPI
CreateWindowExW(
    __in DWORD dwExStyle,
    __in_opt LPCWSTR lpClassName,
    __in_opt LPCWSTR lpWindowName,
    __in DWORD dwStyle,
    __in int X,
    __in int Y,
    __in int nWidth,
    __in int nHeight,
    __in_opt HWND hWndParent,
    __in_opt HMENU hMenu,
    __in_opt HINSTANCE hInstance,
    __in_opt LPVOID lpParam);
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
 
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)/
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)/
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif // !UNICODE
 
dwExStyle是扩展的窗口类型。
lpClassName是注册的窗口类型名称。
lpWindowName是窗口名称。
dwStyle是窗口类型。
X是窗口左上角位置。
Y是窗口左上角位置。
nWidth是窗口的宽度。
nHeight是窗口的高度。
hWndParent是父窗口。
hMenu是主菜单。
hInstance是应用程序实例句柄。
lpParam是传送给窗口的自定义参数。
调用这个函数的实例如下:
// First.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
HINSTANCE hinst;
char szTitle[] = "这是一个测试窗口";
char szWindowClass[] = "szClassName";
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  // TODO: Place code here.
 return 0;
}
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
 hinst = hInstance;
 HWND hWnd;
 
 
 hWnd = CreateWindow(szWindowClass,   // szWindowClass是窗口注册名称
      szTitle,    // 窗口显示的标题
      WS_OVERLAPPEDWINDOW, // 窗口显示类型
      CW_USEDEFAULT,   // 缺省的左上角坐标
      CW_USEDEFAULT,   // 窗口左上角坐标,由于X坐标设置为缺省的坐标了
      CW_USEDEFAULT,   // 设置窗口的宽度。使用缺省值
      CW_USEDEFAULT,   // 设置窗口的高度
      NULL,     // 父窗口设置为无
      NULL,     // 主菜单设置为无
      hInstance,    // 窗口当前实例句柄
      NULL);     // 传递给窗口的自定义参数
 if (!hWnd)
 {
  return FALSE;
 }
 
 ShowWindow(hWnd,nCmdShow);
 UpdateWindow(hWnd);
 return TRUE;
}
如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。
通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。
 

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-5 18:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部