Home > KWinUI > KWinUI sample 1: Hello World

KWinUI sample 1: Hello World

可能没有比Hello World更适合做第一个sample了。

下面就是KWinUI的Hello World程序。

 1 #include "kwin.h"
 2 #include "kapp.h"
 3
 4 using namespace kwinui;
 5
 6 class KMainWindow : public KWindowBase<KMainWindow>{
 7 public:
 8     KMainWindow():KWindowBase<KMainWindow>(_T("MyClassName")){}
 9
10     BEGIN_MSG_MAP
11         MSG_HANDLER(WM_PAINT,OnPaint)
12     END_MSG_MAP(KWindowBase<KMainWindow>)
13
14     LRESULT OnPaint(UINT uMsg,WPARAM wParam,LPARAM lParam,bool& bHandled){
15         PAINTSTRUCT ps;
16         HDC hDC;
17
18         RECT rect;
19         ::GetClientRect(m_hWnd,&rect);
20         
21         hDC=::BeginPaint(m_hWnd,&ps);
22         ::SetBkMode(hDC,TRANSPARENT);
23         ::DrawText(hDC,_T("Hell World!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
24         ::EndPaint(m_hWnd,&ps);
25
26         return 0;
27     }
28 };
29
30 class KUIThreadApp : public KWinApp<KUIThreadApp>{
31 public:
32     bool InitInstance(){
33         m_pMainWindow=new KMainWindow();
34         m_pMainWindow->CreateOverlappedWindow(_T("Hello World!"));
35         m_pMainWindow->ShowWindow(m_nCmdShow);
36         m_pMainWindow->UpdateWindow();
37
38         return true;
39     }
40     void ExitInstance(){
41         SAFE_DEL_PTR(m_pMainWindow);
42     }
43     
44 private:
45     KMainWindow* m_pMainWindow;
46 };
47
48 KUIThreadApp theApp;

代码下载
用Visual C++ 2008 Express win32 project默认设置静态链接Release版本生成的程序大小为54KB。
截图:hello

Categories: KWinUI Tags:
  1. passer
    June 6th, 2009 at 14:01 | #1

    看了下代码,觉得挺像wtl的,不过貌似封装的比wtl少

  2. June 6th, 2009 at 15:23 | #2

    LZ你好,今天在网上闲逛的时候看到了这个库
    一直想找一个这样的轻量级库,让人眼前一亮
    我把源文件和hello world都下载下来了,编译时出现错误:
    1>—— 已启动生成: 项目: KWinUITest, 配置: Debug Win32 ——
    1>正在编译…
    1>hello.cpp
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kwin.h(375) : error C2065: “LWA_ALPHA”: 未声明的标识符
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kwin.h(376) : error C2039: “SetLayeredWindowAttributes”: 不是“`global namespace’”的成员
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kwin.h(376) : error C2660: “kwinui::KWindow::SetLayeredWindowAttributes”: 函数不接受 4 个参数
    1>kdlgtemplatebuilder.cpp
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(90) : warning C4311: “reinterpret_cast”: 从“LPTSTR”到“unsigned int”的指针截断
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(97) : warning C4311: “reinterpret_cast”: 从“LPTSTR”到“unsigned int”的指针截断
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(123) : warning C4311: “类型转换”: 从“WORD *”到“ULONG”的指针截断
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(127) : warning C4312: “类型转换”: 从“ULONG”转换到更大的“WORD *”
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(133) : error C2653: “kwin”: 不是类或命名空间名称
    开发环境是VS2005
    请教

  3. June 6th, 2009 at 17:21 | #3

    @float
    一、”1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kwin.h(375) : error C2065: “LWA_ALPHA”: 未声明的标识符
    1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kwin.h(376) : error C2039: “SetLayeredWindowAttributes”: 不是“`global namespace’”的成员”
    ——————-
    出现这个问题应该是你的windows SDK版本太低,尝试更新到最新的SDK应该能解决该问题。我用VC++ 2008 Express + 较新版本SDK,没有问题。

    二、”1>c:\documents and settings\float\my documents\visual studio 2005\projects\kwinuitest\kwinuitest\kdlgtemplatebuilder.cpp(133) : error C2653: “kwin”: 不是类或命名空间名称”
    ——————
    这个是我的疏忽,没有把此处的命名空间改过来,现在代码已经更新,可以重新下载。不过Hello World应该用不到这个方法才对,很奇怪,我的没有此错误提示。

  4. June 6th, 2009 at 17:22 | #4

    看来关于KWinUI的开发环境和测试环境应该做一下说明,发布的时候忘了说了:(

  5. June 6th, 2009 at 17:35 | #5

    @proguru
    感谢大大的热心回答!

  6. netyrj
    July 15th, 2009 at 01:17 | #6

    File: kwin.h Line: 654 wcx.lpszClassName error

  1. No trackbacks yet.

Copyleft © 2009-2010 mopyman 本站为原创网站,除非另有声明,本网站采用知识共享“署名2.5 中国大陆”许可协议授权.