3502|4

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急!!!Win32编程(CE) [复制链接]

#include

#define IDI_APPLICATION     MAKEINTRESOURCE(32512)

#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
                             WS_CAPTION        | \
                             WS_SYSMENU        | \
                             WS_THICKFRAME     | \
                             WS_MINIMIZEBOX    | \
                             WS_MAXIMIZEBOX)

LONG WINAPI WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPWSTR lpCmdLine,int nCmdShow)
{
        WNDCLASS wc;
        HWND hwnd;
        MSG msg;
        BOOL bReg;
        wc.style = CS_HREDRAW|CS_VREDRAW;
        wc.lpfnWndProc = (WNDPROC)WndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hInstance;
        wc.hIcon = LoadIcon(NULL,IDI_APPLICATION);
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = L"First Window Class";

        RegisterClass(&wc);

        hwnd = CreateWindow(
                                  L"First Window Class",
                                  L"第一个Windows应用程序",
                                                  WS_OVERLAPPEDWINDOW,
                                                  CW_USEDEFAULT,
                                                  CW_USEDEFAULT,
                                                  200,
                                                  300,
                                                  HWND_DESKTOP,
                                                  NULL,
                                                  hInstance,
                                                  NULL
                                                );

        ShowWindow(hwnd,nCmdShow);

        UpdateWindow(hwnd);

        int bRet;
        while((bRet=GetMessage(&msg,NULL,0,0))!=0)
        {
                if(bRet == -1)
                {}
                else
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
        }
        return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        PAINTSTRUCT ps;
        HDC hdc;
        LPCWSTR szHello = L"欢迎使用VC++2005";
        switch(message)
        {
        case WM_PAINT:
                hdc = BeginPaint(hWnd, &ps);
                RECT rc;
                GetClientRect(hWnd, &rc);
                DrawText(hdc, szHello, 12, &rc, DT_CENTER);
                EndPaint(hWnd,&ps);
                return 0;
        case WM_DESTROY:
                PostQuitMessage(0);
                return 0;
        }
        return DefWindowProc(hWnd, message, wParam, lParam);
}
因为开始时,出现错误:
.\Win32Project.cpp(15) : error C2065: 'IDI_APPLICATION' : undeclared identifier
.\Win32Project.cpp(35) : error C2065: 'WS_OVERLAPPEDWINDOW' : undeclared identifier
所以我只能在文件开始处,自己定义:
#define IDI_APPLICATION     MAKEINTRESOURCE(32512)

#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
                             WS_CAPTION        | \
                             WS_SYSMENU        | \
                             WS_THICKFRAME     | \
                             WS_MINIMIZEBOX    | \
                             WS_MAXIMIZEBOX)
这样定义好以后,编译是通过了,但是运行的时候出现连接错误:
Linking...
Win32Project.obj : error LNK2019: unresolved external symbol __security_cookie referenced in function "long __cdecl WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YAJPAUHWND__@@IIJ@Z)
Win32Project.obj : error LNK2019: unresolved external symbol __security_check_cookie referenced in function "long __cdecl WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YAJPAUHWND__@@IIJ@Z)
Pocket PC 2003 (ARMV4)\Debug/Win32Project.exe : fatal error LNK1120: 2 unresolved externals

问题1:是不是需要加什么头文件,就可以不用自己定义IDI_APPLICATION和WS_OVERLAPPEDWINDOW了啊?
问题2:连接错误的话应该怎么解决?
注意:我用的是VS2005,在Win32 Smart Device Project中新建项目并添加的C++文件里编译的。(我在Win32 Project中新建项目添加的C++文件里编译和运行都可以通过的。不知道为什么?)
谢谢帮忙!

最新回复

谢谢!原因是没有加stdafx.h文件。  详情 回复 发表于 2008-8-27 09:36
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
1,IDI_APPLICATION应该是icon,搜索IDI_APPLICATION看在哪个头文件里定义的;
2,vs2005我不懂,但是查到http://blog.eeworld.net/tonxi/archive/2007/04/09/1557863.aspx
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1、 WS_OVERLAPPEDWINDOW在ce下不支持,可以通过
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX
这个组合来实现。
2、IDI_APPLICATION:应该包含在 Winuser.h 中。

3、链接错误:
1)可能是有些cpp文件没有包含在项目中。
通过加入存在的文件加入进来就行了。
2)可能是没有包含库文件
你检查一下提示的函数是在什么库中定义的,把该库加入就搞定了。

 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
mark
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
谢谢!原因是没有加stdafx.h文件。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表