///////////////////// MyWin.cpp ////////////////////////
#include "MyWin.h"
int MainProc (HWND, UINT, WPARAM, LPARAM);
union UNKNOWN{
char lpBuffer;
long dwBuffer;
}uBuffer;
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow) {
InitCommonControls();
DialogBoxParam(hInstance, (LPCTSTR)IDD_DIALOG1,0, (DLGPROC)MainProc,0);
return 0;
}
MainProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message){
case WM_INITDIALOG:
break;
case WM_COMMAND:
switch (wParam){
case ID_OK:
uBuffer.dwBuffer=57;
MessageBox(0,&uBuffer.lpBuffer,0,0);
break;
case ID_CANCEL:
MessageBox(0,"Cancel",0,0);
break;
}
break;
case WM_CLOSE:
EndDialog(hWnd,0);
break;
}
return 0;
}
////////////////// MyWin.h //////////////////
#include <windows.h>
#include "resource.h"
#include <commctrl.h>
#include <iostream.h>
///////////////////// resource.h
#define IDD_DIALOG1 101
#define ID_OK 1001
#define ID_CANCEL 1002
#define IDC_LIST1 1012
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 102
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1013
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
InitCommonControls() ругается.
Я в Си новичек. Посмотрите пожалуйста код:
Код:
Данное творение компилиться на ура, линкуется с :
--------------------Configuration: MyWin - Win32 Debug--------------------
Linking...
myWin.obj : error LNK2001: unresolved external symbol __imp__InitCommonControls@0
Debug/MyWin.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Creating browse info file...
MyWin.exe - 2 error(s), 0 warning(s)
и еще, я не попадаю при дебаге в процедуру обработки оконных сообщений. (VC++6.0).
Помогите пожалуйста!!!
А библиотека COMCTL32 подключена?
.... все разобрался... в опциях проекта подключил.
А что по поводу дебага оконной процедуры.... я не поподаю при трасировке... как это лечится?
А как вызвать трассировкой.. Оконная функция вообще вызываеца системой... Если ты конечно ее явно гденить не вызываешь.
так это получается что я свою процедуру, чей адрес я передал в DialogBoxParam, по определению дебажить не могу?, если так то это огромное запад*о.
отвечаю сам на предыдущий пост
Как так? Брейкпоинт верняково там сработает (если конечно процедура выполняется).
Все должно дебажится. Может у тебя текущяя релиз сборка а не дебаг?
Дык по -умолчанию и в релизе не отключается дебуг инфо. Скорее всего запускает через контрол+Ф5.
Ну и че толку от нее в релизе?
NetName
Короче поробуй вставь вместо break point такой код:
__asm int 3
если код этот выполняется то твое приложение обязательно прервется даже в релиз версии(правда трэйсить придется после такой остановки в релизе на ассемблере,а если в дебаге то в нормальном виде)
BOOL CALLBAK MainProc (HWND, UINT, WPARAM, LPARAM);
BOOL CALLBAK MainProc (HWND, UINT, WPARAM, LPARAM);[/quote]
А я всегда так:
LRESULT CALLBACK MainProc (HWND, UINT, WPARAM, LPARAM) ;)
А есть разве есть разница? Всмысле на машинном уровне?
У меня беэ CALLBACK диалог вообще не вызывается!
О каких breakpoint-ах может внутри MainProc идти речь !!!
О каких breakpoint-ах может внутри MainProc идти речь !!!
[/QUOTE]
Что ты имеешь ввиду?
У меня беэ CALLBACK диалог вообще не вызывается!
О каких breakpoint-ах может внутри MainProc идти речь !!![/QUOTE]
Какая разница где в клиентском коде в данном случае MainProc будет вызван breakpoint. Он обязан если вызывается прервать выполнение последующих инструкций до возобновления со стороны пользователя.