none
MSDN论坛新人初次提问,希望大家帮帮我~ RRS feed

  • 问题

  • 问题很简单,起因是我有个贪食蛇的程序,
    但是这个窗口的标题栏是被画面覆盖的
    我想使窗口标题栏显示出来

    里面有语句GetClientRect,应该该成什么呢?
    (这个返回的rect包含了command区,我想得到不包含这个部分的rect绘制画面)

    感激不尽~~
    2009年6月3日 6:34

答案

  • 在创建消息中(WM_CREATE or WM_INITDIALOG)加一句::SetWindowLong(该窗口的句柄, GWL_STYLE, ::GetWindowLong(该窗口的句柄, GWL_STYLE) | WS_CAPTION);
    就可以显示出来了
    Hello world
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月3日 13:14
    版主
  • ::SetWindowLong(hWnd, GWL_STYLE, ::GetWindowLong(hWnd, GWL_STYLE)|WS_CAPTION);

    第三个参数就是GetWindowLong返回的LONG再与一个WS_CAPTION.

    LONG nStyle = ::GetWindowLong(hWnd, GWL_STYLE);
    nStyle |= WS_CAPTION;
    ::SetWindowLong(hWnd, GWL_STYLE, nStyle);

    这样写够清楚了吧~:)
    彼此相助,在爱中建立自己
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月4日 3:32
    版主
  • GetClientRect得到的是客户区的矩形区域,如果想获得标题栏可以试试GetWindowRect
    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月5日 8:36
    版主

全部回复

  • 在创建消息中(WM_CREATE or WM_INITDIALOG)加一句::SetWindowLong(该窗口的句柄, GWL_STYLE, ::GetWindowLong(该窗口的句柄, GWL_STYLE) | WS_CAPTION);
    就可以显示出来了
    Hello world
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月3日 13:14
    版主
  • 我用了后显示 error C2660: 'SetWindowLongA' : function does not take 2 parameters
    不知道第3个参数怎么填呢?
    2009年6月4日 2:13
  • ::SetWindowLong(hWnd, GWL_STYLE, ::GetWindowLong(hWnd, GWL_STYLE)|WS_CAPTION);

    第三个参数就是GetWindowLong返回的LONG再与一个WS_CAPTION.

    LONG nStyle = ::GetWindowLong(hWnd, GWL_STYLE);
    nStyle |= WS_CAPTION;
    ::SetWindowLong(hWnd, GWL_STYLE, nStyle);

    这样写够清楚了吧~:)
    彼此相助,在爱中建立自己
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月4日 3:32
    版主
  • GetClientRect得到的是客户区的矩形区域,如果想获得标题栏可以试试GetWindowRect
    欢迎光临我的个人网站:http://www.joyvc.cn,本网站提供[IM即时通信|棋牌游戏|网游开发|UI编程|网络通讯|组件开发|图像多媒体|数据库]方面的VC/C++/C技术文章、源代码和教程资料
    • 已标记为答案 Tim Li 2009年6月9日 10:01
    2009年6月5日 8:36
    版主