| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1603 人关注过本帖
标题:Win32app问题,懂得的都进来指点吧。
只看楼主 加入收藏
guer168
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-19
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:2 
Win32app问题,懂得的都进来指点吧。
#include<windows.h>
#include<stdio.h>
#include<Winuser.h>
LRESULT CALLBACK WindowProc(
  HWND hwnd,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
);
int WINAPI WinMain(
  HINSTANCE hInstance,
  HINSTANCE hPrevInstance,
  LPWSTR lpCmdLine,
  int nShowCmd)
{
    WNDCLASS wndcls;
    wndcls.cbClsExtra=0;
    wndcls.cbWndExtra=0;
    wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
    wndcls.hCursor=NULL;
    wndcls.hIcon=NULL;
    wndcls.hInstance=hInstance;
    wndcls.lpfnWndProc=WindowProc;
    wndcls.lpszClassName="weixin2010";
    wndcls.lpszMenuName=NULL;
    wndcls.style=CS_DBLCLKS;
   

    RegisterClass(&wndcls);
    HWND hwnd;
    hwnd=CreateWindow("weixin2010","自学窗口",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);
    ShowWindow(hwnd,SW_SHOWNORMAL);
    UpdateWindow(hwnd);

    MSG msg;
    while(GetMessage(&msg,NULL,0,0))
    {
      TranslateMessage(&msg);
      DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}

LRESULT CALLBACK WindowProc(
  HWND hwnd,
  UINT uMsg,
  WPARAM wParam,
  LPARAM lParam
)
{
   switch(uMsg)
   {
       case WM_PAINT:
        HDC hDC;
        PAINTSTRUCT ps;
        hDC=BeginPaint(hwnd,&ps);
        TextOut(hDC,0,0,"窗口培训",strlen("窗口培训"));
        EndPaint(hwnd,&ps);
        break;
       default:
        return DefWindowProc(hwnd, uMsg, wParam, lParam);
        break;

   }
   return 0;
}


这是提示错的地方。WinMain无法重载函数这里是什么意思呢!一般要什么样的情况下能使WinMain重载函数呢?还有如何才能将那些错误的参数 转换为“LPCWSTR”的呢!我在MSDN上查了下但还是搞不懂!!!


c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(15) : error C2731: “WinMain”: 无法重载函数
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(10) : 参见“WinMain”的声明
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(24) : error C2440: “=”: 无法从“const char [10]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(31) : error C2664: “CreateWindowExW”: 不能将参数 2 从“const char [10]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(57) : error C2664: “TextOutW”: 不能将参数 4 从“const char [9]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
生成日志保存在“file://c:\Documents and Settings\Administrator\桌面\C\Win32app\Win32app\Debug\BuildLog.htm”
Win32app - 4 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

搜索更多相关主题的帖子: include 
2010-04-10 20:09
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:10 
int WINAPI WinMain(
  __in  HINSTANCE hInstance,
  __in  HINSTANCE hPrevInstance,
  __in  LPSTR lpCmdLine,
  __in  int nCmdShow
);
这个函数的原型是这样的,你把第三个参数改动了,所以编译报错。
wWinMain(
    __in HINSTANCE hInstance,
    __in_opt HINSTANCE hPrevInstance,
    __in_opt LPWSTR lpCmdLine,
    __in int nShowCmd
    );
这个是使用宽字节的,你可以试试这个
2010-04-10 20:25
guer168
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-19
收藏
得分:0 
我改用wWinMain这个宽字节,没有这个c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(15) : error C2731: “WinMain”: 无法重载函数
但是还出现这样的问题呢:c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(26) : error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(33) : error C2664: “CreateWindowExW”: 不能将参数 3 从“const char [9]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
c:\documents and settings\administrator\桌面\c\win32app\win32app\gt_helloworldwin32.cpp(60) : error C2664: “TextOutW”: 不能将参数 4 从“const char [10]”转换为“LPCWSTR”
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
请问什么样才能转为“LPCWSTR”类型?我在网上看了下CString 转化成 char* 之一强制类型转换为 LPCTSTR的方法:CString s("GrayCat");LPCTSTR p = s;
是不是可以用这个方法将const char 强制类型转换为 LPCTSTR?


淘宝:http://guer168.  百度有啊http://youa.baidu.com/shop/75fb2a3584ed3e7d5e1e752d?from=hi
2010-04-10 22:42
快速回复:Win32app问题,懂得的都进来指点吧。
数据加载中...
 
   



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

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