标签: createwindow

Win32:CreateDialog而不是对CreateWindow的多次调用 - 任何缺点?

我目前正在开发一个Win32程序,它需要一个包含许多子窗口控件的主窗口 - 按钮,列表视图等.我认为构建这样一个窗口的标准方法是首先为主窗口调用CreateWindow,然后再为每个控件调用.

作为一个更简单的选项,我正在考虑使用资源编辑器的对话框设计器设计主窗口,然后使用CreateDialog一次构建主窗口.

通过在对话框模板中使用CLASS语句,我应该能够使主窗口使用自定义窗口类(因此自定义窗口过程),从而避免窗口具有任何类似对话框的行为.这种技术的一个例子可以在Charles Petzold的"Programming Windows"中找到:第11章中的HEXCALC程序.

以这种方式创建主窗口有什么缺点吗?如果是这样,他们是什么?如果没有,为什么这种方法很少使用?

windows winapi createwindow

14
推荐指数
4
解决办法
4143
查看次数

如何在窗口上绘制图像?

我在Windows Vista上使用C++中的VS2005创建了一个带有createwindow()api的窗口

我的要求是在该窗口上绘制一个图像(任何格式).我在这个应用程序中没有使用任何MFC.

windows winapi createwindow

11
推荐指数
2
解决办法
4万
查看次数

在另一个线程(不是主线程)中创建窗口

我有一个功能:

HWND createMainWindow(P2p_Socket_Machine * toSend){

    HWND hMainWnd = CreateWindow( 
        L"Class",/*(LPCWSTR) nameOfConference.c_str()*/L"Chat",  WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU, 
    CW_USEDEFAULT, 0, 600,400, 
    (HWND)NULL, (HMENU)NULL, 
    /*(HINSTANCE)hlnstance*/NULL, NULL 
    ); 

    if (!hMainWnd) { 
        MessageBox(NULL, L"Cannot create main window", L"Error", MB_OK); 
        return 0; 
    }

    CreateWindowA("LISTBOX",NULL, WS_CHILD|WS_VISIBLE|WS_BORDER|WS_VSCROLL|LBS_NOTIFY|LBS_MULTIPLESEL,310,30,255,275,hMainWnd,(HMENU)List_Box,NULL,NULL);

    CreateWindowExA(NULL,"BUTTON", "Refresh", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,385,310,100,24,hMainWnd,(HMENU)Button_Refresh, NULL ,NULL);

    CreateWindowExA(NULL,"BUTTON", "Send", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,385,334,100,24,hMainWnd,(HMENU)Button_Send, NULL ,NULL);

    CreateWindowExA(NULL,"BUTTON", "New", WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON,385,354,100,24,hMainWnd,(HMENU)Button_New, NULL ,NULL);

    CreateWindowA("EDIT",0,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_LEFT|ES_MULTILINE|WS_VSCROLL|WS_DISABLED,
    10,30,265,275,hMainWnd,(HMENU)Text_Box_Get,NULL,NULL);

    CreateWindowA("EDIT",0,WS_BORDER|WS_VISIBLE|WS_CHILD|ES_LEFT|ES_MULTILINE|WS_VSCROLL,
    10,320,265,45,hMainWnd,(HMENU)Text_Box_Send,NULL,NULL);

    SetWindowLongPtr(hMainWnd,GWLP_USERDATA,(LONG_PTR)toSend);

    ShowWindow(hMainWnd, SW_SHOW); 
    //UpdateWindow(hMainWnd);

    return hMainWnd;

}
Run Code Online (Sandbox Code Playgroud)

这是我的计划的主要部分:

