标题:关于入门的一个 DLL 函数的问题
只看楼主
hrgzs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-8-19
结帖率:0
已结贴  问题点数:10 回复次数:11 
关于入门的一个 DLL 函数的问题
请问下我以下代码哪里错了吗?
本来我想加个#include <user32.h>,可是就提示错误了,
下面的代码,提示一个警告,然后就成功运行了,可是为什么没有窗口出来啊??

#include <windows.h>
#include <stdio.h>
int main()
{
    CreateWindowExA(0,"WTWindow","nihao",268435456,50,50,380,250,0,0,0,0);
    /*窗口扩展风格,窗口类名,窗口标题,窗口风格,X,Y,宽度,高度,父窗口句柄,菜单句柄,0,0*/
 return 0;
}
搜索更多相关主题的帖子: include return nihao 风格 
2014-08-19 14:44
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:5 
【DLL 函数】是什么意思?

如果你想生成DLL 不是这样做的
2014-08-19 14:47
hrgzs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-8-19
得分:0 
回复 2 楼 zklhp
额,我就是想调用 user32.dll 里的函数CreateWindowExA来创建一个窗口啊

火软工作室_www.hrgzs点com
2014-08-19 14:51
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:5 
创建窗口之前 貌似得先注册窗口类   你网上搜一下  或者看看书啥的  源代码N多

DO IT YOURSELF !
2014-08-19 14:56
hrgzs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-8-19
得分:0 
回复 4 楼 wp231957
那么麻烦个啊,CreateWindowExA这个系统DLL里的函数不是可以直接创建窗口的么,是不是没有函数声明?

火软工作室_www.hrgzs点com
2014-08-19 14:59
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
你去看一下windows编程一类的书籍  他们会告诉你如何创建一个模态窗口或者非模态窗口

DO IT YOURSELF !
2014-08-19 15:03
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
直接用API是比较麻烦的 而且也不是几句话说的明白
2014-08-19 15:23
hrgzs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-8-19
得分:0 
回复 7 楼 zklhp
那还有别的方式创建窗口????

火软工作室_www.hrgzs点com
2014-08-19 15:27
hrgzs
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-8-19
得分:0 
给个简单的例子也行啊

火软工作室_www.hrgzs点com
2014-08-19 15:37
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
得分:0 
程序3-1 HELLOWIN
        
HELLOWIN.C
程序代码:
/*------------------------------------------------------------------------

  HELLOWIN.C -- Displays "Hello, Windows 98!" in client area

  (c) Charles Petzold, 1998

  -----------------------------------------------------------------------*/

#include <windows.h>
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
            PSTR szCmdLine, int iCmdShow)
{
    static TCHAR szAppName[] = TEXT ("HelloWin") ;
    HWND   hwnd ;
    MSG    msg ;
    WNDCLASS wndclass ;
    wndclass.style        = CS_HREDRAW | CS_VREDRAW ;
    wndclass.lpfnWndProc  = WndProc ;
    wndclass.cbClsExtra   = 0 ;
    wndclass.cbWndExtra   = 0 ;
    wndclass.hInstance    = hInstance ;
    wndclass.hIcon        = LoadIcon (NULL, IDI_APPLICATION) ;
    wndclass.hCursor      = LoadCursor (NULL, IDC_ARROW) ;
    wndclass.hbrBackground= (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    wndclass.lpszMenuName  = NULL ;
    wndclass.lpszClassName= szAppName ;
    if (!RegisterClass (&wndclass))
    {
        MessageBox (  NULL, TEXT ("This program requires Windows NT!"),
                  szAppName, MB_ICONERROR) ;
        return 0 ;
    }
    hwnd = CreateWindow( szAppName,      // window class name
                 TEXT ("The Hello Program"),   // window caption
                 WS_OVERLAPPEDWINDOW,  // window style
                 CW_USEDEFAULT,// initial x position
                 CW_USEDEFAULT,// initial y position
                 CW_USEDEFAULT,// initial x size
                 CW_USEDEFAULT,// initial y size
                 NULL,                 // parent window handle
                 NULL,            // window menu handle
                 hInstance,   // program instance handle
                 NULL) ;      // creation parameters
    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;
    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg) ;
        DispatchMessage (&msg) ;
    }
    return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC                   hdc ;
    PAINTSTRUCT ps ;
    RECT          rect ;
    switch (message)
    {
    case WM_CREATE:
        /* PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; */
        return 0 ;
    case   WM_PAINT:
        hdc = BeginPaint (hwnd, &ps) ;
        GetClientRect (hwnd, &rect) ;
        DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
              DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
        EndPaint (hwnd, &ps) ;
        return 0 ;
    case   WM_DESTROY:
        PostQuitMessage (0) ;
        return 0 ;
    }
    return DefWindowProc (hwnd, message, wParam, lParam) ;
}



出处 Windows程序设计

别说 我稍微改了一下还真编译过了

GCC的编译参数是这个样子滴

gcc -Wall -march=corei7-avx -Ofast -msse4.2 -mavx -std=c99 a.c -lm -lgdi32 -mwindows -o a


[ 本帖最后由 zklhp 于 2014-8-19 16:36 编辑 ]
2014-08-19 16:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-435143-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027704 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved