当前位置:编程学习 > C/C++ >>

c++中窗口过程的问题

CString tmp=“aaa”;
LRESULT CALLBACK SubWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{

MessageBox(tmp);//编译提示error C2660: 'MessageBoxA' : function does not take

// 1 parameters,用其他的方法SetWindowText()等好像都会出错,怎么办啊
return 0;
}

答案:你说你学C++,我想问下C++有string类那个CString 是什么玩意儿?WINDOWS编程c/c++都一样,其实是正确调用函数   

1.MessageBox函数都有4个参数你只有一个?怎么搞的?参数好像是:MessageBox(HWND,LPSTR,LPSTR,UINT),其实是你漏了参数没打上,对于后面有没A的只是调用函数的问题设计UNICODE你现在不用管.

2.SetWindowText函数参数有多少个我忘了但是至少2个参数,为什么?第一,你至少要明确向那个窗口设置标题信息?第二,要发送的信息内容,是把?

你是用API直接编程的吧,不是用的MFC之类的,我下面给你一个例子,是时钟程序的,直接用API编的,VC6.0的EXE工程,其中你只看LRESULT CALLBACK函数就好,还有就是在LRESULT CALLBACK函数中使用API函数,就像是你的MESSAGEBOX,一定要放在消息响应中,比如WM_CREATE,这个消息是窗口创建的消息,你要是想在窗口打开时显示MESSAGEBOX的消息框就在这个消息里写函数。

MessageBox(HWND,LPSTR,LPSTR,UINT); 其中第一个是父窗口的句柄,第二个是你想显示的内容,第三个是弹出消息框的窗口标题,第四个是消息框的回应模式,就像是在里面加入“确定,取消,OK”之类的按钮,一般你用MB_OK就好。我也好久没编了,有些地方你在看下书,下面是时钟程序的纯API代码。

#include"windows.h"
#define ID_TIMER    1
LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);
static char szAppName[]="sample";

int WINAPI WinMain(HINSTANCE hInstance,
       HINSTANCE hPrevInstance,
       LPSTR     lpCmdShow,
       int       nCmdShow)
{
 HWND hWnd;
 MSG  msg;
 WNDCLASS wndclass;

 wndclass.cbClsExtra           =0;
 wndclass.cbWndExtra           =0;
 wndclass.hbrBackground        =(HBRUSH)GetStockObject(WHITE_BRUSH);
 wndclass.hCursor              =LoadCursor(NULL,IDC_ARROW);
 wndclass.hIcon                =LoadIcon(NULL,IDI_APPLICATION);
 wndclass.hInstance            =hInstance;
 wndclass.lpfnWndProc          =WinProc;
 wndclass.lpszClassName        =szAppName;
 wndclass.lpszMenuName         =NULL;
 wndclass.style                =CS_HREDRAW|CS_VREDRAW;

 RegisterClass(&wndclass);

 hWnd=CreateWindow(szAppName,"digit_time",WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
       NULL,NULL,hInstance,NULL);

 ShowWindow(hWnd,nCmdShow);
 UpdateWindow(hWnd);

 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }

 return msg.wParam;
}

void DisplayDigit(HDC hDc,int iNumber)
{
 int iSeg;
 static BOOL fSevenSegment[10][7]={
                                  1, 1, 1, 0, 1, 1, 1,            // 0
                                  0, 0, 1, 0, 0, 1, 0,            // 1
                                  1, 0, 1, 1, 1, 0, 1,            // 2
                                  1, 0, 1, 1, 0, 1, 1,            // 3
                                  0, 1, 1, 1, 0, 1, 0,            // 4
                                  1, 1, 0, 1, 0, 1, 1,            // 5
                                  1, 1, 0, 1, 1, 1, 1,            // 6
                                  1, 0, 1, 0, 0, 1, 0,            // 7
                                  1, 1, 1, 1, 1, 1, 1,            // 8
                                  1, 1, 1, 1, 0, 1, 1};           // 9
    static POINT ptSegment[7][6]={
                              7,   6,  11,   2,  31,   2,  35,   6,  31,  10, 11,  10,
                              6,   7,  10,  11,  10,  31,   6,  35,   2,  31,  2,  11,
                             36,   7,  40,  11,  40,  31,  36,  35,  32,  31, 32,  11,
                              7,  36,  11,  32,  31,  32,  35,  36,  31,  40, 11,  40,
                              6,  37,  10,  41,  10,  61,   6,  65,   2,  61,  2,  41,
                         &n

上一个:程序设计,C++
下一个:求图书馆管理系统C++源代码

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,