int WINAPI WinMain(HINSTANCE hlnstance, HINSTANCE hPrevInstance, LPSTR IpCmdLine, int 
nCmdShow) 
{
WNDCLASSEX wc; 
    wc.cbSize …
Run Code Online (Sandbox Code Playgroud)

c++ winapi multithreading createwindow

8
推荐指数
3
解决办法
1万
查看次数

C#创建窗口 - 定义父窗口

我希望使用C#带有setted parent的窗口创建我定义的句柄,这是另一个进程窗口句柄.

有人知道怎么做吗?

问候,

c# windows wpf createwindow

6
推荐指数
1
解决办法
2967
查看次数

createwindow(...)之后,如何给窗口赋予颜色?

我创建了一个窗口,其句柄是handle_parent。然后我创建了一个子窗口,如下所示:

hwnd_child = CreateWindow(child_class_name, _T(""),
WS_CHILDWINDOW, 0, 0, 0, 0, hwnd_parent, (HMENU)0, ghinst, NULL);
ShowWindow(win->hwndSplitterBar, SW_SHOW);
UpdateWindow(win->hwndSplitterBar);
Run Code Online (Sandbox Code Playgroud)

我想设置子窗口“child”的颜色。如果我什么都不做,默认颜色是灰色的。我怎样才能设置它的颜色?我想永久保持黑色,无论如何都要改变。

c++ window background-color createwindow

6
推荐指数
2
解决办法
1万
查看次数

Win32:如何使用CreateWindowExW()函数创建ListBox控件?

我经历过多个网站,文档和教程,他们都说相同的,那就是,任何控制只不过是一个窗口,更在Win32中的API,因此,一个能够使用的CreateWindowExW()功能来创建一个ListBox在主控制/窗口应用程序窗口

虽然我得到所有控件的概念都是具有不同dwStyle的窗口,但我很难找到如何实例化ListBox控件.

我遇到了一个教程,其中编写了一个对话框LISTBOX,其声明中的指定如下:

// resource.h
#define IDD_MAIN                        101
#define IDC_TEXT                        1000
#define IDC_NUMBER                      1001
#define IDC_LIST                        1002
#define IDC_ADD                         1003
#define IDC_CLEAR                       1004
#define IDC_REMOVE                      1005
#define IDC_SHOWCOUNT                   1006

// .rc resource file
IDD_MAIN DIALOG DISCARDABLE  0, 0, 207, 156
    STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "Controls One"
    FONT 8, "MS Sans Serif"
BEGIN
    LTEXT           "Add",IDC_STATIC,7,10,14,8
    EDITTEXT        IDC_TEXT,25,7,120,14,ES_AUTOHSCROLL
    EDITTEXT        IDC_NUMBER,150,7,21,14,ES_NUMBER
    LTEXT           "times.",IDC_STATIC,177,10,23,8
    LISTBOX         IDC_LIST,7,25,138,106,LBS_NOINTEGRALHEIGHT | …
Run Code Online (Sandbox Code Playgroud)

c winapi listbox createwindow

5
推荐指数
1
解决办法
1万
查看次数

使用CreateWindowEx创建一个没有图标的窗口

使用C#,我很容易就能得到我想要的效果:

标题栏中没有图标的标准窗口

然而,我无法做用下的Win32 API的,我不知道如何创建具有窗口同样的事情没有图标(在所有),但仍然有一个标题,最小化按钮,以及关闭按钮.

我正确地注册了我的课程,但我无法弄清楚要为窗口样式/扩展窗口样式添加什么.

static const TCHAR lpctszTitle[] = TEXT("Stuff"), lpctszClass[] =
  TEXT("StuffClass");

HWND hWnd = CreateWindowEx(WS_EX_LAYERED | WS_EX_TOPMOST, lpctszClass,
  lpctszTitle, WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX,
  CW_USEDEFAULT, 0, 250, 55, NULL, NULL, hThisInstance, NULL);
Run Code Online (Sandbox Code Playgroud)

上面的代码产生了:

标准窗口标题栏中带有图标

它仍然在标题栏中有一个图标,而不是我想要的.

c windows winapi createwindow createwindowex

5
推荐指数
1
解决办法
4794
查看次数

Win32编辑控件的默认高度

我正在使用CreateWindowEx创建一个Edit控件(一个文本框),但是说CW_DEFAULT没有帮助获取文本框的默认高度 - 它只是创建一个高度为零的窗口.

如何获取文本框的系统默认大小,以便将Edit控件转换为看似正常的文本框?

winapi controls createwindow

5
推荐指数
1
解决办法
2441
查看次数

如何正确使用Qt QWebView :: createWindow(QWebPage :: WebWindowType类型)?

我有一个严重的问题QWebView :: createWindow()以及如何处理创建新的浏览器窗口.

我按照docs(MyWebView)的说法对QWebView进行了细分,并重新实现了它的createWindow()方法以及它的contextMenuEvent(QContextMenuEvent*event)方法,以便我可以添加和更改自己的菜单条目.

上下文菜单条目"打开链接","在新标签中打开链接"和"打开图像"都可以正常工作,如果选择"打开链接",则打开所需的链接/图像到相同的选项卡,如果其中一个,则打开到新选项卡中其他三个"Open ..."条目被选中.此外,当单击要在新窗口中打开的网页时,它们将按预期在新选项卡中打开.

但是,我添加了一个名为"在新窗口中打开链接"的新菜单条目,因为我的生活无法使其正常工作.它会打开全新的浏览器窗口,但不会加载点击的网址.更糟糕的是,如果我手动将一些www地址输入到这个新的浏览器窗口,然后尝试打开新标签,它们将在旧窗口中打开!

有人可以请检查我的代码有什么问题吗?

首先,MyWebView构造函数:

MyWebView::MyWebView(QWidget * parent):
    QWebView(parent),newWindow(false)
{
    this->myPage = new MyWebPage;
    this->setPage(this->myPage);

    /* Just change text and nothing more ... */
    this->action_openLinkInNewWindow = this->pageAction(QWebPage::OpenLinkInNewWindow);
    if(this->action_openLinkInNewWindow) {
        if(this->action_openLinkInNewWindow->isEnabled()) {
            this->action_openLinkInNewWindow->setText("Open Link in New Window");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后"打开图像","在新窗口中打开链接"和"在新窗口中打开链接"功能(默认"打开链接"工作得很好,所以我不需要重新实现那个)

void    MyWebView::openImage()
{
#ifndef NDEBUG
    qDebug() << "=================================================";
    qDebug() << __FUNCTION__ << " called ...";
#endif
    this->imageUrl = true;
    this->newWindow = false;
    this->createWindow(QWebPage::WebBrowserWindow);
}

void    MyWebView::openLinkInNewTab()
{
#ifndef NDEBUG
    qDebug() << "=================================================";
    qDebug() << __FUNCTION__ << …
Run Code Online (Sandbox Code Playgroud)

c++ browser qt qwebview createwindow

5
推荐指数
0
解决办法
1492
查看次数

CreateWindow因无法查找窗口类而失败 - C++

在我的应用程序中,该函数CreateWindow由于某种原因失败. GetLastError表示错误1407,根据MSDN文档,"无法找到窗口类".以下代码显示了CreateWindow在调用时如何调用以及相应的变量名称:

m_hInstance = ::GetModuleHandle( NULL );

if ( m_hInstance == NULL )
{
    TRACE(_T("CNotifyWindow::CNotifyWindow : Failed to retrieve the module handle.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), __WFILE__, __LINE__);
    THROW(::GetLastError());
}

m_hWnd = ::CreateWindow(
    _pwcWindowClass,    // L"USBEventNotificationWindowClass"
    _pwcWindowName,     // L"USBEventNotificationWindow"
    WS_ICONIC,
    0,
    0,
    CW_USEDEFAULT,
    0,
    NULL,
    NULL,
    m_hInstance,        // 0x00400000
    NULL
    );

if ( m_hWnd == NULL )   // m_hWnd is returned as NULL and exception is thrown.
{
    TRACE(_T("CNotifyWindow::CNotifyWindow : Failed to create window.\r\n\tError: %d\r\n\tFile: …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2008 createwindow

3
推荐指数
1
解决办法
4055
查看次数