我尊敬的程序员大哥大姐们,帮我看看这道C++题目吧,VC方面的
我的状态栏没有出来,可以编译的过,不知道问题出在什么地方,下面是我的代码
#include <windows.h>
#include <strsafe.h>
#include <Commctrl.h>
#include "resource.h "
LRESULT CALLBACK WndProc
( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
)
{
WNDCLASS wc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hbrBackground=(HBRUSH)::GetStockObject(COLOR_BTNFACE);
wc.hCursor=::LoadCursor(NULL,IDC_ARROW);
wc.hInstance=hInstance;
wc.lpfnWndProc=WndProc;
wc.lpszClassName=TEXT( "Draw ");
wc.lpszMenuName=NULL;
wc.hIcon = LoadIcon (NULL,IDI_APPLICATION);
wc.style=CS_HREDRAW | CS_VREDRAW;
if(!RegisterClass(&wc))
{
::MessageBox(NULL,TEXT( "窗口注册失败 "),TEXT( "提示 "),MB_OK);
}
HWND hwnd=::CreateWindow(TEXT( "Draw "),TEXT( "API "),WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT,
NULL, NULL, hInstance, NULL) ;
::ShowWindow(hwnd,SW_SHOW);
::UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam;
}
LRESULT CALLBACK WndProc
( HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
HDC hdc;
PAINTSTRUCT ps;
HWND hwndTB;
TBBUTTON tbb;
char szBuf[16]= "剪贴 ";
int iCut;
switch(uMsg)
{
case WM_CREATE:
hwndTB=CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | CCS_ADJUSTABLE | WS_VISIBLE, 0, 0, 0, 0, hwnd,
(HMENU) ID_TOOLBAR, NULL, NULL);
iCut = SendMessage(hwndTB, TB_ADDSTRING, 0, (LPARAM) (LPSTR) szBuf);
tbb.iBitmap = I_IMAGENONE;
tbb.idCommand = IDS_CUT;
tbb.fsState = TBSTATE_ENABLED;
tbb.fsStyle = BTNS_BUTTON;
tbb.dwData = 0;
tbb.iString = iCut;
SendMessage(hwndTB, TB_ADDBUTTONS, (WPARAM) 1,
(LPARAM) (LPTBBUTTON) &tbb);
return 0;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
::EndPaint(hwnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return ::DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
[解决办法]
-_-
有时间看看吧
[解决办法]
@.@
too long
[解决办法]
@!@
确实太长
[解决办法]
好象是因为找不到TOOLBARCLASSNAME的注册定义,需先初始化CommonCtrls.
修改方法:
在 "case WM_CREATE: " 和 "hwndTB=CreateWindowEx(.. "之间加入下面几句:
INITCOMMONCONTROLSEX icx;
icx.dwSize = sizeof(INITCOMMONCONTROLSEX);
icx.dwICC = ICC_BAR_CLASSES;
InitCommonControlsEx(&icx);
另外,别忘了链接时要加上库comctl32.lib
[解决办法]
问题在:CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,
WS_CHILD | CCS_ADJUSTABLE | WS_VISIBLE, 0, 0, 0, 0, hwnd,
(HMENU) ID_TOOLBAR, NULL, NULL);
起点是(0,0),长宽也都是0??