|
What value are you passing in szMask?
|
|
|
|
|
Hi
I'm using default All files (*.*)
|
|
|
|
|
I think in this case you should pass NULL. Please note that you need to pass only extension, e.g. for Excel files you would pass _T("xls"). For all files, pass NULL in place of szMask
|
|
|
|
|
Thank you
But my problem is not with mask, when I use my activex component inside IE9, when I click on treeview with folder names the screen where show files are not refreshing, my initial dir is C:\ but if I click in e.g D:\ nothing is showed, the screen stays in C:\. This just happen with activex in browser. I could check if set to FALSE the last parameter in CFileDialog constructor is working in both cases, in my application and browser, this parameter set Vista Style dialog, but is not a acceptable solution.
|
|
|
|
|
Can someone please explain / provide better description about this C2010 error to me.
I have never used “...” ellipsis as function parameter.
Why is the compiler complaining about this?
Is this some recent addition to the language?
I am still happily using VC 6.0 and have no desire to let go of it.
Source:
#define USBERR(format,...) usb_err(__FUNCTION__,format,__VA_ARGS__)
#define USBERR0(format) usb_err(__FUNCTION__,"%s",format)
Error:
k:\0\0 littlewire\downloads\usb library\libusb-win32-src-1.2.6.0\libusb-win32-src-1.2.6.0\src\error.h(131) : error C2010: '.' : unexpected in macro formal parameter list
Only the first #define fails and I am not really sure I need it. I would be happy just to compile this USB library for now.
Any help will be as always greatly appreciated.
Thanks Vaclav
|
|
|
|
|
See Variadic Macros[^] in the MSDN.
The above link is for Visual Studio 2005 which introduces Variadic Macros. So it seems that you are using an older VS version.
|
|
|
|
|
Thank you.
My suspicion was correct, it is a recent (MS? ) addition to the language.
I'll try to bypass it and see if there are any serious problems with it.
I have not analyzed the library to see if the macro is executed as a result of logic error or hardware error.
|
|
|
|
|
|
Vaclav_Sal wrote: Only the first #define fails and I am not really sure I need it. So comment it out and see what happens.
You could always create something like:
#define USBERR1(format,argv1) usb_err(__FUNCTION__,format,argv1)
#define USBERR2(format,argv1,argv2) usb_err(__FUNCTION__,format,argv1,argv2)
#define USBERR3(format,argv1,argv2,argv3) usb_err(__FUNCTION__,format,argv1,argv2,argv3)
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Hi everybody. I trying to draw an overlay over a CDib bitmap:
CSize sizeDoc = pDoc->GetDib()->GetDimensions();
int cx = (int)((float)sizeDoc.cx * m_fZoomFactor);
int cy = (int)((float)sizeDoc.cy * m_fZoomFactor);
CSize sizeLog(cx, cy);
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC, sizeLog.cx, sizeLog.cy); CDC MemDC;
MemDC.CreateCompatibleDC(pDC); CBitmap* pOldBitmap = MemDC.SelectObject(&bmp); pDoc->GetDib()->Draw(&MemDC, CPoint(0,0), sizeLog); DrawOverlay(&MemDC, pDC); pDC->BitBlt(0, 0, sizeLog.cx, sizeLog.cy, &MemDC, 0, 0, SRCCOPY); pDC->SelectObject(pOldBitmap);
and everything goes well, except when user try to drag the view, while view goes slowly ... why ? (That behaviour is more visible when the picture is a little bit zoomed)How can I speed up the code from above ? Or, what I'm doing wrong ?
I have here[^] a simple sample project .... Thank you.
modified 16-Oct-12 7:28am.
|
|
|
|
|
The problem is with this line:
pDoc->GetDib()->Draw(&MemDC, CPoint(0,0), sizeLog);
You need to replace it with another BitBlt that will copy stuff to MemDC
|
|
|
|
|
Thank you for your interest. But I don't know how can I put content of CDib (CMyDoc::m_dib) into MemDC with CDC::BitBlt(...). Can you show me a little sample here ? Will be very helpfull to me ... You can test the behaviuour from above post link.
|
|
|
|
|
You need to create DIB (I think you have already already created it based on the code), then you need to copy the bitmap bits to the DIB's buffer using this code:
HBITMAP hOldBitmap = NULL;
if (m_hBitmap == NULL)
{
m_hBitmap = CreateDIBSection(hDC, (BITMAPINFO*)m_hDib, DIB_RGB_COLORS, &m_lpBits, NULL, 0);
if (m_hBitmap == NULL) return;
if (m_lpBits == NULL)
{
::DeleteObject(m_hBitmap);
m_hBitmap = NULL;
return;
} }
memcpy(m_lpBits, ((LPBYTE)m_hDib + *(LPDWORD)m_hDib + GetPaletteSize()), m_bi.biSizeImage);
if (m_hMemDC == NULL)
{
m_hMemDC = CreateCompatibleDC(hDC);
if (m_hMemDC == NULL) return;
}
hOldBitmap = (HBITMAP)SelectObject(m_hMemDC, m_hBitmap);
BitBlt(hDC, dwX, dwY, m_bi.biWidth, m_bi.biHeight, m_hMemDC, 0, 0, SRCCOPY);
SelectObject(m_hMemDC, hOldBitmap);
The main part here is the memcpy.
I have copied it from my program. If you can't understand what the "m_" variables are, let me know and I will explain
|
|
|
|
|
Yes, I know what 'm_' is, (member variable), but I also saw that you have m_hMemDC, so you apply the double-buffering tehnique ? Like in this[^] application ?
Anyway, I kindly thank you, I'll apply your ideea ...
|
|
|
|
|
Google it for "Double Buffering"
|
|
|
|
|
I think that is what I'm doing above: draw everything into a memory DC, and when everything is done, show it in real DC ... I'm missing something ?
|
|
|
|
|
I make a little confusion (or big one): double bouffering use a memory device context as member variable, single buffering use a local memory device context ... thank you sirama2004. Best regards !
|
|
|
|
|
Dear Everybody,
I am have a general C question that I am hoping someone out there can help me answer: Is it possible (and allowed) to initialize a struct member with a function address? Example:
void Test() {}
struct { void(*whatever)() } MyStruct = { &Test };
I am working on an embedded project and are having problems with the above initialization. If my programs contains an initialization like that I am completely unable to boot it (i.e. processor never even enters the low level C initialization assembly routine). I am using GCC 4.6 (ARM7/9 target).
Thanks
- REICH -
|
|
|
|
|
Yes, this is possible an allowed. You can check it on Linux:
#include <stdio.h>
void Test() { printf("test\n"); }
int main()
{
struct { void(*whatever)() } MyStruct = { &Test };
MyStruct.whatever();
return 0;
}
Compile, link and run:
joe@data:~> gcc test.c
test.c: In function ‘main’:
test.c:5:32: warning: no semicolon at end of struct or union
joe@data:~> ./a.out
test
joe@data:~>
To get rid of the warning message, place the missing semicolon:
struct { void(*whatever)(); } MyStruct = { Test };
Note that I have also removed the & from Test because referencing a function by name gives you already a pointer. However, gcc is smart enough to compile the code (the resulting executables are identical).
But the above has been done with Linux on an Intel platform. Maybe gcc for ARM is more sensitive. You can check this by compiling two versions and compare the binaries. If this does not help, the problem may be also somewhere else (it seems strange to me that your device stops booting when using the code).
|
|
|
|
|
Thank you for the clarification. I will see if I can figure out what the problem is
- REICH -
|
|
|
|
|
Hello there
I made a sample C++ Win32 console application and then added a class CFileParser.
Now i add a function inside the CFileParser called OpeningInstructions() which is declared as public.
Now i include FileParser.h in the main file of the app having MAIN() function and then trying to call the function.............. and it gives an error as shown below.
Fro some reason it's not able to detect the function inside the clas CFileParser.
Any idea how to resolve this?
Thanks in advance
<pre lang="vb">error LNK2019: unresolved external symbol &quot;public: void __thiscall CFileParser::OpeningInstructions(void)&quot; (?OpeningInstructions@CFileParser@@QAEXXZ) referenced in function _wmain
1&gt;C:\SourceCode\CodeFileParser\CodeFileParser\Debug\CodeFileParser.exe : fatal error LNK1120: 1 unresolved externals</pre></pre>
|
|
|
|
|
Let's see the code for the CFileParser definitions, and also the place where you call it in your main program. Are you sure you added the full implementation into your project? Or, if the CFileParser class is created as an external library, did you include that in your linker preferences?
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
You need to add a cpp file or a lib file to your project depending on what you've got.
If you have FileParser.cpp file (most likely this is the case) do the following:
In the Solution Explorer right click on the project and Select Add->Existing Item. Locate your FileParser.cpp and select it.
If you are given a lib file together with the FileParser.h you need to add it via the Project properties. In the Solution Explorer right click on your project and select Properties. Go to Linker options -> Input. In the Additional dependencies field type the name of your lib file, e.g. FileParser.lib.
|
|
|
|
|
Hi friend,
Presently am working in MFC project. I have to use CALLBACK function but i don't know. Kindly help me. below see my questions
What is CALLBACK? How it work?
what is the advantage of CALLBACK,
please explain with an example
|
|
|
|
|
Call back functions are supplied to some function or data structure as a pointer like (Or I can say, pointer to the starting address of U r function) variable. The pointer is actually a function pointer, and this will be called back when something happens.
Say for example you develop an API function that takes a folder name. For each file found inside the folder, it will perform some operation based on the file name and extension. But the API you write do not know what action to perform and it is decided by the caller. In that case, caller will supply a function address, and your API will call the user supplied function (CALLBACK) for each file. You see that.
|
|
|
|
|